@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.
- package/dist/cli.js +18760 -1833
- package/package.json +2 -1
- package/dist/agent-hooks/claude.d.ts +0 -10
- package/dist/agent-hooks/claude.d.ts.map +0 -1
- package/dist/agent-hooks/claude.js +0 -218
- package/dist/agent-hooks/claude.js.map +0 -1
- package/dist/agent-hooks/cli.d.ts +0 -2
- package/dist/agent-hooks/cli.d.ts.map +0 -1
- package/dist/agent-hooks/cli.js +0 -271
- package/dist/agent-hooks/cli.js.map +0 -1
- package/dist/agent-hooks/codex.d.ts +0 -9
- package/dist/agent-hooks/codex.d.ts.map +0 -1
- package/dist/agent-hooks/codex.js +0 -349
- package/dist/agent-hooks/codex.js.map +0 -1
- package/dist/agent-hooks/config.d.ts +0 -32
- package/dist/agent-hooks/config.d.ts.map +0 -1
- package/dist/agent-hooks/config.js +0 -176
- package/dist/agent-hooks/config.js.map +0 -1
- package/dist/agent-hooks/ingest.d.ts +0 -4
- package/dist/agent-hooks/ingest.d.ts.map +0 -1
- package/dist/agent-hooks/ingest.js +0 -22
- package/dist/agent-hooks/ingest.js.map +0 -1
- package/dist/agent-hooks/launchagent.d.ts +0 -7
- package/dist/agent-hooks/launchagent.d.ts.map +0 -1
- package/dist/agent-hooks/launchagent.js +0 -51
- package/dist/agent-hooks/launchagent.js.map +0 -1
- package/dist/agent-hooks/runtime-context.d.ts +0 -20
- package/dist/agent-hooks/runtime-context.d.ts.map +0 -1
- package/dist/agent-hooks/runtime-context.js +0 -90
- package/dist/agent-hooks/runtime-context.js.map +0 -1
- package/dist/agent-hooks/state.d.ts +0 -26
- package/dist/agent-hooks/state.d.ts.map +0 -1
- package/dist/agent-hooks/state.js +0 -67
- package/dist/agent-hooks/state.js.map +0 -1
- package/dist/agent-hooks/tokscale.d.ts +0 -70
- package/dist/agent-hooks/tokscale.d.ts.map +0 -1
- package/dist/agent-hooks/tokscale.js +0 -142
- package/dist/agent-hooks/tokscale.js.map +0 -1
- package/dist/agent-hooks/tool-extraction.d.ts +0 -7
- package/dist/agent-hooks/tool-extraction.d.ts.map +0 -1
- package/dist/agent-hooks/tool-extraction.js +0 -100
- package/dist/agent-hooks/tool-extraction.js.map +0 -1
- package/dist/agent-hooks/trace.d.ts +0 -17
- package/dist/agent-hooks/trace.d.ts.map +0 -1
- package/dist/agent-hooks/trace.js +0 -25
- package/dist/agent-hooks/trace.js.map +0 -1
- package/dist/auth/browser-auth.d.ts +0 -6
- package/dist/auth/browser-auth.d.ts.map +0 -1
- package/dist/auth/browser-auth.js +0 -202
- package/dist/auth/browser-auth.js.map +0 -1
- package/dist/auth/credentials.d.ts +0 -6
- package/dist/auth/credentials.d.ts.map +0 -1
- package/dist/auth/credentials.js +0 -78
- package/dist/auth/credentials.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -2
- package/dist/commands/dashboard.d.ts.map +0 -1
- package/dist/commands/dashboard.js +0 -19
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/hooks.d.ts +0 -2
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js +0 -6
- package/dist/commands/hooks.js.map +0 -1
- package/dist/commands/import.d.ts +0 -2
- package/dist/commands/import.d.ts.map +0 -1
- package/dist/commands/import.js +0 -129
- package/dist/commands/import.js.map +0 -1
- package/dist/commands/init.d.ts +0 -2
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -262
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -2
- package/dist/commands/logout.d.ts.map +0 -1
- package/dist/commands/logout.js +0 -17
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/mcp-serve.d.ts +0 -2
- package/dist/commands/mcp-serve.d.ts.map +0 -1
- package/dist/commands/mcp-serve.js +0 -7
- package/dist/commands/mcp-serve.js.map +0 -1
- package/dist/commands/status.d.ts +0 -2
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -43
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/uninstall.d.ts +0 -2
- package/dist/commands/uninstall.d.ts.map +0 -1
- package/dist/commands/uninstall.js +0 -43
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/update.d.ts +0 -2
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -58
- package/dist/commands/update.js.map +0 -1
- package/dist/configure/claude-code.d.ts +0 -7
- package/dist/configure/claude-code.d.ts.map +0 -1
- package/dist/configure/claude-code.js +0 -11
- package/dist/configure/claude-code.js.map +0 -1
- package/dist/configure/claude-desktop.d.ts +0 -8
- package/dist/configure/claude-desktop.d.ts.map +0 -1
- package/dist/configure/claude-desktop.js +0 -28
- package/dist/configure/claude-desktop.js.map +0 -1
- package/dist/configure/codex.d.ts +0 -7
- package/dist/configure/codex.d.ts.map +0 -1
- package/dist/configure/codex.js +0 -12
- package/dist/configure/codex.js.map +0 -1
- package/dist/configure/cursor.d.ts +0 -7
- package/dist/configure/cursor.d.ts.map +0 -1
- package/dist/configure/cursor.js +0 -12
- package/dist/configure/cursor.js.map +0 -1
- package/dist/configure/index.d.ts +0 -34
- package/dist/configure/index.d.ts.map +0 -1
- package/dist/configure/index.js +0 -153
- package/dist/configure/index.js.map +0 -1
- package/dist/detect/claude-code.d.ts +0 -3
- package/dist/detect/claude-code.d.ts.map +0 -1
- package/dist/detect/claude-code.js +0 -82
- package/dist/detect/claude-code.js.map +0 -1
- package/dist/detect/claude-desktop.d.ts +0 -3
- package/dist/detect/claude-desktop.d.ts.map +0 -1
- package/dist/detect/claude-desktop.js +0 -89
- package/dist/detect/claude-desktop.js.map +0 -1
- package/dist/detect/codex.d.ts +0 -3
- package/dist/detect/codex.d.ts.map +0 -1
- package/dist/detect/codex.js +0 -64
- package/dist/detect/codex.js.map +0 -1
- package/dist/detect/cursor.d.ts +0 -3
- package/dist/detect/cursor.d.ts.map +0 -1
- package/dist/detect/cursor.js +0 -81
- package/dist/detect/cursor.js.map +0 -1
- package/dist/detect/index.d.ts +0 -3
- package/dist/detect/index.d.ts.map +0 -1
- package/dist/detect/index.js +0 -28
- package/dist/detect/index.js.map +0 -1
- package/dist/import/file-upload.d.ts +0 -10
- package/dist/import/file-upload.d.ts.map +0 -1
- package/dist/import/file-upload.js +0 -37
- package/dist/import/file-upload.js.map +0 -1
- package/dist/import/index.d.ts +0 -11
- package/dist/import/index.d.ts.map +0 -1
- package/dist/import/index.js +0 -51
- package/dist/import/index.js.map +0 -1
- package/dist/mcp/exports.d.ts +0 -13
- package/dist/mcp/exports.d.ts.map +0 -1
- package/dist/mcp/exports.js +0 -13
- package/dist/mcp/exports.js.map +0 -1
- package/dist/mcp/git-context.d.ts +0 -17
- package/dist/mcp/git-context.d.ts.map +0 -1
- package/dist/mcp/git-context.js +0 -72
- package/dist/mcp/git-context.js.map +0 -1
- package/dist/mcp/hooks/anthropic.d.ts +0 -31
- package/dist/mcp/hooks/anthropic.d.ts.map +0 -1
- package/dist/mcp/hooks/anthropic.js +0 -137
- package/dist/mcp/hooks/anthropic.js.map +0 -1
- package/dist/mcp/hooks/google.d.ts +0 -53
- package/dist/mcp/hooks/google.d.ts.map +0 -1
- package/dist/mcp/hooks/google.js +0 -161
- package/dist/mcp/hooks/google.js.map +0 -1
- package/dist/mcp/hooks/index.d.ts +0 -9
- package/dist/mcp/hooks/index.d.ts.map +0 -1
- package/dist/mcp/hooks/index.js +0 -7
- package/dist/mcp/hooks/index.js.map +0 -1
- package/dist/mcp/hooks/openai.d.ts +0 -59
- package/dist/mcp/hooks/openai.d.ts.map +0 -1
- package/dist/mcp/hooks/openai.js +0 -158
- package/dist/mcp/hooks/openai.js.map +0 -1
- package/dist/mcp/hooks/types.d.ts +0 -8
- package/dist/mcp/hooks/types.d.ts.map +0 -1
- package/dist/mcp/hooks/types.js +0 -5
- package/dist/mcp/hooks/types.js.map +0 -1
- package/dist/mcp/ingestor.d.ts +0 -23
- package/dist/mcp/ingestor.d.ts.map +0 -1
- package/dist/mcp/ingestor.js +0 -310
- package/dist/mcp/ingestor.js.map +0 -1
- package/dist/mcp/pricing.d.ts +0 -19
- package/dist/mcp/pricing.d.ts.map +0 -1
- package/dist/mcp/pricing.js +0 -130
- package/dist/mcp/pricing.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -10
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -689
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/session-tracker.d.ts +0 -52
- package/dist/mcp/session-tracker.d.ts.map +0 -1
- package/dist/mcp/session-tracker.js +0 -186
- package/dist/mcp/session-tracker.js.map +0 -1
- package/dist/mcp/tools/analyze-spending-trend.d.ts +0 -10
- package/dist/mcp/tools/analyze-spending-trend.d.ts.map +0 -1
- package/dist/mcp/tools/analyze-spending-trend.js +0 -126
- package/dist/mcp/tools/analyze-spending-trend.js.map +0 -1
- package/dist/mcp/tools/get-budget-status.d.ts +0 -9
- package/dist/mcp/tools/get-budget-status.d.ts.map +0 -1
- package/dist/mcp/tools/get-budget-status.js +0 -59
- package/dist/mcp/tools/get-budget-status.js.map +0 -1
- package/dist/mcp/tools/get-cost-breakdown.d.ts +0 -10
- package/dist/mcp/tools/get-cost-breakdown.d.ts.map +0 -1
- package/dist/mcp/tools/get-cost-breakdown.js +0 -52
- package/dist/mcp/tools/get-cost-breakdown.js.map +0 -1
- package/dist/mcp/tools/get-model-efficiency.d.ts +0 -9
- package/dist/mcp/tools/get-model-efficiency.d.ts.map +0 -1
- package/dist/mcp/tools/get-model-efficiency.js +0 -137
- package/dist/mcp/tools/get-model-efficiency.js.map +0 -1
- package/dist/mcp/tools/get-recent-prompts.d.ts +0 -13
- package/dist/mcp/tools/get-recent-prompts.d.ts.map +0 -1
- package/dist/mcp/tools/get-recent-prompts.js +0 -56
- package/dist/mcp/tools/get-recent-prompts.js.map +0 -1
- package/dist/mcp/tools/get-roi-metrics.d.ts +0 -9
- package/dist/mcp/tools/get-roi-metrics.d.ts.map +0 -1
- package/dist/mcp/tools/get-roi-metrics.js +0 -84
- package/dist/mcp/tools/get-roi-metrics.js.map +0 -1
- package/dist/mcp/tools/get-usage-summary.d.ts +0 -10
- package/dist/mcp/tools/get-usage-summary.d.ts.map +0 -1
- package/dist/mcp/tools/get-usage-summary.js +0 -47
- package/dist/mcp/tools/get-usage-summary.js.map +0 -1
- package/dist/mcp/tools/index.d.ts +0 -221
- package/dist/mcp/tools/index.d.ts.map +0 -1
- package/dist/mcp/tools/index.js +0 -161
- package/dist/mcp/tools/index.js.map +0 -1
- package/dist/mcp/tools/list-projects.d.ts +0 -6
- package/dist/mcp/tools/list-projects.d.ts.map +0 -1
- package/dist/mcp/tools/list-projects.js +0 -43
- package/dist/mcp/tools/list-projects.js.map +0 -1
- package/dist/mcp/tools/optimize-prompt.d.ts +0 -44
- package/dist/mcp/tools/optimize-prompt.d.ts.map +0 -1
- package/dist/mcp/tools/optimize-prompt.js +0 -95
- package/dist/mcp/tools/optimize-prompt.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -118
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js +0 -5
- package/dist/mcp/types.js.map +0 -1
- package/dist/types.d.ts +0 -18
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/update-check/check.d.ts +0 -6
- package/dist/update-check/check.d.ts.map +0 -1
- package/dist/update-check/check.js +0 -64
- package/dist/update-check/check.js.map +0 -1
- package/dist/update-check/notify.d.ts +0 -6
- package/dist/update-check/notify.d.ts.map +0 -1
- package/dist/update-check/notify.js +0 -40
- package/dist/update-check/notify.js.map +0 -1
- package/dist/verify.d.ts +0 -7
- package/dist/verify.d.ts.map +0 -1
- package/dist/verify.js +0 -40
- package/dist/verify.js.map +0 -1
- package/dist/version.d.ts +0 -9
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -21
- package/dist/version.js.map +0 -1
package/dist/commands/init.js
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
import pc from 'picocolors';
|
|
2
|
-
import { createInterface } from 'node:readline/promises';
|
|
3
|
-
import { execSync } from 'node:child_process';
|
|
4
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
5
|
-
import { join } from 'node:path';
|
|
6
|
-
import { homedir } from 'node:os';
|
|
7
|
-
import { VERSION } from '../version.js';
|
|
8
|
-
import { browserAuth } from '../auth/browser-auth.js';
|
|
9
|
-
import { readCredentials, writeCredentials } from '../auth/credentials.js';
|
|
10
|
-
import { detectAll } from '../detect/index.js';
|
|
11
|
-
import { configureAll } from '../configure/index.js';
|
|
12
|
-
import { verifyConnection } from '../verify.js';
|
|
13
|
-
// ---------------------------------------------------------------------------
|
|
14
|
-
// Helpers
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
async function confirm(rl, message, defaultYes) {
|
|
17
|
-
const hint = defaultYes ? '(Y/n)' : '(y/N)';
|
|
18
|
-
const answer = await rl.question(`${message} ${hint} `);
|
|
19
|
-
const trimmed = answer.trim().toLowerCase();
|
|
20
|
-
if (trimmed === '')
|
|
21
|
-
return defaultYes;
|
|
22
|
-
return trimmed === 'y' || trimmed === 'yes';
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Best-effort check — only matches exact lines, not glob patterns like *.json
|
|
26
|
-
* or **\/.mcp.json. A false negative (missing the pattern) just means we skip
|
|
27
|
-
* the "already gitignored" hint, which is acceptable.
|
|
28
|
-
*/
|
|
29
|
-
function isInGitignore(filename) {
|
|
30
|
-
const gitignorePath = join(process.cwd(), '.gitignore');
|
|
31
|
-
if (!existsSync(gitignorePath))
|
|
32
|
-
return false;
|
|
33
|
-
try {
|
|
34
|
-
const content = readFileSync(gitignorePath, 'utf-8');
|
|
35
|
-
return content.split('\n').some((line) => line.trim() === filename);
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function toolDisplayName(tool) {
|
|
42
|
-
switch (tool) {
|
|
43
|
-
case 'claude-code':
|
|
44
|
-
return 'Claude Code';
|
|
45
|
-
case 'claude-desktop':
|
|
46
|
-
return 'Claude Desktop';
|
|
47
|
-
case 'cursor':
|
|
48
|
-
return 'Cursor';
|
|
49
|
-
case 'codex':
|
|
50
|
-
return 'Codex';
|
|
51
|
-
default: {
|
|
52
|
-
const _exhaustive = tool;
|
|
53
|
-
return String(_exhaustive);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
// ---------------------------------------------------------------------------
|
|
58
|
-
// Global install helpers
|
|
59
|
-
// ---------------------------------------------------------------------------
|
|
60
|
-
function isGloballyInstalled() {
|
|
61
|
-
try {
|
|
62
|
-
const which = execSync('which getverbal', { encoding: 'utf-8' }).trim();
|
|
63
|
-
// If running via npx, the resolved path includes npx or the npm _npx cache
|
|
64
|
-
return !which.includes('npx') && !which.includes('.npm/_npx');
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
async function promoteToGlobal(rl) {
|
|
71
|
-
if (isGloballyInstalled())
|
|
72
|
-
return true;
|
|
73
|
-
const answer = await rl.question(' Install globally for best performance? [Y/n] ');
|
|
74
|
-
if (answer.trim().toLowerCase() === 'n') {
|
|
75
|
-
console.log(pc.dim(' Skipping global install. Will use npx fallback.'));
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
console.log(`\n ${pc.dim('ℹ')} Installing globally...`);
|
|
79
|
-
try {
|
|
80
|
-
execSync(`npm install -g getverbal@${VERSION}`, { stdio: 'inherit' });
|
|
81
|
-
console.log(pc.green(` ✓ Installed getverbal v${VERSION} globally`));
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
console.log(pc.yellow(' ⚠ Could not install globally. Using npx fallback.'));
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
// ---------------------------------------------------------------------------
|
|
90
|
-
// Main command
|
|
91
|
-
// ---------------------------------------------------------------------------
|
|
92
|
-
export async function runInit() {
|
|
93
|
-
// ── 1. Banner ─────────────────────────────────────────────────────────────
|
|
94
|
-
console.log();
|
|
95
|
-
console.log(pc.bold('Verbal — AI Spend Tracker'));
|
|
96
|
-
console.log();
|
|
97
|
-
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
98
|
-
// ── 2. Promote to global install (before auth, best effort) ───────────────
|
|
99
|
-
const useGlobal = await promoteToGlobal(rl);
|
|
100
|
-
let credentials = null;
|
|
101
|
-
try {
|
|
102
|
-
// ── 3. Check for existing credentials ──────────────────────────────────
|
|
103
|
-
const existing = await readCredentials();
|
|
104
|
-
if (existing !== null) {
|
|
105
|
-
console.log(pc.dim(`Already authenticated as ${pc.bold(existing.user_email)}.`));
|
|
106
|
-
const reauth = await confirm(rl, 'Re-authenticate?', false);
|
|
107
|
-
if (!reauth) {
|
|
108
|
-
credentials = existing;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// ── 4. Browser auth (if not reusing existing) ──────────────────────────
|
|
112
|
-
if (credentials === null) {
|
|
113
|
-
console.log(pc.cyan('Opening browser to sign up or log in...'));
|
|
114
|
-
console.log(pc.dim('If your browser does not open, visit:'), pc.underline('https://www.getverbal.ai/cli/auth'));
|
|
115
|
-
console.log();
|
|
116
|
-
try {
|
|
117
|
-
const creds = await browserAuth({ apiUrl: 'https://www.getverbal.ai' });
|
|
118
|
-
await writeCredentials(creds);
|
|
119
|
-
console.log(pc.green(`✓ Authenticated as ${pc.bold(creds.user_email)}`));
|
|
120
|
-
console.log();
|
|
121
|
-
credentials = creds;
|
|
122
|
-
}
|
|
123
|
-
catch (err) {
|
|
124
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
125
|
-
console.error(pc.red(`✗ Authentication failed: ${message}`));
|
|
126
|
-
process.exit(1);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// ── 5. Detect tools ────────────────────────────────────────────────────
|
|
130
|
-
console.log(pc.bold('Detecting AI tools...'));
|
|
131
|
-
const detections = await detectAll();
|
|
132
|
-
for (const d of detections) {
|
|
133
|
-
const name = toolDisplayName(d.tool);
|
|
134
|
-
if (d.detected) {
|
|
135
|
-
console.log(pc.green(` ✓ ${name}`) + pc.dim(` (${d.details})`));
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
console.log(pc.dim(` ✗ ${name} (not found)`));
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
console.log();
|
|
142
|
-
const detected = detections.filter((d) => d.detected);
|
|
143
|
-
if (detected.length === 0) {
|
|
144
|
-
console.log(pc.yellow('⚠ No supported AI tools detected. Skipping configuration.'));
|
|
145
|
-
console.log();
|
|
146
|
-
}
|
|
147
|
-
// ── 6. Per-tool confirmation ────────────────────────────────────────────
|
|
148
|
-
const confirmed = [];
|
|
149
|
-
for (const d of detected) {
|
|
150
|
-
const name = toolDisplayName(d.tool);
|
|
151
|
-
if (d.existingConfig) {
|
|
152
|
-
console.log(pc.dim(` ${name} is already configured.`));
|
|
153
|
-
const overwrite = await confirm(rl, ` Overwrite ${name} config?`, false);
|
|
154
|
-
if (overwrite) {
|
|
155
|
-
confirmed.push(d);
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
console.log(pc.dim(` Skipping ${name}.`));
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
const configure = await confirm(rl, ` Configure ${name}?`, true);
|
|
163
|
-
if (configure) {
|
|
164
|
-
confirmed.push(d);
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
console.log(pc.dim(` Skipping ${name}.`));
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
if (confirmed.length > 0) {
|
|
172
|
-
console.log();
|
|
173
|
-
}
|
|
174
|
-
// ── 7. Configure confirmed tools ───────────────────────────────────────
|
|
175
|
-
if (confirmed.length > 0) {
|
|
176
|
-
console.log(pc.bold('Configuring tools...'));
|
|
177
|
-
const results = await configureAll(confirmed, credentials, useGlobal);
|
|
178
|
-
for (const r of results) {
|
|
179
|
-
const d = confirmed.find((det) => det.tool === r.tool);
|
|
180
|
-
const name = toolDisplayName(r.tool);
|
|
181
|
-
const configPath = d?.configPath ?? '';
|
|
182
|
-
if (r.success) {
|
|
183
|
-
console.log(pc.green(` ✓ ${name}`) + (configPath ? pc.dim(` ${configPath}`) : ''));
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
console.log(pc.red(` ✗ ${name}: ${r.error ?? 'unknown error'}`));
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
console.log();
|
|
190
|
-
}
|
|
191
|
-
// ── 8. Verify connection ───────────────────────────────────────────────
|
|
192
|
-
process.stdout.write(pc.dim('Verifying connection...'));
|
|
193
|
-
try {
|
|
194
|
-
await verifyConnection(credentials);
|
|
195
|
-
console.log(' ' + pc.green('✓ test event received'));
|
|
196
|
-
}
|
|
197
|
-
catch (err) {
|
|
198
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
199
|
-
console.log();
|
|
200
|
-
console.log(pc.yellow(`⚠ Verification warning: ${message}`));
|
|
201
|
-
}
|
|
202
|
-
console.log();
|
|
203
|
-
// ── 9. Post-install warnings ───────────────────────────────────────────
|
|
204
|
-
const mcpJsonPath = join(process.cwd(), '.mcp.json');
|
|
205
|
-
if (existsSync(mcpJsonPath) && !isInGitignore('.mcp.json')) {
|
|
206
|
-
console.log(pc.yellow('⚠ .mcp.json contains your API key. Add it to .gitignore to avoid leaking credentials:'));
|
|
207
|
-
console.log(pc.dim(' echo ".mcp.json" >> .gitignore'));
|
|
208
|
-
console.log();
|
|
209
|
-
}
|
|
210
|
-
const needsRestart = confirmed.some((d) => d.tool === 'claude-desktop' || d.tool === 'cursor');
|
|
211
|
-
if (needsRestart) {
|
|
212
|
-
console.log(pc.yellow('⚠ Restart Claude Desktop and Cursor to activate Verbal.'));
|
|
213
|
-
console.log();
|
|
214
|
-
}
|
|
215
|
-
// ── 10. Offer to import existing history ──────────────────────────────
|
|
216
|
-
const { detectImportSources } = await import('../import/index.js');
|
|
217
|
-
const importSources = detectImportSources();
|
|
218
|
-
if (importSources.length > 0) {
|
|
219
|
-
console.log(' Import existing history?');
|
|
220
|
-
importSources.forEach((s, i) => {
|
|
221
|
-
console.log(` ${pc.bold(`[${i + 1}]`)} ${s.label} — ${s.count} sessions found`);
|
|
222
|
-
});
|
|
223
|
-
console.log(` ${pc.bold(`[${importSources.length + 1}]`)} Skip for now`);
|
|
224
|
-
const importAnswer = await rl.question(`\n Select: `);
|
|
225
|
-
const selected = parseInt(importAnswer.trim(), 10);
|
|
226
|
-
if (selected >= 1 && selected <= importSources.length) {
|
|
227
|
-
const source = importSources[selected - 1];
|
|
228
|
-
console.log(`\n Importing ${source.id}...`);
|
|
229
|
-
try {
|
|
230
|
-
const { syncFromTokscale } = await import('../agent-hooks/tokscale.js');
|
|
231
|
-
const stateDir = join(homedir(), '.config', 'getverbal');
|
|
232
|
-
const platform = source.id === 'claude-code' ? 'claude' : 'codex';
|
|
233
|
-
const result = await syncFromTokscale({
|
|
234
|
-
apiKey: credentials.api_key,
|
|
235
|
-
ingestUrl: credentials.ingest_url,
|
|
236
|
-
batchSize: 100,
|
|
237
|
-
flushIntervalMs: 5000,
|
|
238
|
-
httpTimeoutMs: 30000,
|
|
239
|
-
stateDir,
|
|
240
|
-
}, {
|
|
241
|
-
platforms: [platform],
|
|
242
|
-
});
|
|
243
|
-
console.log(pc.green(` ✓ ${result.events} sessions imported`));
|
|
244
|
-
}
|
|
245
|
-
catch (importErr) {
|
|
246
|
-
const message = importErr instanceof Error ? importErr.message : String(importErr);
|
|
247
|
-
console.log(pc.yellow(` ⚠ Import skipped: ${message}`));
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
console.log();
|
|
251
|
-
}
|
|
252
|
-
// ── 11. Done ───────────────────────────────────────────────────────────
|
|
253
|
-
console.log(pc.bold('Done!') +
|
|
254
|
-
pc.dim(' Dashboard → ') +
|
|
255
|
-
pc.cyan('https://www.getverbal.ai/dashboard'));
|
|
256
|
-
console.log();
|
|
257
|
-
}
|
|
258
|
-
finally {
|
|
259
|
-
rl.close();
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAGA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAe/C"}
|
package/dist/commands/logout.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import pc from 'picocolors';
|
|
2
|
-
import { readCredentials, clearCredentials } from '../auth/credentials.js';
|
|
3
|
-
export async function runLogout() {
|
|
4
|
-
// 1. Check if logged in
|
|
5
|
-
const credentials = await readCredentials();
|
|
6
|
-
if (!credentials) {
|
|
7
|
-
console.log(pc.dim('Not currently logged in.'));
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
// 2. Log out
|
|
11
|
-
console.log(`Logging out ${pc.bold(credentials.user_email)}...`);
|
|
12
|
-
await clearCredentials();
|
|
13
|
-
// 3. Confirmation
|
|
14
|
-
console.log(pc.green('✓') + ' Credentials removed. Your AI tool configurations are still in place.');
|
|
15
|
-
console.log(pc.dim('Run `getverbal uninstall` to also remove tool configurations.'));
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=logout.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,wBAAwB;IACxB,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,aAAa;IACb,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,gBAAgB,EAAE,CAAC;IAEzB,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,uEAAuE,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;AACvF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-serve.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-serve.ts"],"names":[],"mappings":"AACA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAIjD"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Thin wrapper that launches the MCP server (invoked by AI tools via .mcp.json)
|
|
2
|
-
export async function runMcpServe() {
|
|
3
|
-
// Import dynamically to avoid loading MCP SDK for CLI commands
|
|
4
|
-
const { startMcpServer } = await import('../mcp/server.js');
|
|
5
|
-
await startMcpServer();
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=mcp-serve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-serve.js","sourceRoot":"","sources":["../../src/commands/mcp-serve.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,+DAA+D;IAC/D,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAKA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAwC/C"}
|
package/dist/commands/status.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import pc from 'picocolors';
|
|
2
|
-
import { readCredentials } from '../auth/credentials.js';
|
|
3
|
-
import { detectAll } from '../detect/index.js';
|
|
4
|
-
import { verifyConnection } from '../verify.js';
|
|
5
|
-
export async function runStatus() {
|
|
6
|
-
// 1. Read credentials
|
|
7
|
-
const credentials = await readCredentials();
|
|
8
|
-
if (!credentials) {
|
|
9
|
-
console.log(pc.yellow('Not authenticated. Run `getverbal init` to get started.'));
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
// 2. Print authenticated identity
|
|
13
|
-
console.log(pc.green('✓') + ` Authenticated as ${pc.bold(credentials.user_email)} (org: ${credentials.org_id})`);
|
|
14
|
-
console.log();
|
|
15
|
-
// 3. Detect tools
|
|
16
|
-
const detections = await detectAll();
|
|
17
|
-
const configured = detections.filter((d) => d.detected && d.existingConfig);
|
|
18
|
-
const detected = detections.filter((d) => d.detected && !d.existingConfig);
|
|
19
|
-
if (configured.length > 0 || detected.length > 0) {
|
|
20
|
-
console.log(pc.bold('AI Tools:'));
|
|
21
|
-
for (const d of configured) {
|
|
22
|
-
console.log(` ${pc.green('✓')} ${d.tool} ${pc.dim('— configured')} ${pc.dim(`(${d.configPath})`)}`);
|
|
23
|
-
}
|
|
24
|
-
for (const d of detected) {
|
|
25
|
-
console.log(` ${pc.dim('○')} ${d.tool} ${pc.dim('— detected but not configured')}`);
|
|
26
|
-
}
|
|
27
|
-
console.log();
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
console.log(pc.dim('No AI tools configured. Run `getverbal init` to configure them.'));
|
|
31
|
-
console.log();
|
|
32
|
-
}
|
|
33
|
-
// 4. Verify connection — failure is a warning, not fatal
|
|
34
|
-
try {
|
|
35
|
-
await verifyConnection(credentials);
|
|
36
|
-
console.log(pc.green('✓') + ' API connection verified');
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
40
|
-
console.log(pc.yellow('⚠') + ` Could not verify connection: ${message}`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,sBAAsB;IACtB,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;QAClF,OAAO;IACT,CAAC;IAED,kCAAkC;IAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,qBAAqB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACjH,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,kBAAkB;IAClB,MAAM,UAAU,GAAG,MAAM,SAAS,EAAE,CAAC;IAErC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAE3E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,iCAAiC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAMA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAyClD"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import pc from 'picocolors';
|
|
2
|
-
import { createInterface } from 'node:readline/promises';
|
|
3
|
-
import { clearCredentials } from '../auth/credentials.js';
|
|
4
|
-
import { detectAll } from '../detect/index.js';
|
|
5
|
-
import { removeVerbalConfig } from '../configure/index.js';
|
|
6
|
-
export async function runUninstall() {
|
|
7
|
-
// 1. Confirmation prompt — default NO
|
|
8
|
-
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
9
|
-
let answer;
|
|
10
|
-
try {
|
|
11
|
-
answer = await rl.question(pc.yellow('⚠') +
|
|
12
|
-
' This will remove Verbal from all configured AI tools and delete your credentials. Continue? (y/N) ');
|
|
13
|
-
}
|
|
14
|
-
finally {
|
|
15
|
-
rl.close();
|
|
16
|
-
}
|
|
17
|
-
if (answer.trim().toLowerCase() !== 'y') {
|
|
18
|
-
console.log('Uninstall cancelled.');
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
// 2. Detect tools
|
|
22
|
-
const detections = await detectAll();
|
|
23
|
-
// 3. Remove config from each detected+configured tool
|
|
24
|
-
for (const detection of detections) {
|
|
25
|
-
if (!detection.detected || !detection.existingConfig) {
|
|
26
|
-
continue;
|
|
27
|
-
}
|
|
28
|
-
try {
|
|
29
|
-
removeVerbalConfig(detection.configPath);
|
|
30
|
-
console.log(pc.green('✓') + ` Removed from ${detection.tool} ${pc.dim(`(${detection.configPath})`)}`);
|
|
31
|
-
}
|
|
32
|
-
catch (err) {
|
|
33
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
34
|
-
console.log(pc.red('✗') + ` Failed to remove from ${detection.tool}: ${message}`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
// 4. Clear credentials
|
|
38
|
-
await clearCredentials();
|
|
39
|
-
console.log(pc.green('✓') + ' Credentials removed');
|
|
40
|
-
// 5. Done
|
|
41
|
-
console.log(pc.green('✓') + ' Verbal has been uninstalled. Restart your AI tools to complete removal.');
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=uninstall.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,sCAAsC;IACtC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CACxB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;YACZ,qGAAqG,CACxG,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,kBAAkB;IAClB,MAAM,UAAU,GAAG,MAAM,SAAS,EAAE,CAAC;IAErC,sDAAsD;IACtD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;YACrD,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,iBAAiB,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,0BAA0B,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,gBAAgB,EAAE,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAC;IAEpD,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,0EAA0E,CAAC,CAAC;AAC1G,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAKA,wBAAsB,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CrE"}
|
package/dist/commands/update.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { execSync } from 'node:child_process';
|
|
2
|
-
import pc from 'picocolors';
|
|
3
|
-
import { readCredentials } from '../auth/credentials.js';
|
|
4
|
-
import { compareSemver } from '../version.js';
|
|
5
|
-
export async function runUpdate(currentVersion) {
|
|
6
|
-
console.log(`\n ${pc.bold('Verbal')} — Update\n`);
|
|
7
|
-
// Fetch latest version (blocking — user explicitly asked)
|
|
8
|
-
const creds = await readCredentials();
|
|
9
|
-
const apiUrl = creds?.api_url || 'https://www.getverbal.ai';
|
|
10
|
-
let latest;
|
|
11
|
-
try {
|
|
12
|
-
const res = await fetch(`${apiUrl}/api/v1/cli/version`);
|
|
13
|
-
if (!res.ok)
|
|
14
|
-
throw new Error(`HTTP ${res.status}`);
|
|
15
|
-
const body = (await res.json());
|
|
16
|
-
latest = body.latest;
|
|
17
|
-
if (!/^\d+\.\d+\.\d+$/.test(latest)) {
|
|
18
|
-
console.error(pc.red(' Server returned an invalid version. Try again later.'));
|
|
19
|
-
process.exitCode = 1;
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
console.error(pc.red(' Failed to check for updates. Try again later.'));
|
|
25
|
-
process.exitCode = 1;
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (compareSemver(currentVersion, latest) >= 0) {
|
|
29
|
-
console.log(pc.green(` You're up to date! (v${currentVersion})`));
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
console.log(` ${pc.dim(currentVersion)} → ${pc.green(latest)}\n`);
|
|
33
|
-
// Detect package manager
|
|
34
|
-
const pm = detectPackageManager();
|
|
35
|
-
const installCmd = pm === 'bun' ? `bun install -g getverbal@${latest}` : `npm install -g getverbal@${latest}`;
|
|
36
|
-
console.log(` Running: ${pc.dim(installCmd)}`);
|
|
37
|
-
try {
|
|
38
|
-
execSync(installCmd, { stdio: 'inherit' });
|
|
39
|
-
console.log(pc.green(`\n Updated getverbal ${currentVersion} → ${latest}`));
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
console.error(pc.red(`\n Update failed. Try manually:`));
|
|
43
|
-
console.error(` ${pc.cyan(installCmd)}`);
|
|
44
|
-
process.exitCode = 1;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function detectPackageManager() {
|
|
48
|
-
try {
|
|
49
|
-
const which = execSync('which getverbal', { encoding: 'utf-8' }).trim();
|
|
50
|
-
if (which.includes('.bun/'))
|
|
51
|
-
return 'bun';
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
// getverbal not in PATH — default to npm
|
|
55
|
-
}
|
|
56
|
-
return 'npm';
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Credentials, DetectionResult } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Configures the Verbal MCP server in Claude Code by writing to
|
|
4
|
-
* `.mcp.json` in the current working directory.
|
|
5
|
-
*/
|
|
6
|
-
export declare function configureClaudeCode(_detection: DetectionResult, credentials: Credentials, billingType?: 'api' | 'subscription', useGlobal?: boolean): Promise<void>;
|
|
7
|
-
//# sourceMappingURL=claude-code.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/configure/claude-code.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGhE;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,eAAe,EAC3B,WAAW,EAAE,WAAW,EACxB,WAAW,CAAC,EAAE,KAAK,GAAG,cAAc,EACpC,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { join } from 'node:path';
|
|
2
|
-
import { mergeConfig } from './index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Configures the Verbal MCP server in Claude Code by writing to
|
|
5
|
-
* `.mcp.json` in the current working directory.
|
|
6
|
-
*/
|
|
7
|
-
export async function configureClaudeCode(_detection, credentials, billingType, useGlobal = false) {
|
|
8
|
-
const configPath = join(process.cwd(), '.mcp.json');
|
|
9
|
-
mergeConfig(configPath, credentials, billingType, useGlobal);
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=claude-code.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/configure/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAA2B,EAC3B,WAAwB,EACxB,WAAoC,EACpC,YAAqB,KAAK;IAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IACpD,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Credentials, DetectionResult } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Configures the Verbal MCP server in Claude Desktop.
|
|
4
|
-
* Writes to the platform-specific claude_desktop_config.json path.
|
|
5
|
-
* User must restart Claude Desktop for changes to take effect.
|
|
6
|
-
*/
|
|
7
|
-
export declare function configureClaudeDesktop(_detection: DetectionResult, credentials: Credentials, billingType?: 'api' | 'subscription', useGlobal?: boolean): Promise<void>;
|
|
8
|
-
//# sourceMappingURL=claude-desktop.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-desktop.d.ts","sourceRoot":"","sources":["../../src/configure/claude-desktop.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmBhE;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,eAAe,EAC3B,WAAW,EAAE,WAAW,EACxB,WAAW,CAAC,EAAE,KAAK,GAAG,cAAc,EACpC,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { homedir } from 'node:os';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { mergeConfig } from './index.js';
|
|
4
|
-
/**
|
|
5
|
-
* Returns the platform-specific path to claude_desktop_config.json.
|
|
6
|
-
* Matches the same logic used in the detect module and setup-wizard.ts.
|
|
7
|
-
*/
|
|
8
|
-
function getConfigPath() {
|
|
9
|
-
const platform = process.platform;
|
|
10
|
-
if (platform === 'darwin') {
|
|
11
|
-
return join(homedir(), 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
|
|
12
|
-
}
|
|
13
|
-
if (platform === 'win32') {
|
|
14
|
-
return join(process.env['APPDATA'] ?? homedir(), 'Claude', 'claude_desktop_config.json');
|
|
15
|
-
}
|
|
16
|
-
// Linux
|
|
17
|
-
return join(homedir(), '.config', 'claude', 'claude_desktop_config.json');
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Configures the Verbal MCP server in Claude Desktop.
|
|
21
|
-
* Writes to the platform-specific claude_desktop_config.json path.
|
|
22
|
-
* User must restart Claude Desktop for changes to take effect.
|
|
23
|
-
*/
|
|
24
|
-
export async function configureClaudeDesktop(_detection, credentials, billingType, useGlobal = false) {
|
|
25
|
-
const configPath = getConfigPath();
|
|
26
|
-
mergeConfig(configPath, credentials, billingType, useGlobal);
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=claude-desktop.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-desktop.js","sourceRoot":"","sources":["../../src/configure/claude-desktop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;GAGG;AACH,SAAS,aAAa;IACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,EAAE,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IAC3F,CAAC;IACD,QAAQ;IACR,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAA2B,EAC3B,WAAwB,EACxB,WAAoC,EACpC,YAAqB,KAAK;IAE1B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Credentials, DetectionResult } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Configures the Verbal MCP server in OpenAI Codex CLI.
|
|
4
|
-
* Writes to ~/.codex/config.json, preserving any existing MCP server entries.
|
|
5
|
-
*/
|
|
6
|
-
export declare function configureCodex(_detection: DetectionResult, credentials: Credentials, billingType?: 'api' | 'subscription', useGlobal?: boolean): Promise<void>;
|
|
7
|
-
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/configure/codex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGhE;;;GAGG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,eAAe,EAC3B,WAAW,EAAE,WAAW,EACxB,WAAW,CAAC,EAAE,KAAK,GAAG,cAAc,EACpC,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
package/dist/configure/codex.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { homedir } from 'node:os';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { mergeConfig } from './index.js';
|
|
4
|
-
/**
|
|
5
|
-
* Configures the Verbal MCP server in OpenAI Codex CLI.
|
|
6
|
-
* Writes to ~/.codex/config.json, preserving any existing MCP server entries.
|
|
7
|
-
*/
|
|
8
|
-
export async function configureCodex(_detection, credentials, billingType, useGlobal = false) {
|
|
9
|
-
const configPath = join(homedir(), '.codex', 'config.json');
|
|
10
|
-
mergeConfig(configPath, credentials, billingType, useGlobal);
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=codex.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/configure/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAA2B,EAC3B,WAAwB,EACxB,WAAoC,EACpC,YAAqB,KAAK;IAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC5D,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC/D,CAAC"}
|