@getverbal/cli 0.6.0 → 0.7.0

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 (249) hide show
  1. package/dist/cli.js +18760 -1833
  2. package/package.json +2 -1
  3. package/dist/agent-hooks/claude.d.ts +0 -10
  4. package/dist/agent-hooks/claude.d.ts.map +0 -1
  5. package/dist/agent-hooks/claude.js +0 -218
  6. package/dist/agent-hooks/claude.js.map +0 -1
  7. package/dist/agent-hooks/cli.d.ts +0 -2
  8. package/dist/agent-hooks/cli.d.ts.map +0 -1
  9. package/dist/agent-hooks/cli.js +0 -271
  10. package/dist/agent-hooks/cli.js.map +0 -1
  11. package/dist/agent-hooks/codex.d.ts +0 -9
  12. package/dist/agent-hooks/codex.d.ts.map +0 -1
  13. package/dist/agent-hooks/codex.js +0 -349
  14. package/dist/agent-hooks/codex.js.map +0 -1
  15. package/dist/agent-hooks/config.d.ts +0 -32
  16. package/dist/agent-hooks/config.d.ts.map +0 -1
  17. package/dist/agent-hooks/config.js +0 -176
  18. package/dist/agent-hooks/config.js.map +0 -1
  19. package/dist/agent-hooks/ingest.d.ts +0 -4
  20. package/dist/agent-hooks/ingest.d.ts.map +0 -1
  21. package/dist/agent-hooks/ingest.js +0 -22
  22. package/dist/agent-hooks/ingest.js.map +0 -1
  23. package/dist/agent-hooks/launchagent.d.ts +0 -7
  24. package/dist/agent-hooks/launchagent.d.ts.map +0 -1
  25. package/dist/agent-hooks/launchagent.js +0 -51
  26. package/dist/agent-hooks/launchagent.js.map +0 -1
  27. package/dist/agent-hooks/runtime-context.d.ts +0 -20
  28. package/dist/agent-hooks/runtime-context.d.ts.map +0 -1
  29. package/dist/agent-hooks/runtime-context.js +0 -90
  30. package/dist/agent-hooks/runtime-context.js.map +0 -1
  31. package/dist/agent-hooks/state.d.ts +0 -26
  32. package/dist/agent-hooks/state.d.ts.map +0 -1
  33. package/dist/agent-hooks/state.js +0 -67
  34. package/dist/agent-hooks/state.js.map +0 -1
  35. package/dist/agent-hooks/tokscale.d.ts +0 -70
  36. package/dist/agent-hooks/tokscale.d.ts.map +0 -1
  37. package/dist/agent-hooks/tokscale.js +0 -142
  38. package/dist/agent-hooks/tokscale.js.map +0 -1
  39. package/dist/agent-hooks/tool-extraction.d.ts +0 -7
  40. package/dist/agent-hooks/tool-extraction.d.ts.map +0 -1
  41. package/dist/agent-hooks/tool-extraction.js +0 -100
  42. package/dist/agent-hooks/tool-extraction.js.map +0 -1
  43. package/dist/agent-hooks/trace.d.ts +0 -17
  44. package/dist/agent-hooks/trace.d.ts.map +0 -1
  45. package/dist/agent-hooks/trace.js +0 -25
  46. package/dist/agent-hooks/trace.js.map +0 -1
  47. package/dist/auth/browser-auth.d.ts +0 -6
  48. package/dist/auth/browser-auth.d.ts.map +0 -1
  49. package/dist/auth/browser-auth.js +0 -202
  50. package/dist/auth/browser-auth.js.map +0 -1
  51. package/dist/auth/credentials.d.ts +0 -6
  52. package/dist/auth/credentials.d.ts.map +0 -1
  53. package/dist/auth/credentials.js +0 -78
  54. package/dist/auth/credentials.js.map +0 -1
  55. package/dist/cli.d.ts +0 -3
  56. package/dist/cli.d.ts.map +0 -1
  57. package/dist/cli.js.map +0 -1
  58. package/dist/commands/dashboard.d.ts +0 -2
  59. package/dist/commands/dashboard.d.ts.map +0 -1
  60. package/dist/commands/dashboard.js +0 -19
  61. package/dist/commands/dashboard.js.map +0 -1
  62. package/dist/commands/hooks.d.ts +0 -2
  63. package/dist/commands/hooks.d.ts.map +0 -1
  64. package/dist/commands/hooks.js +0 -6
  65. package/dist/commands/hooks.js.map +0 -1
  66. package/dist/commands/import.d.ts +0 -2
  67. package/dist/commands/import.d.ts.map +0 -1
  68. package/dist/commands/import.js +0 -129
  69. package/dist/commands/import.js.map +0 -1
  70. package/dist/commands/init.d.ts +0 -2
  71. package/dist/commands/init.d.ts.map +0 -1
  72. package/dist/commands/init.js +0 -262
  73. package/dist/commands/init.js.map +0 -1
  74. package/dist/commands/logout.d.ts +0 -2
  75. package/dist/commands/logout.d.ts.map +0 -1
  76. package/dist/commands/logout.js +0 -17
  77. package/dist/commands/logout.js.map +0 -1
  78. package/dist/commands/mcp-serve.d.ts +0 -2
  79. package/dist/commands/mcp-serve.d.ts.map +0 -1
  80. package/dist/commands/mcp-serve.js +0 -7
  81. package/dist/commands/mcp-serve.js.map +0 -1
  82. package/dist/commands/status.d.ts +0 -2
  83. package/dist/commands/status.d.ts.map +0 -1
  84. package/dist/commands/status.js +0 -43
  85. package/dist/commands/status.js.map +0 -1
  86. package/dist/commands/uninstall.d.ts +0 -2
  87. package/dist/commands/uninstall.d.ts.map +0 -1
  88. package/dist/commands/uninstall.js +0 -43
  89. package/dist/commands/uninstall.js.map +0 -1
  90. package/dist/commands/update.d.ts +0 -2
  91. package/dist/commands/update.d.ts.map +0 -1
  92. package/dist/commands/update.js +0 -58
  93. package/dist/commands/update.js.map +0 -1
  94. package/dist/configure/claude-code.d.ts +0 -7
  95. package/dist/configure/claude-code.d.ts.map +0 -1
  96. package/dist/configure/claude-code.js +0 -11
  97. package/dist/configure/claude-code.js.map +0 -1
  98. package/dist/configure/claude-desktop.d.ts +0 -8
  99. package/dist/configure/claude-desktop.d.ts.map +0 -1
  100. package/dist/configure/claude-desktop.js +0 -28
  101. package/dist/configure/claude-desktop.js.map +0 -1
  102. package/dist/configure/codex.d.ts +0 -7
  103. package/dist/configure/codex.d.ts.map +0 -1
  104. package/dist/configure/codex.js +0 -12
  105. package/dist/configure/codex.js.map +0 -1
  106. package/dist/configure/cursor.d.ts +0 -7
  107. package/dist/configure/cursor.d.ts.map +0 -1
  108. package/dist/configure/cursor.js +0 -12
  109. package/dist/configure/cursor.js.map +0 -1
  110. package/dist/configure/index.d.ts +0 -34
  111. package/dist/configure/index.d.ts.map +0 -1
  112. package/dist/configure/index.js +0 -153
  113. package/dist/configure/index.js.map +0 -1
  114. package/dist/detect/claude-code.d.ts +0 -3
  115. package/dist/detect/claude-code.d.ts.map +0 -1
  116. package/dist/detect/claude-code.js +0 -82
  117. package/dist/detect/claude-code.js.map +0 -1
  118. package/dist/detect/claude-desktop.d.ts +0 -3
  119. package/dist/detect/claude-desktop.d.ts.map +0 -1
  120. package/dist/detect/claude-desktop.js +0 -89
  121. package/dist/detect/claude-desktop.js.map +0 -1
  122. package/dist/detect/codex.d.ts +0 -3
  123. package/dist/detect/codex.d.ts.map +0 -1
  124. package/dist/detect/codex.js +0 -64
  125. package/dist/detect/codex.js.map +0 -1
  126. package/dist/detect/cursor.d.ts +0 -3
  127. package/dist/detect/cursor.d.ts.map +0 -1
  128. package/dist/detect/cursor.js +0 -81
  129. package/dist/detect/cursor.js.map +0 -1
  130. package/dist/detect/index.d.ts +0 -3
  131. package/dist/detect/index.d.ts.map +0 -1
  132. package/dist/detect/index.js +0 -28
  133. package/dist/detect/index.js.map +0 -1
  134. package/dist/import/file-upload.d.ts +0 -10
  135. package/dist/import/file-upload.d.ts.map +0 -1
  136. package/dist/import/file-upload.js +0 -37
  137. package/dist/import/file-upload.js.map +0 -1
  138. package/dist/import/index.d.ts +0 -11
  139. package/dist/import/index.d.ts.map +0 -1
  140. package/dist/import/index.js +0 -51
  141. package/dist/import/index.js.map +0 -1
  142. package/dist/mcp/exports.d.ts +0 -13
  143. package/dist/mcp/exports.d.ts.map +0 -1
  144. package/dist/mcp/exports.js +0 -13
  145. package/dist/mcp/exports.js.map +0 -1
  146. package/dist/mcp/git-context.d.ts +0 -17
  147. package/dist/mcp/git-context.d.ts.map +0 -1
  148. package/dist/mcp/git-context.js +0 -72
  149. package/dist/mcp/git-context.js.map +0 -1
  150. package/dist/mcp/hooks/anthropic.d.ts +0 -31
  151. package/dist/mcp/hooks/anthropic.d.ts.map +0 -1
  152. package/dist/mcp/hooks/anthropic.js +0 -137
  153. package/dist/mcp/hooks/anthropic.js.map +0 -1
  154. package/dist/mcp/hooks/google.d.ts +0 -53
  155. package/dist/mcp/hooks/google.d.ts.map +0 -1
  156. package/dist/mcp/hooks/google.js +0 -161
  157. package/dist/mcp/hooks/google.js.map +0 -1
  158. package/dist/mcp/hooks/index.d.ts +0 -9
  159. package/dist/mcp/hooks/index.d.ts.map +0 -1
  160. package/dist/mcp/hooks/index.js +0 -7
  161. package/dist/mcp/hooks/index.js.map +0 -1
  162. package/dist/mcp/hooks/openai.d.ts +0 -59
  163. package/dist/mcp/hooks/openai.d.ts.map +0 -1
  164. package/dist/mcp/hooks/openai.js +0 -158
  165. package/dist/mcp/hooks/openai.js.map +0 -1
  166. package/dist/mcp/hooks/types.d.ts +0 -8
  167. package/dist/mcp/hooks/types.d.ts.map +0 -1
  168. package/dist/mcp/hooks/types.js +0 -5
  169. package/dist/mcp/hooks/types.js.map +0 -1
  170. package/dist/mcp/ingestor.d.ts +0 -23
  171. package/dist/mcp/ingestor.d.ts.map +0 -1
  172. package/dist/mcp/ingestor.js +0 -310
  173. package/dist/mcp/ingestor.js.map +0 -1
  174. package/dist/mcp/pricing.d.ts +0 -19
  175. package/dist/mcp/pricing.d.ts.map +0 -1
  176. package/dist/mcp/pricing.js +0 -130
  177. package/dist/mcp/pricing.js.map +0 -1
  178. package/dist/mcp/server.d.ts +0 -10
  179. package/dist/mcp/server.d.ts.map +0 -1
  180. package/dist/mcp/server.js +0 -689
  181. package/dist/mcp/server.js.map +0 -1
  182. package/dist/mcp/session-tracker.d.ts +0 -52
  183. package/dist/mcp/session-tracker.d.ts.map +0 -1
  184. package/dist/mcp/session-tracker.js +0 -186
  185. package/dist/mcp/session-tracker.js.map +0 -1
  186. package/dist/mcp/tools/analyze-spending-trend.d.ts +0 -10
  187. package/dist/mcp/tools/analyze-spending-trend.d.ts.map +0 -1
  188. package/dist/mcp/tools/analyze-spending-trend.js +0 -126
  189. package/dist/mcp/tools/analyze-spending-trend.js.map +0 -1
  190. package/dist/mcp/tools/get-budget-status.d.ts +0 -9
  191. package/dist/mcp/tools/get-budget-status.d.ts.map +0 -1
  192. package/dist/mcp/tools/get-budget-status.js +0 -59
  193. package/dist/mcp/tools/get-budget-status.js.map +0 -1
  194. package/dist/mcp/tools/get-cost-breakdown.d.ts +0 -10
  195. package/dist/mcp/tools/get-cost-breakdown.d.ts.map +0 -1
  196. package/dist/mcp/tools/get-cost-breakdown.js +0 -52
  197. package/dist/mcp/tools/get-cost-breakdown.js.map +0 -1
  198. package/dist/mcp/tools/get-model-efficiency.d.ts +0 -9
  199. package/dist/mcp/tools/get-model-efficiency.d.ts.map +0 -1
  200. package/dist/mcp/tools/get-model-efficiency.js +0 -137
  201. package/dist/mcp/tools/get-model-efficiency.js.map +0 -1
  202. package/dist/mcp/tools/get-recent-prompts.d.ts +0 -13
  203. package/dist/mcp/tools/get-recent-prompts.d.ts.map +0 -1
  204. package/dist/mcp/tools/get-recent-prompts.js +0 -56
  205. package/dist/mcp/tools/get-recent-prompts.js.map +0 -1
  206. package/dist/mcp/tools/get-roi-metrics.d.ts +0 -9
  207. package/dist/mcp/tools/get-roi-metrics.d.ts.map +0 -1
  208. package/dist/mcp/tools/get-roi-metrics.js +0 -84
  209. package/dist/mcp/tools/get-roi-metrics.js.map +0 -1
  210. package/dist/mcp/tools/get-usage-summary.d.ts +0 -10
  211. package/dist/mcp/tools/get-usage-summary.d.ts.map +0 -1
  212. package/dist/mcp/tools/get-usage-summary.js +0 -47
  213. package/dist/mcp/tools/get-usage-summary.js.map +0 -1
  214. package/dist/mcp/tools/index.d.ts +0 -221
  215. package/dist/mcp/tools/index.d.ts.map +0 -1
  216. package/dist/mcp/tools/index.js +0 -161
  217. package/dist/mcp/tools/index.js.map +0 -1
  218. package/dist/mcp/tools/list-projects.d.ts +0 -6
  219. package/dist/mcp/tools/list-projects.d.ts.map +0 -1
  220. package/dist/mcp/tools/list-projects.js +0 -43
  221. package/dist/mcp/tools/list-projects.js.map +0 -1
  222. package/dist/mcp/tools/optimize-prompt.d.ts +0 -44
  223. package/dist/mcp/tools/optimize-prompt.d.ts.map +0 -1
  224. package/dist/mcp/tools/optimize-prompt.js +0 -95
  225. package/dist/mcp/tools/optimize-prompt.js.map +0 -1
  226. package/dist/mcp/types.d.ts +0 -118
  227. package/dist/mcp/types.d.ts.map +0 -1
  228. package/dist/mcp/types.js +0 -5
  229. package/dist/mcp/types.js.map +0 -1
  230. package/dist/types.d.ts +0 -18
  231. package/dist/types.d.ts.map +0 -1
  232. package/dist/types.js +0 -2
  233. package/dist/types.js.map +0 -1
  234. package/dist/update-check/check.d.ts +0 -6
  235. package/dist/update-check/check.d.ts.map +0 -1
  236. package/dist/update-check/check.js +0 -64
  237. package/dist/update-check/check.js.map +0 -1
  238. package/dist/update-check/notify.d.ts +0 -6
  239. package/dist/update-check/notify.d.ts.map +0 -1
  240. package/dist/update-check/notify.js +0 -40
  241. package/dist/update-check/notify.js.map +0 -1
  242. package/dist/verify.d.ts +0 -7
  243. package/dist/verify.d.ts.map +0 -1
  244. package/dist/verify.js +0 -40
  245. package/dist/verify.js.map +0 -1
  246. package/dist/version.d.ts +0 -9
  247. package/dist/version.d.ts.map +0 -1
  248. package/dist/version.js +0 -21
  249. package/dist/version.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;QACvC,gBAAgB,EAAE;QAClB,mBAAmB,EAAE;QACrB,YAAY,EAAE;QACd,WAAW,EAAE;KACd,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,4DAA4D;QAC5D,MAAM,KAAK,GAA8B,CAAC,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;QAC3B,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE,GAAG,IAAI,qBAAqB,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;SACtH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Credentials } from '../types.js';
