@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,25 +0,0 @@
1
- export async function sendTrace(config, traceId, name, events) {
2
- if (!config.traceEnabled)
3
- return;
4
- if (!traceId || events.length === 0)
5
- return;
6
- const payload = { trace_id: traceId, name, events };
7
- try {
8
- const response = await fetch(config.traceUrl, {
9
- method: 'POST',
10
- headers: {
11
- 'Content-Type': 'application/json',
12
- Authorization: `Bearer ${config.apiKey}`,
13
- },
14
- body: JSON.stringify(payload),
15
- });
16
- if (!response.ok) {
17
- const text = await response.text();
18
- console.warn(`[VerbalTrace] Trace ingest failed (${response.status}): ${text}`);
19
- }
20
- }
21
- catch (error) {
22
- console.warn('[VerbalTrace] Trace ingest failed:', error);
23
- }
24
- }
25
- //# sourceMappingURL=trace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/agent-hooks/trace.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAkB,EAClB,OAAe,EACf,IAAY,EACZ,MAAoB;IAEpB,IAAI,CAAC,MAAM,CAAC,YAAY;QAAE,OAAO;IACjC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE5C,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;aACzC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,sCAAsC,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { Credentials } from '../types.js';
2
- export interface BrowserAuthOptions {
3
- apiUrl: string;
4
- }
5
- export declare function browserAuth(options: BrowserAuthOptions): Promise<Credentials>;
6
- //# sourceMappingURL=browser-auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-auth.d.ts","sourceRoot":"","sources":["../../src/auth/browser-auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AA4HD,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CA2GnF"}
@@ -1,202 +0,0 @@
1
- import { createServer } from 'node:http';
2
- import { randomBytes } from 'node:crypto';
3
- const PORT_START = 9876;
4
- const PORT_END = 9900;
5
- const TIMEOUT_MS = 120_000;
6
- async function openBrowser(url) {
7
- const { exec } = await import('node:child_process');
8
- const platform = process.platform;
9
- const cmd = platform === 'darwin' ? 'open' : platform === 'win32' ? 'start' : 'xdg-open';
10
- exec(`${cmd} "${url}"`);
11
- }
12
- async function findAvailablePort() {
13
- for (let port = PORT_START; port <= PORT_END; port++) {
14
- const available = await new Promise((resolve) => {
15
- const probe = createServer();
16
- probe.once('error', (err) => {
17
- if (err.code === 'EADDRINUSE') {
18
- resolve(false);
19
- }
20
- else {
21
- resolve(false);
22
- }
23
- });
24
- probe.once('listening', () => {
25
- probe.close(() => resolve(true));
26
- });
27
- probe.listen(port, '127.0.0.1');
28
- });
29
- if (available)
30
- return port;
31
- }
32
- throw new Error(`No available port found in range ${PORT_START}-${PORT_END}. Please free up a port and try again.`);
33
- }
34
- async function exchangeCode(apiUrl, code) {
35
- const res = await fetch(`${apiUrl}/api/v1/cli/exchange`, {
36
- method: 'POST',
37
- headers: { 'Content-Type': 'application/json' },
38
- body: JSON.stringify({ code }),
39
- });
40
- if (!res.ok) {
41
- const body = await res.json().catch(() => ({}));
42
- throw new Error(body.error ?? `Exchange failed: HTTP ${res.status}`);
43
- }
44
- const data = await res.json();
45
- return {
46
- api_key: data.api_key,
47
- org_id: data.org_id,
48
- user_email: data.user_email,
49
- api_url: data.api_url,
50
- ingest_url: data.ingest_url,
51
- created_at: new Date().toISOString(),
52
- };
53
- }
54
- const WAITING_HTML = `<!DOCTYPE html>
55
- <html lang="en">
56
- <head>
57
- <meta charset="UTF-8">
58
- <title>Verbal CLI Authentication</title>
59
- <style>
60
- body { font-family: system-ui, sans-serif; display: flex; align-items: center; justify-content: center; min-height: 100vh; margin: 0; background: #f5f5f5; }
61
- .card { background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); text-align: center; max-width: 400px; }
62
- h1 { font-size: 1.25rem; color: #333; margin-bottom: 0.5rem; }
63
- p { color: #666; font-size: 0.95rem; }
64
- </style>
65
- </head>
66
- <body>
67
- <div class="card">
68
- <h1>Waiting for authentication...</h1>
69
- <p>Please complete the sign-in in the browser window that was opened.</p>
70
- </div>
71
- </body>
72
- </html>`;
73
- const SUCCESS_HTML = `<!DOCTYPE html>
74
- <html lang="en">
75
- <head>
76
- <meta charset="UTF-8">
77
- <title>Verbal CLI — Authenticated</title>
78
- <style>
79
- body { font-family: system-ui, sans-serif; display: flex; align-items: center; justify-content: center; min-height: 100vh; margin: 0; background: #f5f5f5; }
80
- .card { background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); text-align: center; max-width: 400px; }
81
- h1 { font-size: 1.25rem; color: #22c55e; margin-bottom: 0.5rem; }
82
- p { color: #666; font-size: 0.95rem; }
83
- </style>
84
- </head>
85
- <body>
86
- <div class="card">
87
- <h1>Authentication complete!</h1>
88
- <p>You can close this tab and return to your terminal.</p>
89
- </div>
90
- </body>
91
- </html>`;
92
- const FAILURE_HTML = `<!DOCTYPE html>
93
- <html lang="en">
94
- <head>
95
- <meta charset="UTF-8">
96
- <title>Verbal CLI — Authentication Failed</title>
97
- <style>
98
- body { font-family: system-ui, sans-serif; display: flex; align-items: center; justify-content: center; min-height: 100vh; margin: 0; background: #f5f5f5; }
99
- .card { background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); text-align: center; max-width: 400px; }
100
- h1 { font-size: 1.25rem; color: #ef4444; margin-bottom: 0.5rem; }
101
- p { color: #666; font-size: 0.95rem; }
102
- </style>
103
- </head>
104
- <body>
105
- <div class="card">
106
- <h1>Authentication failed.</h1>
107
- <p>Please run <code>npx @getverbal/cli init</code> again.</p>
108
- </div>
109
- </body>
110
- </html>`;
111
- export async function browserAuth(options) {
112
- const { apiUrl } = options;
113
- // Step 1: Generate a 256-bit random state parameter for CSRF protection
114
- const state = randomBytes(32).toString('hex');
115
- // Step 2: Find an available port
116
- const port = await findAvailablePort();
117
- // Step 3 & 5-9: Start HTTP server and wait for callback
118
- return new Promise((resolve, reject) => {
119
- let settled = false;
120
- let timeoutId;
121
- const server = createServer((req, res) => {
122
- const url = new URL(req.url ?? '/', `http://127.0.0.1:${port}`);
123
- if (req.method !== 'GET') {
124
- res.writeHead(405, { 'Content-Type': 'text/plain' });
125
- res.end('Method Not Allowed');
126
- return;
127
- }
128
- if (url.pathname === '/') {
129
- res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
130
- res.end(WAITING_HTML);
131
- return;
132
- }
133
- if (url.pathname === '/callback') {
134
- const code = url.searchParams.get('code');
135
- const receivedState = url.searchParams.get('state');
136
- // Step 6: Validate state (CSRF protection)
137
- if (!code || receivedState !== state) {
138
- res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });
139
- res.end(FAILURE_HTML);
140
- if (!settled) {
141
- settled = true;
142
- if (timeoutId !== undefined)
143
- clearTimeout(timeoutId);
144
- server.close(() => {
145
- reject(new Error('Authentication failed: invalid state or missing code.'));
146
- });
147
- }
148
- return;
149
- }
150
- // State is valid — send success response immediately so the browser gets feedback
151
- res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
152
- res.end(SUCCESS_HTML);
153
- if (!settled) {
154
- settled = true;
155
- if (timeoutId !== undefined)
156
- clearTimeout(timeoutId);
157
- // Step 7: Exchange code for credentials, then close server
158
- exchangeCode(apiUrl, code)
159
- .then((credentials) => {
160
- server.close(() => resolve(credentials));
161
- })
162
- .catch((err) => {
163
- server.close(() => {
164
- const message = err instanceof Error ? err.message : String(err);
165
- reject(new Error(`Code exchange failed: ${message}`));
166
- });
167
- });
168
- }
169
- return;
170
- }
171
- // All other routes — 404
172
- res.writeHead(404, { 'Content-Type': 'text/plain' });
173
- res.end('Not Found');
174
- });
175
- server.on('error', (err) => {
176
- if (!settled) {
177
- settled = true;
178
- if (timeoutId !== undefined)
179
- clearTimeout(timeoutId);
180
- reject(new Error(`Server error: ${err.message}`));
181
- }
182
- });
183
- // Step 3: Start server on 127.0.0.1 only
184
- server.listen(port, '127.0.0.1', () => {
185
- // Step 8 (timeout): Close server if no callback within 120 seconds
186
- timeoutId = setTimeout(() => {
187
- if (!settled) {
188
- settled = true;
189
- server.close(() => {
190
- reject(new Error('Authentication timed out after 120 seconds. Please run `npx @getverbal/cli init` again.'));
191
- });
192
- }
193
- }, TIMEOUT_MS);
194
- // Step 4: Open browser
195
- const authUrl = `${apiUrl}/cli/auth?state=${state}&port=${port}`;
196
- openBrowser(authUrl).catch(() => {
197
- // Non-fatal: user may open browser manually
198
- });
199
- });
200
- });
201
- }
202
- //# sourceMappingURL=browser-auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-auth.js","sourceRoot":"","sources":["../../src/auth/browser-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO1C,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,UAAU,GAAG,OAAO,CAAC;AAE3B,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,GAAG,GACP,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/E,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,KAAK,IAAI,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACvD,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;gBACjD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;gBAC3B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,SAAS;YAAE,OAAO,IAAI,CAAC;IAC7B,CAAC;IACD,MAAM,IAAI,KAAK,CACb,oCAAoC,UAAU,IAAI,QAAQ,wCAAwC,CACnG,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,IAAY;IACtD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,sBAAsB,EAAE;QACvD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;KAC/B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAuB,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,yBAAyB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAM1B,CAAC;IACF,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;QAkBb,CAAC;AAET,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;QAkBb,CAAC;AAET,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;QAkBb,CAAC;AAET,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,wEAAwE;IACxE,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,iCAAiC;IACjC,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAEvC,wDAAwD;IACxD,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,SAAqC,CAAC;QAE1C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;YAEhE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;gBACnE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAEpD,2CAA2C;gBAC3C,IAAI,CAAC,IAAI,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;oBACrC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;oBACnE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAEtB,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,GAAG,IAAI,CAAC;wBACf,IAAI,SAAS,KAAK,SAAS;4BAAE,YAAY,CAAC,SAAS,CAAC,CAAC;wBACrD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;4BAChB,MAAM,CAAC,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC;wBAC7E,CAAC,CAAC,CAAC;oBACL,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,kFAAkF;gBAClF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;gBACnE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAEtB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,IAAI,CAAC;oBACf,IAAI,SAAS,KAAK,SAAS;wBAAE,YAAY,CAAC,SAAS,CAAC,CAAC;oBAErD,2DAA2D;oBAC3D,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;yBACvB,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;wBACpB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC3C,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;4BAChB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;4BACjE,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC,CAAC;wBACxD,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,OAAO;YACT,CAAC;YAED,yBAAyB;YACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YAChD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,SAAS,KAAK,SAAS;oBAAE,YAAY,CAAC,SAAS,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;YACpC,mEAAmE;YACnE,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;wBAChB,MAAM,CACJ,IAAI,KAAK,CACP,yFAAyF,CAC1F,CACF,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,EAAE,UAAU,CAAC,CAAC;YAEf,uBAAuB;YACvB,MAAM,OAAO,GAAG,GAAG,MAAM,mBAAmB,KAAK,SAAS,IAAI,EAAE,CAAC;YACjE,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC9B,4CAA4C;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { Credentials } from '../types.js';
2
- export declare function getCredentialsDir(): string;
3
- export declare function readCredentials(): Promise<Credentials | null>;
4
- export declare function writeCredentials(credentials: Credentials): Promise<void>;
5
- export declare function clearCredentials(): Promise<void>;
6
- //# sourceMappingURL=credentials.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAMD,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAkBnE;AAED,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B9E;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYtD"}
@@ -1,78 +0,0 @@
1
- import { readFileSync, writeFileSync, rmSync, mkdirSync, chmodSync, renameSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { homedir } from 'node:os';
4
- import { randomBytes } from 'node:crypto';
5
- const APP_DIR = 'getverbal';
6
- const CREDENTIALS_FILE = 'credentials.json';
7
- export function getCredentialsDir() {
8
- const xdgConfigHome = process.env['XDG_CONFIG_HOME'];
9
- if (xdgConfigHome && xdgConfigHome.trim() !== '') {
10
- return join(xdgConfigHome, APP_DIR);
11
- }
12
- return join(homedir(), '.config', APP_DIR);
13
- }
14
- function getCredentialsPath() {
15
- return join(getCredentialsDir(), CREDENTIALS_FILE);
16
- }
17
- export async function readCredentials() {
18
- const credPath = getCredentialsPath();
19
- try {
20
- const content = readFileSync(credPath, 'utf-8');
21
- const parsed = JSON.parse(content);
22
- return parsed;
23
- }
24
- catch (err) {
25
- const nodeErr = err;
26
- // File doesn't exist — not an error condition
27
- if (nodeErr.code === 'ENOENT') {
28
- return null;
29
- }
30
- // Malformed JSON or other read error — treat as missing to avoid crashing CLI
31
- if (err instanceof SyntaxError) {
32
- return null;
33
- }
34
- throw err;
35
- }
36
- }
37
- export async function writeCredentials(credentials) {
38
- const dir = getCredentialsDir();
39
- const credPath = getCredentialsPath();
40
- // Create directory (and parents) if needed
41
- mkdirSync(dir, { recursive: true });
42
- const content = JSON.stringify(credentials, null, 2);
43
- // Atomic write: write to temp file then rename
44
- const tmpPath = join(dir, `.credentials-${randomBytes(8).toString('hex')}.tmp`);
45
- try {
46
- writeFileSync(tmpPath, content, { encoding: 'utf-8', mode: 0o600 });
47
- // Ensure permissions are set correctly (in case umask altered them)
48
- chmodSync(tmpPath, 0o600);
49
- renameSync(tmpPath, credPath);
50
- }
51
- catch (err) {
52
- // Clean up temp file if rename failed
53
- try {
54
- rmSync(tmpPath, { force: true });
55
- }
56
- catch {
57
- // Ignore cleanup error
58
- }
59
- throw err;
60
- }
61
- // Ensure final file has correct permissions
62
- chmodSync(credPath, 0o600);
63
- }
64
- export async function clearCredentials() {
65
- const credPath = getCredentialsPath();
66
- try {
67
- rmSync(credPath, { force: true });
68
- }
69
- catch (err) {
70
- const nodeErr = err;
71
- if (nodeErr.code === 'ENOENT') {
72
- // File already gone — not an error
73
- return;
74
- }
75
- throw err;
76
- }
77
- }
78
- //# sourceMappingURL=credentials.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function runDashboard(): Promise<void>;
2
- //# sourceMappingURL=dashboard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAWA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAUlD"}
@@ -1,19 +0,0 @@
1
- import pc from 'picocolors';
2
- import { readCredentials } from '../auth/credentials.js';
3
- async function openBrowser(url) {
4
- const { exec } = await import('node:child_process');
5
- const platform = process.platform;
6
- const cmd = platform === 'darwin' ? 'open' : platform === 'win32' ? 'start' : 'xdg-open';
7
- exec(`${cmd} "${url}"`);
8
- }
9
- export async function runDashboard() {
10
- const credentials = await readCredentials();
11
- if (!credentials) {
12
- console.log(pc.yellow('Not authenticated. Run `getverbal init` first.'));
13
- return;
14
- }
15
- const url = 'https://www.getverbal.ai/dashboard';
16
- console.log(pc.green('✓') + ` Opening ${pc.cyan(url)}`);
17
- await openBrowser(url);
18
- }
19
- //# sourceMappingURL=dashboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,GAAG,GACP,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/E,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,oCAAoC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function runHooks(args: string[]): Promise<void>;
2
- //# sourceMappingURL=hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"AACA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D"}
@@ -1,6 +0,0 @@
1
- // Delegates to the agent-hooks CLI (invoked by tool configs)
2
- export async function runHooks(args) {
3
- const { main: hooksMain } = await import('../agent-hooks/cli.js');
4
- await hooksMain(args);
5
- }
6
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc;IAC3C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAClE,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function runImport(): Promise<void>;
2
- //# sourceMappingURL=import.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAUA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA2E/C"}
@@ -1,129 +0,0 @@
1
- import { existsSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { homedir } from 'node:os';
4
- import { createInterface } from 'node:readline';
5
- import pc from 'picocolors';
6
- import { readCredentials } from '../auth/credentials.js';
7
- import { detectImportSources } from '../import/index.js';
8
- import { uploadExportFile } from '../import/file-upload.js';
9
- export async function runImport() {
10
- console.log(`\n ${pc.bold('Verbal')} — Bulk Import\n`);
11
- const creds = await readCredentials();
12
- if (!creds) {
13
- console.error(pc.red(' Not authenticated. Run `getverbal init` first.'));
14
- process.exitCode = 1;
15
- return;
16
- }
17
- // Check for --source and --file flags
18
- const args = process.argv.slice(3);
19
- const sourceFlag = getFlagValue(args, '--source');
20
- const fileFlag = getFlagValue(args, '--file');
21
- if (sourceFlag && fileFlag) {
22
- if (sourceFlag !== 'claude' && sourceFlag !== 'chatgpt') {
23
- console.error(pc.red(` Invalid source: "${sourceFlag}". Use "claude" or "chatgpt".`));
24
- process.exitCode = 1;
25
- return;
26
- }
27
- await handleFileImport(fileFlag, sourceFlag, creds);
28
- return;
29
- }
30
- // Interactive mode
31
- const sources = detectImportSources();
32
- if (sources.length === 0 && !fileFlag) {
33
- console.log(pc.dim(' No local AI history detected.\n'));
34
- console.log(' To import from a file:');
35
- console.log(pc.cyan(' getverbal import --source=claude --file=conversations.json'));
36
- console.log(pc.cyan(' getverbal import --source=chatgpt --file=conversations.json'));
37
- return;
38
- }
39
- // Show detected sources
40
- console.log(' Detected sources:');
41
- const options = [];
42
- sources.forEach((s, i) => {
43
- const idx = i + 1;
44
- console.log(` ${pc.bold(`[${idx}]`)} ${s.label}`);
45
- console.log(` → ${s.count} sessions found`);
46
- options.push({ index: idx, source: s, label: s.label });
47
- });
48
- const fileIdx = sources.length + 1;
49
- console.log(` ${pc.bold(`[${fileIdx}]`)} Import from file`);
50
- console.log(` → Provide a Claude or ChatGPT JSON export`);
51
- options.push({ index: fileIdx, source: null, label: 'Import from file' });
52
- console.log();
53
- const answer = await prompt(` Select sources (comma-separated): `);
54
- const selected = answer
55
- .split(',')
56
- .map((s) => parseInt(s.trim(), 10))
57
- .filter((n) => !isNaN(n));
58
- for (const idx of selected) {
59
- const opt = options.find((o) => o.index === idx);
60
- if (!opt)
61
- continue;
62
- if (opt.source) {
63
- await handleLocalImport(opt.source, creds);
64
- }
65
- else {
66
- const filePath = await prompt(' Path to export file: ');
67
- const sourceType = await prompt(' Source type (claude/chatgpt): ');
68
- if (sourceType === 'claude' || sourceType === 'chatgpt') {
69
- await handleFileImport(filePath.trim(), sourceType, creds);
70
- }
71
- else {
72
- console.error(pc.red(' Unknown source type. Use "claude" or "chatgpt".'));
73
- }
74
- }
75
- }
76
- }
77
- async function handleLocalImport(source, creds) {
78
- console.log(`\n Importing ${source.id}...`);
79
- const { syncFromTokscale } = await import('../agent-hooks/tokscale.js');
80
- const stateDir = join(homedir(), '.config', 'getverbal');
81
- const platform = source.id === 'claude-code' ? 'claude' : 'codex';
82
- const result = await syncFromTokscale({
83
- apiKey: creds.api_key,
84
- ingestUrl: creds.ingest_url,
85
- batchSize: 100,
86
- flushIntervalMs: 5000,
87
- httpTimeoutMs: 30000,
88
- stateDir,
89
- }, {
90
- platforms: [platform],
91
- });
92
- console.log(pc.green(` ✓ ${result.events} events imported from ${source.id}`));
93
- }
94
- async function handleFileImport(filePath, source, creds) {
95
- if (!existsSync(filePath)) {
96
- console.error(pc.red(` File not found: ${filePath}`));
97
- process.exitCode = 1;
98
- return;
99
- }
100
- console.log(` Importing ${source} export from ${filePath}...`);
101
- const result = await uploadExportFile(filePath, source, creds);
102
- if (result.success) {
103
- console.log(pc.green(` ✓ ${result.eventsCreated} events imported`));
104
- }
105
- else {
106
- console.error(pc.red(` Import failed: ${result.error}`));
107
- process.exitCode = 1;
108
- }
109
- }
110
- function getFlagValue(args, flag) {
111
- // Support both --flag=value and --flag value forms
112
- const eqEntry = args.find((a) => a.startsWith(`${flag}=`));
113
- if (eqEntry)
114
- return eqEntry.slice(flag.length + 1);
115
- const idx = args.indexOf(flag);
116
- if (idx === -1)
117
- return undefined;
118
- return args[idx + 1];
119
- }
120
- function prompt(question) {
121
- const rl = createInterface({ input: process.stdin, output: process.stdout });
122
- return new Promise((resolve) => {
123
- rl.question(question, (answer) => {
124
- rl.close();
125
- resolve(answer);
126
- });
127
- });
128
- }
129
- //# sourceMappingURL=import.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function runInit(): Promise<void>;
2
- //# sourceMappingURL=init.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAuGA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAqN7C"}