@controlvector/cv-agent 1.6.0 → 1.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/bundle.cjs +244 -36
- package/dist/bundle.cjs.map +4 -4
- package/dist/commands/setup.d.ts +13 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +249 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cva setup — Unified onboarding command
|
|
3
|
+
*
|
|
4
|
+
* Walks user from zero to dispatching tasks in under 2 minutes:
|
|
5
|
+
* 1. Environment preflight (node, git, claude-code)
|
|
6
|
+
* 2. CV-Hub authentication (shared credentials)
|
|
7
|
+
* 3. Claude.ai MCP connector
|
|
8
|
+
* 4. Repository setup (git init, cv-git init, CLAUDE.md, CV-Hub remote)
|
|
9
|
+
* 5. Start agent daemon
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
export declare function setupCommand(): Command;
|
|
13
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmQpC,wBAAgB,YAAY,IAAI,OAAO,CAKtC"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* cva setup — Unified onboarding command
|
|
4
|
+
*
|
|
5
|
+
* Walks user from zero to dispatching tasks in under 2 minutes:
|
|
6
|
+
* 1. Environment preflight (node, git, claude-code)
|
|
7
|
+
* 2. CV-Hub authentication (shared credentials)
|
|
8
|
+
* 3. Claude.ai MCP connector
|
|
9
|
+
* 4. Repository setup (git init, cv-git init, CLAUDE.md, CV-Hub remote)
|
|
10
|
+
* 5. Start agent daemon
|
|
11
|
+
*/
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.setupCommand = setupCommand;
|
|
17
|
+
const commander_1 = require("commander");
|
|
18
|
+
const node_child_process_1 = require("node:child_process");
|
|
19
|
+
const node_fs_1 = require("node:fs");
|
|
20
|
+
const node_path_1 = require("node:path");
|
|
21
|
+
const node_os_1 = require("node:os");
|
|
22
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
23
|
+
const credentials_js_1 = require("../utils/credentials.js");
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Shared Credentials (same format as cv-git)
|
|
26
|
+
// ============================================================================
|
|
27
|
+
const SHARED_CRED_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), '.config', 'controlvector');
|
|
28
|
+
const SHARED_CRED_PATH = (0, node_path_1.join)(SHARED_CRED_DIR, 'credentials.json');
|
|
29
|
+
function readSharedCreds() {
|
|
30
|
+
try {
|
|
31
|
+
const data = JSON.parse((0, node_fs_1.readFileSync)(SHARED_CRED_PATH, 'utf-8'));
|
|
32
|
+
if (data.token && data.hub_url)
|
|
33
|
+
return data;
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function writeSharedCreds(creds) {
|
|
41
|
+
(0, node_fs_1.mkdirSync)(SHARED_CRED_DIR, { recursive: true });
|
|
42
|
+
(0, node_fs_1.writeFileSync)(SHARED_CRED_PATH, JSON.stringify(creds, null, 2) + '\n', { mode: 0o600 });
|
|
43
|
+
}
|
|
44
|
+
async function validateToken(hubUrl, token) {
|
|
45
|
+
try {
|
|
46
|
+
const controller = new AbortController();
|
|
47
|
+
const timeout = setTimeout(() => controller.abort(), 10_000);
|
|
48
|
+
const res = await fetch(`${hubUrl}/api/auth/me`, {
|
|
49
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
50
|
+
signal: controller.signal,
|
|
51
|
+
});
|
|
52
|
+
clearTimeout(timeout);
|
|
53
|
+
if (!res.ok)
|
|
54
|
+
return null;
|
|
55
|
+
const data = await res.json();
|
|
56
|
+
return data.user?.username || data.user?.email || 'unknown';
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// ============================================================================
|
|
63
|
+
// Preflight Checks
|
|
64
|
+
// ============================================================================
|
|
65
|
+
function checkBinary(cmd) {
|
|
66
|
+
try {
|
|
67
|
+
return (0, node_child_process_1.execSync)(`${cmd} 2>&1`, { encoding: 'utf8', timeout: 5000 }).trim().split('\n')[0];
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// ============================================================================
|
|
74
|
+
// Setup Command
|
|
75
|
+
// ============================================================================
|
|
76
|
+
async function runSetup() {
|
|
77
|
+
const hubUrl = 'https://api.hub.controlvector.io';
|
|
78
|
+
const appUrl = 'https://hub.controlvector.io';
|
|
79
|
+
console.log();
|
|
80
|
+
console.log(chalk_1.default.bold(' CV-Agent Setup'));
|
|
81
|
+
console.log();
|
|
82
|
+
// ── Step 1: Environment Preflight ──────────────────────────────────
|
|
83
|
+
console.log(' Checking environment...');
|
|
84
|
+
const nodeVersion = checkBinary('node --version');
|
|
85
|
+
const gitVersion = checkBinary('git --version');
|
|
86
|
+
const claudeVersion = checkBinary('claude --version');
|
|
87
|
+
console.log(` ${nodeVersion ? chalk_1.default.green('✓') : chalk_1.default.red('✗')} Node.js ${nodeVersion || '— not found'}`);
|
|
88
|
+
console.log(` ${gitVersion ? chalk_1.default.green('✓') : chalk_1.default.red('✗')} Git ${gitVersion || '— not found'}`);
|
|
89
|
+
console.log(` ${claudeVersion ? chalk_1.default.green('✓') : chalk_1.default.red('✗')} Claude Code ${claudeVersion || '— not found'}`);
|
|
90
|
+
console.log();
|
|
91
|
+
if (!nodeVersion || !gitVersion) {
|
|
92
|
+
if (!nodeVersion)
|
|
93
|
+
console.log(chalk_1.default.red(' Node.js required: https://nodejs.org'));
|
|
94
|
+
if (!gitVersion)
|
|
95
|
+
console.log(chalk_1.default.red(' Git required: https://git-scm.com'));
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
if (!claudeVersion) {
|
|
99
|
+
console.log(chalk_1.default.yellow(' Claude Code not found. Install with:'));
|
|
100
|
+
console.log(chalk_1.default.cyan(' npm install -g @anthropic-ai/claude-code'));
|
|
101
|
+
console.log();
|
|
102
|
+
console.log(chalk_1.default.gray(' Continuing setup — you can install Claude Code later.'));
|
|
103
|
+
console.log();
|
|
104
|
+
}
|
|
105
|
+
// ── Step 2: Authentication ─────────────────────────────────────────
|
|
106
|
+
let username;
|
|
107
|
+
let token;
|
|
108
|
+
// Check shared credentials first, then cv-hub credentials
|
|
109
|
+
const shared = readSharedCreds();
|
|
110
|
+
if (shared) {
|
|
111
|
+
const user = await validateToken(shared.hub_url, shared.token);
|
|
112
|
+
if (user) {
|
|
113
|
+
username = user;
|
|
114
|
+
token = shared.token;
|
|
115
|
+
console.log(chalk_1.default.green(' ✓') + ` Authenticated as ${chalk_1.default.bold(user)}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (!token) {
|
|
119
|
+
// Check cv-hub credentials
|
|
120
|
+
const creds = await (0, credentials_js_1.readCredentials)();
|
|
121
|
+
if (creds.CV_HUB_PAT) {
|
|
122
|
+
const user = await validateToken(hubUrl, creds.CV_HUB_PAT);
|
|
123
|
+
if (user) {
|
|
124
|
+
username = user;
|
|
125
|
+
token = creds.CV_HUB_PAT;
|
|
126
|
+
console.log(chalk_1.default.green(' ✓') + ` Authenticated as ${chalk_1.default.bold(user)} (from cv-hub credentials)`);
|
|
127
|
+
// Migrate to shared format
|
|
128
|
+
writeSharedCreds({ hub_url: hubUrl, token, username, created_at: new Date().toISOString() });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (!token) {
|
|
133
|
+
console.log(' Let\'s connect you to CV-Hub.');
|
|
134
|
+
console.log();
|
|
135
|
+
const autoName = `${(0, node_os_1.hostname)()}-${new Date().toISOString().slice(0, 10)}`;
|
|
136
|
+
const tokenUrl = `${appUrl}/settings/tokens/new?name=${encodeURIComponent(autoName)}&scopes=agent,repo`;
|
|
137
|
+
console.log(chalk_1.default.gray(` Opening: ${tokenUrl}`));
|
|
138
|
+
// Try to open browser
|
|
139
|
+
try {
|
|
140
|
+
const openCmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';
|
|
141
|
+
(0, node_child_process_1.execSync)(`${openCmd} "${tokenUrl}" 2>/dev/null`, { timeout: 5000 });
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
console.log(chalk_1.default.gray(' (Could not open browser — copy the URL above)'));
|
|
145
|
+
}
|
|
146
|
+
console.log();
|
|
147
|
+
// Prompt for token
|
|
148
|
+
const readline = await import('node:readline');
|
|
149
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
150
|
+
token = await new Promise((resolve) => {
|
|
151
|
+
rl.question(' Paste your token here: ', (answer) => {
|
|
152
|
+
rl.close();
|
|
153
|
+
resolve(answer.trim());
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
if (!token) {
|
|
157
|
+
console.log(chalk_1.default.red(' No token provided. Run cva setup again.'));
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
// Validate
|
|
161
|
+
const user = await validateToken(hubUrl, token);
|
|
162
|
+
if (!user) {
|
|
163
|
+
console.log(chalk_1.default.red(' Token validation failed. Check your token and try again.'));
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
username = user;
|
|
167
|
+
console.log(chalk_1.default.green(' ✓') + ` Authenticated as ${chalk_1.default.bold(user)}`);
|
|
168
|
+
// Save to shared credentials
|
|
169
|
+
writeSharedCreds({ hub_url: hubUrl, token, username, created_at: new Date().toISOString() });
|
|
170
|
+
// Also save to cv-hub credentials for backward compatibility
|
|
171
|
+
await (0, credentials_js_1.writeCredentialField)('CV_HUB_PAT', token);
|
|
172
|
+
await (0, credentials_js_1.writeCredentialField)('CV_HUB_API', hubUrl);
|
|
173
|
+
}
|
|
174
|
+
console.log();
|
|
175
|
+
// ── Step 3: Claude.ai MCP Connector ────────────────────────────────
|
|
176
|
+
console.log(' Claude.ai MCP connector:');
|
|
177
|
+
const mcpUrl = `https://claude.ai/settings/integrations?add_mcp=${encodeURIComponent(`${hubUrl}/mcp`)}`;
|
|
178
|
+
console.log(chalk_1.default.gray(` To connect Claude.ai to CV-Hub, visit:`));
|
|
179
|
+
console.log(chalk_1.default.cyan(` ${mcpUrl}`));
|
|
180
|
+
console.log();
|
|
181
|
+
console.log(chalk_1.default.gray(' Click "Add Integration" → "Allow" when prompted.'));
|
|
182
|
+
console.log(chalk_1.default.gray(' (You can do this later — setup will continue.)'));
|
|
183
|
+
console.log();
|
|
184
|
+
// ── Step 4: Repository Setup ───────────────────────────────────────
|
|
185
|
+
const cwd = process.cwd();
|
|
186
|
+
const isGitRepo = (0, node_fs_1.existsSync)((0, node_path_1.join)(cwd, '.git'));
|
|
187
|
+
const hasCVDir = (0, node_fs_1.existsSync)((0, node_path_1.join)(cwd, '.cv'));
|
|
188
|
+
const hasClaudeMd = (0, node_fs_1.existsSync)((0, node_path_1.join)(cwd, 'CLAUDE.md'));
|
|
189
|
+
const repoName = (0, node_path_1.basename)(cwd);
|
|
190
|
+
if (isGitRepo) {
|
|
191
|
+
console.log(chalk_1.default.green(' ✓') + ` Git repo found: ${repoName}`);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
console.log(' Initializing git repository...');
|
|
195
|
+
(0, node_child_process_1.execSync)('git init && git checkout -b main', { cwd, stdio: 'pipe' });
|
|
196
|
+
console.log(chalk_1.default.green(' ✓') + ' Git repo initialized');
|
|
197
|
+
}
|
|
198
|
+
if (!hasClaudeMd) {
|
|
199
|
+
const template = `# ${repoName}\n\n## Overview\n[Describe your project here]\n\n## Tech Stack\n[What languages/frameworks does this project use?]\n\n## Build & Run\n[How to build and run this project]\n`;
|
|
200
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(cwd, 'CLAUDE.md'), template);
|
|
201
|
+
console.log(chalk_1.default.green(' ✓') + ' CLAUDE.md created');
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
console.log(chalk_1.default.green(' ✓') + ' CLAUDE.md present');
|
|
205
|
+
}
|
|
206
|
+
if (!hasCVDir) {
|
|
207
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.join)(cwd, '.cv'), { recursive: true });
|
|
208
|
+
}
|
|
209
|
+
// Add CV-Hub remote if we have credentials
|
|
210
|
+
if (token && username) {
|
|
211
|
+
const gitHost = 'git.hub.controlvector.io';
|
|
212
|
+
const remoteUrl = `https://${gitHost}/${username}/${repoName}.git`;
|
|
213
|
+
try {
|
|
214
|
+
const existingRemote = (0, node_child_process_1.execSync)('git remote get-url cv-hub 2>/dev/null || echo ""', { cwd, encoding: 'utf8' }).trim();
|
|
215
|
+
if (!existingRemote) {
|
|
216
|
+
(0, node_child_process_1.execSync)(`git remote add cv-hub ${remoteUrl}`, { cwd, stdio: 'pipe' });
|
|
217
|
+
console.log(chalk_1.default.green(' ✓') + ` Remote added: cv-hub → ${remoteUrl}`);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
console.log(chalk_1.default.green(' ✓') + ` CV-Hub remote exists`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
// Remote setup non-fatal
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
console.log();
|
|
228
|
+
// ── Step 5: Summary ────────────────────────────────────────────────
|
|
229
|
+
console.log(chalk_1.default.bold(' Setup Complete'));
|
|
230
|
+
console.log(chalk_1.default.gray(' ' + '─'.repeat(40)));
|
|
231
|
+
console.log(` ${chalk_1.default.green('✓')} Authenticated as: ${chalk_1.default.cyan(username)}`);
|
|
232
|
+
console.log(` ${chalk_1.default.green('✓')} Repository: ${chalk_1.default.cyan(repoName)}`);
|
|
233
|
+
console.log(` ${chalk_1.default.green('✓')} CLAUDE.md: present`);
|
|
234
|
+
console.log(chalk_1.default.gray(' ' + '─'.repeat(40)));
|
|
235
|
+
console.log();
|
|
236
|
+
console.log(' What\'s next:');
|
|
237
|
+
console.log(` ${chalk_1.default.cyan('cva agent --auto-approve')} — Start listening for tasks`);
|
|
238
|
+
console.log(` Or open Claude.ai and dispatch a task to this repo.`);
|
|
239
|
+
console.log();
|
|
240
|
+
console.log(chalk_1.default.gray(` Dashboard: ${appUrl}`));
|
|
241
|
+
console.log();
|
|
242
|
+
}
|
|
243
|
+
function setupCommand() {
|
|
244
|
+
const cmd = new commander_1.Command('setup');
|
|
245
|
+
cmd.description('Set up CV-Agent — authentication, repo, and connections (start here)');
|
|
246
|
+
cmd.action(runSetup);
|
|
247
|
+
return cmd;
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
const commander_1 = require("commander");
|
|
11
|
+
const setup_js_1 = require("./commands/setup.js");
|
|
11
12
|
const agent_js_1 = require("./commands/agent.js");
|
|
12
13
|
const auth_js_1 = require("./commands/auth.js");
|
|
13
14
|
const remote_js_1 = require("./commands/remote.js");
|
|
@@ -16,8 +17,9 @@ const status_js_1 = require("./commands/status.js");
|
|
|
16
17
|
const program = new commander_1.Command();
|
|
17
18
|
program
|
|
18
19
|
.name('cva')
|
|
19
|
-
.description('CV-Hub Agent — bridges Claude Code with CV-Hub task dispatch')
|
|
20
|
-
.version(typeof __CVA_VERSION__ !== 'undefined' ? __CVA_VERSION__ : '1.
|
|
20
|
+
.description('CV-Hub Agent — bridges Claude Code with CV-Hub task dispatch.\n\nRun "cva setup" to get started.')
|
|
21
|
+
.version(typeof __CVA_VERSION__ !== 'undefined' ? __CVA_VERSION__ : '1.6.0');
|
|
22
|
+
program.addCommand((0, setup_js_1.setupCommand)()); // Listed first — the entry point
|
|
21
23
|
program.addCommand((0, agent_js_1.agentCommand)());
|
|
22
24
|
program.addCommand((0, auth_js_1.authCommand)());
|
|
23
25
|
program.addCommand((0, remote_js_1.remoteCommand)());
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,yCAAoC;AACpC,kDAAmD;AACnD,gDAAiD;AACjD,oDAAqD;AACrD,gDAAiD;AACjD,oDAAqD;AAIrD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH,yCAAoC;AACpC,kDAAmD;AACnD,kDAAmD;AACnD,gDAAiD;AACjD,oDAAqD;AACrD,gDAAiD;AACjD,oDAAqD;AAIrD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,kGAAkG,CAAC;KAC/G,OAAO,CAAC,OAAO,eAAe,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAE/E,OAAO,CAAC,UAAU,CAAC,IAAA,uBAAY,GAAE,CAAC,CAAC,CAAI,iCAAiC;AACxE,OAAO,CAAC,UAAU,CAAC,IAAA,uBAAY,GAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,IAAA,qBAAW,GAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,IAAA,yBAAa,GAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,IAAA,qBAAW,GAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,IAAA,yBAAa,GAAE,CAAC,CAAC;AAEpC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@controlvector/cv-agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Standalone agent daemon for CV-Hub — bridges Claude Code with CV-Hub task dispatch",
|
|
5
5
|
"bin": {
|
|
6
6
|
"cva": "./dist/bundle.cjs"
|
|
@@ -29,6 +29,9 @@
|
|
|
29
29
|
"typescript": "^5.6.0",
|
|
30
30
|
"vitest": "^2.1.0"
|
|
31
31
|
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@controlvector/cv-git": "^1.4.0"
|
|
34
|
+
},
|
|
32
35
|
"engines": {
|
|
33
36
|
"node": ">=20"
|
|
34
37
|
},
|