2
- /**
3
- * Upload a Claude or ChatGPT export file to the backend import endpoint.
4
- */
5
- export declare function uploadExportFile(filePath: string, source: 'claude' | 'chatgpt', credentials: Credentials): Promise<{
6
- success: boolean;
7
- eventsCreated: number;
8
- error?: string;
9
- }>;
10
- //# sourceMappingURL=file-upload.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../src/import/file-upload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuCtE"}
@@ -1,37 +0,0 @@
1
- import { readFileSync, statSync } from 'node:fs';
2
- const MAX_FILE_SIZE = 100 * 1024 * 1024; // 100 MB (matches server limit)
3
- /**
4
- * Upload a Claude or ChatGPT export file to the backend import endpoint.
5
- */
6
- export async function uploadExportFile(filePath, source, credentials) {
7
- const stat = statSync(filePath);
8
- if (stat.size > MAX_FILE_SIZE) {
9
- return {
10
- success: false,
11
- eventsCreated: 0,
12
- error: `File too large (${Math.round(stat.size / 1024 / 1024)}MB). Maximum is 100MB.`,
13
- };
14
- }
15
- const content = readFileSync(filePath, 'utf-8');
16
- const endpoint = source === 'claude'
17
- ? `${credentials.api_url}/api/v1/import/claude`
18
- : `${credentials.api_url}/api/v1/import/chatgpt`;
19
- const res = await fetch(endpoint, {
20
- method: 'POST',
21
- headers: {
22
- Authorization: `Bearer ${credentials.api_key}`,
23
- 'Content-Type': 'application/json',
24
- },
25
- body: content,
26
- });
27
- if (!res.ok) {
28
- const body = await res.text();
29
- return { success: false, eventsCreated: 0, error: `HTTP ${res.status}: ${body}` };
30
- }
31
- const result = (await res.json());
32
- return {
33
- success: result.success,
34
- eventsCreated: result.events_created ?? result.conversations_processed ?? 0,
35
- };
36
- }
37
- //# sourceMappingURL=file-upload.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../src/import/file-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGjD,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,gCAAgC;AAEzE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,MAA4B,EAC5B,WAAwB;IAExB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,CAAC;YAChB,KAAK,EAAE,mBAAmB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,wBAAwB;SACtF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,QAAQ,GACZ,MAAM,KAAK,QAAQ;QACjB,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,uBAAuB;QAC/C,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,wBAAwB,CAAC;IAErD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,WAAW,CAAC,OAAO,EAAE;YAC9C,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,EAAE,CAAC;IACpF,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAI/B,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,uBAAuB,IAAI,CAAC;KAC5E,CAAC;AACJ,CAAC"}
@@ -1,11 +0,0 @@
1
- export interface ImportSource {
2
- id: string;
3
- label: string;
4
- path: string;
5
- count: number;
6
- }
7
- /**
8
- * Scan the local filesystem for importable AI tool history.
9
- */
10
- export declare function detectImportSources(): ImportSource[];
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CAiCpD"}
@@ -1,51 +0,0 @@
1
- import { existsSync, readdirSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { homedir } from 'node:os';
4
- /**
5
- * Scan the local filesystem for importable AI tool history.
6
- */
7
- export function detectImportSources() {
8
- const sources = [];
9
- const home = homedir();
10
- // Claude Code history
11
- const claudeDir = join(home, '.claude');
12
- if (existsSync(claudeDir)) {
13
- const sessions = countSessions(claudeDir, 'projects');
14
- if (sessions > 0) {
15
- sources.push({
16
- id: 'claude-code',
17
- label: 'Claude Code history (~/.claude/)',
18
- path: claudeDir,
19
- count: sessions,
20
- });
21
- }
22
- }
23
- // Codex sessions
24
- const codexDir = join(home, '.codex');
25
- if (existsSync(codexDir)) {
26
- const sessions = countSessions(codexDir, 'sessions');
27
- if (sessions > 0) {
28
- sources.push({
29
- id: 'codex',
30
- label: 'Codex sessions (~/.codex/)',
31
- path: codexDir,
32
- count: sessions,
33
- });
34
- }
35
- }
36
- return sources;
37
- }
38
- function countSessions(dir, subdir) {
39
- try {
40
- const target = join(dir, subdir);
41
- if (!existsSync(target))
42
- return 0;
43
- return readdirSync(target, { recursive: true })
44
- .filter((f) => String(f).endsWith('.jsonl') || String(f).endsWith('.json'))
45
- .length;
46
- }
47
- catch {
48
- return 0;
49
- }
50
- }
51
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AASlC;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,sBAAsB;IACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACtD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,aAAa;gBACjB,KAAK,EAAE,kCAAkC;gBACzC,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,4BAA4B;gBACnC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,MAAc;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAC;QAClC,OAAO,WAAW,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC1E,MAAM,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Public API exports for @verbal/mcp-service
3
- *
4
- * Import from this module when using the SDK hooks in your application:
5
- * ```ts
6
- * import { VerbalIngestor, createAnthropicHook } from '@verbal/mcp-service';
7
- * ```
8
- */
9
- export { VerbalIngestor, attachExitHooks } from './ingestor.js';
10
- export type { UsageEvent, IngestPayload, IngestorConfig, IngestResult } from './types.js';
11
- export { createAnthropicHook, attachAnthropicStreamHooks, createOpenAIHooks, createOpenAIFetchHook, createGoogleHook, trackGoogleWithOTel, } from './hooks/index.js';
12
- export type { HookTracker, OpenAIRunHooks } from './hooks/index.js';
13
- //# sourceMappingURL=exports.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/mcp/exports.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1F,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Public API exports for @verbal/mcp-service
3
- *
4
- * Import from this module when using the SDK hooks in your application:
5
- * ```ts
6
- * import { VerbalIngestor, createAnthropicHook } from '@verbal/mcp-service';
7
- * ```
8
- */
9
- // Core ingestor
10
- export { VerbalIngestor, attachExitHooks } from './ingestor.js';
11
- // Hook adapters
12
- export { createAnthropicHook, attachAnthropicStreamHooks, createOpenAIHooks, createOpenAIFetchHook, createGoogleHook, trackGoogleWithOTel, } from './hooks/index.js';
13
- //# sourceMappingURL=exports.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/mcp/exports.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAKhE,gBAAgB;AAChB,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
@@ -1,17 +0,0 @@
1
- export interface GitContext {
2
- repo_name: string | null;
3
- branch: string | null;
4
- commit_hash: string | null;
5
- commit_message: string | null;
6
- files_changed: number;
7
- lines_added: number;
8
- lines_deleted: number;
9
- is_dirty: boolean;
10
- remote_url: string | null;
11
- }
12
- /**
13
- * Gather git context from the current working directory
14
- * Returns null if not a git repository
15
- */
16
- export declare function getGitContext(cwd: string): GitContext | null;
17
- //# sourceMappingURL=git-context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-context.d.ts","sourceRoot":"","sources":["../../src/mcp/git-context.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAiBD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA2D5D"}
@@ -1,72 +0,0 @@
1
- import { execSync } from 'child_process';
2
- /**
3
- * Execute git command and return output (or null on failure)
4
- */
5
- function gitCommand(cmd, cwd) {
6
- try {
7
- return execSync(cmd, {
8
- cwd,
9
- encoding: 'utf8',
10
- stdio: ['pipe', 'pipe', 'ignore'], // Suppress stderr
11
- }).trim();
12
- }
13
- catch (error) {
14
- return null;
15
- }
16
- }
17
- /**
18
- * Gather git context from the current working directory
19
- * Returns null if not a git repository
20
- */
21
- export function getGitContext(cwd) {
22
- // Check if we're in a git repo
23
- const isGitRepo = gitCommand('git rev-parse --is-inside-work-tree', cwd);
24
- if (!isGitRepo) {
25
- return null;
26
- }
27
- // Get branch name
28
- const branch = gitCommand('git rev-parse --abbrev-ref HEAD', cwd);
29
- // Get commit hash
30
- const commitHash = gitCommand('git rev-parse HEAD', cwd);
31
- // Get commit message (first line)
32
- const commitMessage = gitCommand('git log -1 --pretty=%s', cwd);
33
- // Get repo name from remote URL
34
- const remoteUrl = gitCommand('git config --get remote.origin.url', cwd);
35
- let repoName = null;
36
- if (remoteUrl) {
37
- // Extract repo name from URL (works for GitHub, GitLab, etc.)
38
- const match = remoteUrl.match(/\/([^/]+?)(?:\.git)?$/);
39
- repoName = match ? match[1] : null;
40
- }
41
- // Check for uncommitted changes
42
- const statusOutput = gitCommand('git status --porcelain', cwd);
43
- const isDirty = statusOutput ? statusOutput.length > 0 : false;
44
- // Get file change stats (uncommitted changes)
45
- let filesChanged = 0;
46
- let linesAdded = 0;
47
- let linesDeleted = 0;
48
- if (isDirty) {
49
- const diffStats = gitCommand('git diff --stat', cwd);
50
- if (diffStats) {
51
- // Parse output like: "3 files changed, 42 insertions(+), 7 deletions(-)"
52
- const filesMatch = diffStats.match(/(\d+) files? changed/);
53
- const insertionsMatch = diffStats.match(/(\d+) insertions?/);
54
- const deletionsMatch = diffStats.match(/(\d+) deletions?/);
55
- filesChanged = filesMatch ? parseInt(filesMatch[1], 10) : 0;
56
- linesAdded = insertionsMatch ? parseInt(insertionsMatch[1], 10) : 0;
57
- linesDeleted = deletionsMatch ? parseInt(deletionsMatch[1], 10) : 0;
58
- }
59
- }
60
- return {
61
- repo_name: repoName,
62
- branch,
63
- commit_hash: commitHash,
64
- commit_message: commitMessage,
65
- files_changed: filesChanged,
66
- lines_added: linesAdded,
67
- lines_deleted: linesDeleted,
68
- is_dirty: isDirty,
69
- remote_url: remoteUrl,
70
- };
71
- }
72
- //# sourceMappingURL=git-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-context.js","sourceRoot":"","sources":["../../src/mcp/git-context.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Anthropic SDK hook adapter using custom fetch middleware
3
- *
4
- * Usage:
5
- * ```ts
6
- * import Anthropic from '@anthropic-ai/sdk';
7
- * import { createAnthropicHook } from '@verbal/mcp-service/hooks/anthropic';
8
- *
9
- * const trackedFetch = createAnthropicHook(ingestor);
10
- * const client = new Anthropic({
11
- * apiKey: process.env.ANTHROPIC_API_KEY,
12
- * fetch: trackedFetch,
13
- * });
14
- * ```
15
- */
16
- import type { HookTracker } from './types.js';
17
- export declare function createAnthropicHook(tracker: HookTracker): typeof fetch;
18
- /**
19
- * Hook for Anthropic streaming responses using event listeners
20
- *
21
- * Usage:
22
- * ```ts
23
- * const stream = await client.messages.stream({...});
24
- * attachStreamHooks(stream, ingestor, promptContent);
25
- * ```
26
- */
27
- export declare function attachAnthropicStreamHooks(stream: {
28
- on(event: 'message', handler: (message: unknown) => void): void;
29
- on(event: 'error', handler: (error: unknown) => void): void;
30
- }, tracker: HookTracker, promptContent: string, startTime?: number): void;
31
- //# sourceMappingURL=anthropic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/mcp/hooks/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,KAAK,CAsDtE;AA8CD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE;IACN,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAChE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CAC7D,EACD,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,MAAM,EACrB,SAAS,GAAE,MAAmB,GAC7B,IAAI,CAiCN"}
@@ -1,137 +0,0 @@
1
- /**
2
- * Anthropic SDK hook adapter using custom fetch middleware
3
- *
4
- * Usage:
5
- * ```ts
6
- * import Anthropic from '@anthropic-ai/sdk';
7
- * import { createAnthropicHook } from '@verbal/mcp-service/hooks/anthropic';
8
- *
9
- * const trackedFetch = createAnthropicHook(ingestor);
10
- * const client = new Anthropic({
11
- * apiKey: process.env.ANTHROPIC_API_KEY,
12
- * fetch: trackedFetch,
13
- * });
14
- * ```
15
- */
16
- export function createAnthropicHook(tracker) {
17
- return async (url, init) => {
18
- const startTime = Date.now();
19
- let requestBody = null;
20
- // Capture request body for prompt extraction
21
- if (init?.body && typeof init.body === 'string') {
22
- try {
23
- requestBody = JSON.parse(init.body);
24
- }
25
- catch {
26
- // Ignore parse errors
27
- }
28
- }
29
- // Call original fetch
30
- const response = await fetch(url, init);
31
- // Only track API calls to Anthropic
32
- const urlString = typeof url === 'string' ? url : url instanceof URL ? url.href : url.url;
33
- if (!urlString.includes('anthropic.com/v1/messages')) {
34
- return response;
35
- }
36
- // Clone response to read body without consuming it
37
- const clonedResponse = response.clone();
38
- try {
39
- const responseBody = await clonedResponse.json();
40
- // Only track successful responses with usage metadata
41
- if (response.ok && responseBody.usage) {
42
- const promptContent = extractPromptContent(requestBody);
43
- const responseContent = extractResponseContent(responseBody);
44
- const usage = responseBody.usage;
45
- await tracker.track({
46
- event_type: 'prompt',
47
- provider: 'anthropic',
48
- model: responseBody.model,
49
- tokens_in: usage.input_tokens,
50
- tokens_out: usage.output_tokens,
51
- total_tokens: usage.input_tokens + usage.output_tokens,
52
- duration_ms: Date.now() - startTime,
53
- request_id: responseBody.id,
54
- prompt: promptContent,
55
- response: responseContent,
56
- });
57
- }
58
- }
59
- catch (error) {
60
- console.warn('[AnthropicHook] Failed to track usage:', error);
61
- }
62
- return response;
63
- };
64
- }
65
- /**
66
- * Extract prompt content from Anthropic request body
67
- */
68
- function extractPromptContent(body) {
69
- if (!body || !body.messages)
70
- return undefined;
71
- const messages = body.messages;
72
- const parts = [];
73
- // Include system prompt if present
74
- if (typeof body.system === 'string') {
75
- parts.push(body.system);
76
- }
77
- for (const msg of messages) {
78
- if (typeof msg.content === 'string') {
79
- parts.push(msg.content);
80
- }
81
- else if (Array.isArray(msg.content)) {
82
- for (const block of msg.content) {
83
- if (block.type === 'text' && typeof block.text === 'string') {
84
- parts.push(block.text);
85
- }
86
- }
87
- }
88
- }
89
- return parts.length > 0 ? parts.join('\n') : undefined;
90
- }
91
- /**
92
- * Extract response content from Anthropic response body
93
- */
94
- function extractResponseContent(body) {
95
- if (!body.content || !Array.isArray(body.content))
96
- return undefined;
97
- return body.content
98
- .filter((block) => block.type === 'text' && block.text)
99
- .map((block) => block.text)
100
- .join('');
101
- }
102
- /**
103
- * Hook for Anthropic streaming responses using event listeners
104
- *
105
- * Usage:
106
- * ```ts
107
- * const stream = await client.messages.stream({...});
108
- * attachStreamHooks(stream, ingestor, promptContent);
109
- * ```
110
- */
111
- export function attachAnthropicStreamHooks(stream, tracker, promptContent, startTime = Date.now()) {
112
- stream.on('message', (message) => {
113
- const msg = message;
114
- if (msg.usage) {
115
- const responseContent = msg.content
116
- ?.filter((block) => block.type === 'text' && block.text)
117
- .map((block) => block.text)
118
- .join('');
119
- tracker.track({
120
- event_type: 'prompt',
121
- provider: 'anthropic',
122
- model: msg.model,
123
- tokens_in: msg.usage.input_tokens,
124
- tokens_out: msg.usage.output_tokens,
125
- total_tokens: msg.usage.input_tokens + msg.usage.output_tokens,
126
- duration_ms: Date.now() - startTime,
127
- request_id: msg.id,
128
- prompt: promptContent,
129
- response: responseContent,
130
- });
131
- }
132
- });
133
- stream.on('error', (error) => {
134
- console.error('[AnthropicStreamHook] Stream error:', error);
135
- });
136
- }
137
- //# sourceMappingURL=anthropic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/mcp/hooks/anthropic.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Google Generative AI SDK hook adapter using custom fetch middleware
3
- *
4
- * Usage:
5
- * ```ts
6
- * import { GoogleGenerativeAI } from '@google/generative-ai';
7
- * import { createGoogleHook } from '@verbal/mcp-service/hooks/google';
8
- *
9
- * const trackedFetch = createGoogleHook(ingestor);
10
- * const genai = new GoogleGenerativeAI({
11
- * apiKey: process.env.GOOGLE_API_KEY,
12
- * fetch: trackedFetch,
13
- * });
14
- * ```
15
- */
16
- import type { HookTracker } from './types.js';
17
- export declare function createGoogleHook(tracker: HookTracker): typeof fetch;
18
- /**
19
- * OpenTelemetry-based tracking for Google AI (advanced)
20
- *
21
- * Usage:
22
- * ```ts
23
- * import { trace } from '@opentelemetry/api';
24
- * import { trackGoogleWithOTel } from '@verbal/mcp-service/hooks/google';
25
- *
26
- * const tracer = trace.getTracer('gemini-client');
27
- * const result = await trackGoogleWithOTel(
28
- * tracer,
29
- * ingestor,
30
- * model,
31
- * async () => model.generateContent(prompt)
32
- * );
33
- * ```
34
- */
35
- export declare function trackGoogleWithOTel<T extends {
36
- response: {
37
- usageMetadata?: {
38
- promptTokenCount?: number;
39
- candidatesTokenCount?: number;
40
- totalTokenCount?: number;
41
- };
42
- };
43
- }>(tracer: {
44
- startSpan(name: string): {
45
- setAttributes(attributes: Record<string, unknown>): void;
46
- setStatus(status: {
47
- code: number;
48
- }): void;
49
- recordException(error: Error): void;
50
- end(): void;
51
- };
52
- }, tracker: HookTracker, modelName: string, operation: () => Promise<T>): Promise<T>;
53
- //# sourceMappingURL=google.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/mcp/hooks/google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,KAAK,CAwDnE;AA0DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE;QAAE,aAAa,CAAC,EAAE;YAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;YAAC,eAAe,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,EAC1K,MAAM,EAAE;IACN,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;QACvB,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACzD,SAAS,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QAC1C,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QACpC,GAAG,IAAI,IAAI,CAAC;KACb,CAAC;CACH,EACD,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAwCZ"}