@controlvector/cv-agent 0.1.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 (51) hide show
  1. package/dist/bundle.cjs +4822 -0
  2. package/dist/bundle.cjs.map +7 -0
  3. package/dist/commands/agent-git.d.ts +59 -0
  4. package/dist/commands/agent-git.d.ts.map +1 -0
  5. package/dist/commands/agent-git.js +234 -0
  6. package/dist/commands/agent-git.js.map +1 -0
  7. package/dist/commands/agent.d.ts +20 -0
  8. package/dist/commands/agent.d.ts.map +1 -0
  9. package/dist/commands/agent.js +506 -0
  10. package/dist/commands/agent.js.map +1 -0
  11. package/dist/commands/auth.d.ts +8 -0
  12. package/dist/commands/auth.d.ts.map +1 -0
  13. package/dist/commands/auth.js +104 -0
  14. package/dist/commands/auth.js.map +1 -0
  15. package/dist/commands/remote.d.ts +8 -0
  16. package/dist/commands/remote.d.ts.map +1 -0
  17. package/dist/commands/remote.js +100 -0
  18. package/dist/commands/remote.js.map +1 -0
  19. package/dist/commands/status.d.ts +8 -0
  20. package/dist/commands/status.d.ts.map +1 -0
  21. package/dist/commands/status.js +75 -0
  22. package/dist/commands/status.js.map +1 -0
  23. package/dist/commands/task.d.ts +8 -0
  24. package/dist/commands/task.d.ts.map +1 -0
  25. package/dist/commands/task.js +122 -0
  26. package/dist/commands/task.js.map +1 -0
  27. package/dist/index.d.ts +9 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +27 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/utils/api.d.ts +31 -0
  32. package/dist/utils/api.d.ts.map +1 -0
  33. package/dist/utils/api.js +169 -0
  34. package/dist/utils/api.js.map +1 -0
  35. package/dist/utils/config.d.ts +13 -0
  36. package/dist/utils/config.d.ts.map +1 -0
  37. package/dist/utils/config.js +29 -0
  38. package/dist/utils/config.js.map +1 -0
  39. package/dist/utils/credentials.d.ts +46 -0
  40. package/dist/utils/credentials.d.ts.map +1 -0
  41. package/dist/utils/credentials.js +176 -0
  42. package/dist/utils/credentials.js.map +1 -0
  43. package/dist/utils/display.d.ts +8 -0
  44. package/dist/utils/display.d.ts.map +1 -0
  45. package/dist/utils/display.js +50 -0
  46. package/dist/utils/display.js.map +1 -0
  47. package/dist/utils/retry.d.ts +5 -0
  48. package/dist/utils/retry.d.ts.map +1 -0
  49. package/dist/utils/retry.js +26 -0
  50. package/dist/utils/retry.js.map +1 -0
  51. package/package.json +38 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * cva remote add / cva remote setup
3
+ *
4
+ * Manages CV-Hub git remotes for the current repository.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function remoteCommand(): Command;
8
+ //# sourceMappingURL=remote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/commands/remote.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmFpC,wBAAgB,aAAa,IAAI,OAAO,CAevC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /**
3
+ * cva remote add / cva remote setup
4
+ *
5
+ * Manages CV-Hub git remotes for the current repository.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.remoteCommand = remoteCommand;
12
+ const commander_1 = require("commander");
13
+ const node_child_process_1 = require("node:child_process");
14
+ const chalk_1 = __importDefault(require("chalk"));
15
+ const credentials_js_1 = require("../utils/credentials.js");
16
+ const api_js_1 = require("../utils/api.js");
17
+ function getGitHost(apiUrl) {
18
+ return apiUrl
19
+ .replace(/^https?:\/\//, '')
20
+ .replace(/^api\./, 'git.');
21
+ }
22
+ async function remoteAdd(ownerRepo) {
23
+ const creds = await (0, credentials_js_1.readCredentials)();
24
+ const apiUrl = creds.CV_HUB_API || 'https://api.hub.controlvector.io';
25
+ const gitHost = getGitHost(apiUrl);
26
+ const [owner, repo] = ownerRepo.split('/');
27
+ if (!owner || !repo) {
28
+ console.log(chalk_1.default.red('Invalid format.') + ' Use: cva remote add <owner>/<repo>');
29
+ process.exit(1);
30
+ }
31
+ const remoteUrl = `https://${gitHost}/${owner}/${repo}.git`;
32
+ // Check if cvhub remote already exists
33
+ try {
34
+ const existing = (0, node_child_process_1.execSync)('git remote get-url cvhub', { encoding: 'utf-8', timeout: 5000 }).trim();
35
+ if (existing === remoteUrl) {
36
+ console.log(chalk_1.default.gray(`Remote 'cvhub' already set to ${remoteUrl}`));
37
+ return;
38
+ }
39
+ // Update it
40
+ (0, node_child_process_1.execSync)(`git remote set-url cvhub ${remoteUrl}`, { timeout: 5000 });
41
+ console.log(chalk_1.default.green('Updated') + ` remote 'cvhub' -> ${remoteUrl}`);
42
+ }
43
+ catch {
44
+ // Add new remote
45
+ try {
46
+ (0, node_child_process_1.execSync)(`git remote add cvhub ${remoteUrl}`, { timeout: 5000 });
47
+ console.log(chalk_1.default.green('Added') + ` remote 'cvhub' -> ${remoteUrl}`);
48
+ }
49
+ catch (err) {
50
+ console.log(chalk_1.default.red('Failed to add remote:') + ` ${err.message}`);
51
+ process.exit(1);
52
+ }
53
+ }
54
+ }
55
+ async function remoteSetup(ownerRepo) {
56
+ const creds = await (0, credentials_js_1.readCredentials)();
57
+ if (!creds.CV_HUB_PAT) {
58
+ console.log(chalk_1.default.red('Not authenticated.') + ' Run ' + chalk_1.default.cyan('cva auth login') + ' first.');
59
+ process.exit(1);
60
+ }
61
+ if (!creds.CV_HUB_API) {
62
+ creds.CV_HUB_API = 'https://api.hub.controlvector.io';
63
+ }
64
+ const [owner, repo] = ownerRepo.split('/');
65
+ if (!owner || !repo) {
66
+ console.log(chalk_1.default.red('Invalid format.') + ' Use: cva remote setup <owner>/<repo>');
67
+ process.exit(1);
68
+ }
69
+ // Create repo on CV-Hub
70
+ console.log(chalk_1.default.gray(`Creating repository ${ownerRepo} on CV-Hub...`));
71
+ try {
72
+ await (0, api_js_1.createRepo)(creds, repo);
73
+ console.log(chalk_1.default.green('Created') + ` repository ${ownerRepo}`);
74
+ }
75
+ catch (err) {
76
+ if (err.message.includes('409') || err.message.includes('already exists')) {
77
+ console.log(chalk_1.default.gray(`Repository ${ownerRepo} already exists.`));
78
+ }
79
+ else {
80
+ console.log(chalk_1.default.red('Failed to create repo:') + ` ${err.message}`);
81
+ process.exit(1);
82
+ }
83
+ }
84
+ // Add the remote
85
+ await remoteAdd(ownerRepo);
86
+ }
87
+ function remoteCommand() {
88
+ const cmd = new commander_1.Command('remote');
89
+ cmd.description('Manage CV-Hub git remotes');
90
+ cmd
91
+ .command('add <owner/repo>')
92
+ .description('Add cvhub remote to current git repo')
93
+ .action(remoteAdd);
94
+ cmd
95
+ .command('setup <owner/repo>')
96
+ .description('Create repo on CV-Hub and add cvhub remote')
97
+ .action(remoteSetup);
98
+ return cmd;
99
+ }
100
+ //# sourceMappingURL=remote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/commands/remote.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAqFH,sCAeC;AAlGD,yCAAoC;AACpC,2DAA8C;AAC9C,kDAA0B;AAC1B,4DAA0D;AAC1D,4CAA6C;AAE7C,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,MAAM;SACV,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,SAAiB;IACxC,MAAM,KAAK,GAAG,MAAM,IAAA,gCAAe,GAAE,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,kCAAkC,CAAC;IACtE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,qCAAqC,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,OAAO,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC;IAE5D,uCAAuC;IACvC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAA,6BAAQ,EAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnG,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QACD,YAAY;QACZ,IAAA,6BAAQ,EAAC,4BAA4B,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,sBAAsB,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;QACjB,IAAI,CAAC;YACH,IAAA,6BAAQ,EAAC,wBAAwB,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,SAAiB;IAC1C,MAAM,KAAK,GAAG,MAAM,IAAA,gCAAe,GAAE,CAAC;IAEtC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,OAAO,GAAG,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,CAAC,UAAU,GAAG,kCAAkC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,uCAAuC,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,SAAS,eAAe,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,IAAA,mBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,eAAe,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,SAAS,kBAAkB,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,aAAa;IAC3B,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,GAAG,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAE7C,GAAG;SACA,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,SAAS,CAAC,CAAC;IAErB,GAAG;SACA,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * cva status
3
+ *
4
+ * Show registered executors and their current status.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function statusCommand(): Command;
8
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8DpC,wBAAgB,aAAa,IAAI,OAAO,CAKvC"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * cva status
4
+ *
5
+ * Show registered executors and their current status.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.statusCommand = statusCommand;
12
+ const commander_1 = require("commander");
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ const credentials_js_1 = require("../utils/credentials.js");
15
+ const api_js_1 = require("../utils/api.js");
16
+ async function showStatus() {
17
+ const creds = await (0, credentials_js_1.readCredentials)();
18
+ if (!creds.CV_HUB_PAT) {
19
+ console.log(chalk_1.default.red('Not authenticated.') + ' Run ' + chalk_1.default.cyan('cva auth login') + ' first.');
20
+ process.exit(1);
21
+ }
22
+ if (!creds.CV_HUB_API)
23
+ creds.CV_HUB_API = 'https://api.hub.controlvector.io';
24
+ try {
25
+ const executors = await (0, api_js_1.listExecutors)(creds);
26
+ if (executors.length === 0) {
27
+ console.log(chalk_1.default.gray('No executors registered.'));
28
+ return;
29
+ }
30
+ const statusColors = {
31
+ online: chalk_1.default.green,
32
+ offline: chalk_1.default.gray,
33
+ busy: chalk_1.default.yellow,
34
+ error: chalk_1.default.red,
35
+ };
36
+ console.log(chalk_1.default.bold('Executors:'));
37
+ console.log();
38
+ for (const e of executors) {
39
+ const colorFn = statusColors[e.status] || chalk_1.default.white;
40
+ const status = colorFn(e.status.padEnd(10));
41
+ const name = chalk_1.default.cyan(e.name || e.machine_name || 'unknown');
42
+ const id = chalk_1.default.gray(e.id.substring(0, 8));
43
+ const heartbeat = e.last_heartbeat_at
44
+ ? chalk_1.default.gray(`last seen ${timeSince(new Date(e.last_heartbeat_at))}`)
45
+ : chalk_1.default.gray('never');
46
+ const workspace = e.workspace_root ? chalk_1.default.gray(` | ${e.workspace_root}`) : '';
47
+ console.log(` ${id} ${status} ${name} ${heartbeat}${workspace}`);
48
+ }
49
+ console.log(chalk_1.default.gray(`\n${executors.length} executor(s)`));
50
+ }
51
+ catch (err) {
52
+ console.log(chalk_1.default.red('Failed:') + ` ${err.message}`);
53
+ process.exit(1);
54
+ }
55
+ }
56
+ function timeSince(date) {
57
+ const seconds = Math.floor((Date.now() - date.getTime()) / 1000);
58
+ if (seconds < 60)
59
+ return `${seconds}s ago`;
60
+ const minutes = Math.floor(seconds / 60);
61
+ if (minutes < 60)
62
+ return `${minutes}m ago`;
63
+ const hours = Math.floor(minutes / 60);
64
+ if (hours < 24)
65
+ return `${hours}h ago`;
66
+ const days = Math.floor(hours / 24);
67
+ return `${days}d ago`;
68
+ }
69
+ function statusCommand() {
70
+ const cmd = new commander_1.Command('status');
71
+ cmd.description('Show registered executors and their status');
72
+ cmd.action(showStatus);
73
+ return cmd;
74
+ }
75
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * cva task list / cva task logs
3
+ *
4
+ * View tasks and task logs from CV-Hub.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function taskCommand(): Command;
8
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsGpC,wBAAgB,WAAW,IAAI,OAAO,CAgBrC"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ /**
3
+ * cva task list / cva task logs
4
+ *
5
+ * View tasks and task logs from CV-Hub.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.taskCommand = taskCommand;
12
+ const commander_1 = require("commander");
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ const credentials_js_1 = require("../utils/credentials.js");
15
+ const api_js_1 = require("../utils/api.js");
16
+ async function taskList(opts) {
17
+ const creds = await (0, credentials_js_1.readCredentials)();
18
+ if (!creds.CV_HUB_PAT) {
19
+ console.log(chalk_1.default.red('Not authenticated.') + ' Run ' + chalk_1.default.cyan('cva auth login') + ' first.');
20
+ process.exit(1);
21
+ }
22
+ if (!creds.CV_HUB_API)
23
+ creds.CV_HUB_API = 'https://api.hub.controlvector.io';
24
+ try {
25
+ const tasks = await (0, api_js_1.listTasks)(creds, opts.status);
26
+ if (tasks.length === 0) {
27
+ console.log(chalk_1.default.gray('No tasks found.'));
28
+ return;
29
+ }
30
+ // Table output
31
+ const statusColors = {
32
+ pending: chalk_1.default.yellow,
33
+ assigned: chalk_1.default.blue,
34
+ running: chalk_1.default.cyan,
35
+ completed: chalk_1.default.green,
36
+ failed: chalk_1.default.red,
37
+ cancelled: chalk_1.default.gray,
38
+ waiting_for_input: chalk_1.default.magenta,
39
+ };
40
+ for (const t of tasks) {
41
+ const colorFn = statusColors[t.status] || chalk_1.default.white;
42
+ const status = colorFn(t.status.padEnd(18));
43
+ const title = (t.title || '').substring(0, 50);
44
+ const id = chalk_1.default.gray(t.id.substring(0, 8));
45
+ const age = t.created_at ? chalk_1.default.gray(timeSince(new Date(t.created_at))) : '';
46
+ console.log(`${id} ${status} ${title} ${age}`);
47
+ }
48
+ console.log(chalk_1.default.gray(`\n${tasks.length} task(s)`));
49
+ }
50
+ catch (err) {
51
+ console.log(chalk_1.default.red('Failed:') + ` ${err.message}`);
52
+ process.exit(1);
53
+ }
54
+ }
55
+ async function taskLogs(taskId) {
56
+ const creds = await (0, credentials_js_1.readCredentials)();
57
+ if (!creds.CV_HUB_PAT) {
58
+ console.log(chalk_1.default.red('Not authenticated.') + ' Run ' + chalk_1.default.cyan('cva auth login') + ' first.');
59
+ process.exit(1);
60
+ }
61
+ if (!creds.CV_HUB_API)
62
+ creds.CV_HUB_API = 'https://api.hub.controlvector.io';
63
+ try {
64
+ const logs = await (0, api_js_1.getTaskLogs)(creds, taskId);
65
+ if (logs.length === 0) {
66
+ // Fallback: show task detail
67
+ console.log(chalk_1.default.gray('No logs found. Showing task detail:'));
68
+ const task = await (0, api_js_1.getTask)(creds, taskId);
69
+ console.log(JSON.stringify(task, null, 2));
70
+ return;
71
+ }
72
+ const typeColors = {
73
+ lifecycle: chalk_1.default.blue,
74
+ heartbeat: chalk_1.default.gray,
75
+ progress: chalk_1.default.cyan,
76
+ git: chalk_1.default.green,
77
+ error: chalk_1.default.red,
78
+ info: chalk_1.default.white,
79
+ };
80
+ for (const log of logs) {
81
+ const colorFn = typeColors[log.log_type] || chalk_1.default.white;
82
+ const type = colorFn(`[${log.log_type}]`.padEnd(14));
83
+ const time = chalk_1.default.gray(new Date(log.created_at).toLocaleTimeString());
84
+ const pct = log.progress_pct !== null && log.progress_pct !== undefined
85
+ ? chalk_1.default.yellow(` ${log.progress_pct}%`)
86
+ : '';
87
+ console.log(`${time} ${type} ${log.message}${pct}`);
88
+ }
89
+ }
90
+ catch (err) {
91
+ console.log(chalk_1.default.red('Failed:') + ` ${err.message}`);
92
+ process.exit(1);
93
+ }
94
+ }
95
+ function timeSince(date) {
96
+ const seconds = Math.floor((Date.now() - date.getTime()) / 1000);
97
+ if (seconds < 60)
98
+ return `${seconds}s ago`;
99
+ const minutes = Math.floor(seconds / 60);
100
+ if (minutes < 60)
101
+ return `${minutes}m ago`;
102
+ const hours = Math.floor(minutes / 60);
103
+ if (hours < 24)
104
+ return `${hours}h ago`;
105
+ const days = Math.floor(hours / 24);
106
+ return `${days}d ago`;
107
+ }
108
+ function taskCommand() {
109
+ const cmd = new commander_1.Command('task');
110
+ cmd.description('View tasks and task logs');
111
+ cmd
112
+ .command('list')
113
+ .description('List tasks')
114
+ .option('--status <status>', 'Filter by status (e.g. running,completed)')
115
+ .action(taskList);
116
+ cmd
117
+ .command('logs <taskId>')
118
+ .description('View logs for a task')
119
+ .action(taskLogs);
120
+ return cmd;
121
+ }
122
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * cva — CV-Hub Agent CLI
3
+ *
4
+ * Standalone agent daemon that bridges Claude Code with CV-Hub task dispatch.
5
+ * Binary: cva
6
+ * Package: @controlvector/cv-agent
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /**
3
+ * cva — CV-Hub Agent CLI
4
+ *
5
+ * Standalone agent daemon that bridges Claude Code with CV-Hub task dispatch.
6
+ * Binary: cva
7
+ * Package: @controlvector/cv-agent
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const commander_1 = require("commander");
11
+ const agent_js_1 = require("./commands/agent.js");
12
+ const auth_js_1 = require("./commands/auth.js");
13
+ const remote_js_1 = require("./commands/remote.js");
14
+ const task_js_1 = require("./commands/task.js");
15
+ const status_js_1 = require("./commands/status.js");
16
+ const program = new commander_1.Command();
17
+ program
18
+ .name('cva')
19
+ .description('CV-Hub Agent — bridges Claude Code with CV-Hub task dispatch')
20
+ .version('0.1.0');
21
+ program.addCommand((0, agent_js_1.agentCommand)());
22
+ program.addCommand((0, auth_js_1.authCommand)());
23
+ program.addCommand((0, remote_js_1.remoteCommand)());
24
+ program.addCommand((0, task_js_1.taskCommand)());
25
+ program.addCommand((0, status_js_1.statusCommand)());
26
+ program.parse(process.argv);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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;AAErD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * CV-Hub API client for the cva agent.
3
+ *
4
+ * Extracted from cv-git agent.ts with additional endpoints for
5
+ * listing executors, tasks, logs, and creating repos.
6
+ */
7
+ import type { CVHubCredentials } from './credentials.js';
8
+ export declare function apiCall(creds: CVHubCredentials, method: string, path: string, body?: unknown): Promise<Response>;
9
+ export declare function registerExecutor(creds: CVHubCredentials, machineName: string, workingDir: string): Promise<{
10
+ id: string;
11
+ name: string;
12
+ }>;
13
+ export declare function markOffline(creds: CVHubCredentials, executorId: string): Promise<void>;
14
+ export declare function pollForTask(creds: CVHubCredentials, executorId: string): Promise<any | null>;
15
+ export declare function startTask(creds: CVHubCredentials, executorId: string, taskId: string): Promise<void>;
16
+ export declare function completeTask(creds: CVHubCredentials, executorId: string, taskId: string, result: Record<string, unknown>): Promise<void>;
17
+ export declare function failTask(creds: CVHubCredentials, executorId: string, taskId: string, error: string): Promise<void>;
18
+ export declare function sendHeartbeat(creds: CVHubCredentials, executorId: string, taskId?: string, message?: string): Promise<void>;
19
+ export declare function sendTaskLog(creds: CVHubCredentials, executorId: string, taskId: string, logType: string, message: string, details?: Record<string, unknown>, progressPct?: number): Promise<void>;
20
+ export declare function createTaskPrompt(creds: CVHubCredentials, executorId: string, taskId: string, promptText: string, promptType?: string, options?: string[], context?: Record<string, unknown>): Promise<{
21
+ prompt_id: string;
22
+ }>;
23
+ export declare function pollPromptResponse(creds: CVHubCredentials, executorId: string, taskId: string, promptId: string): Promise<{
24
+ response: string | null;
25
+ }>;
26
+ export declare function listExecutors(creds: CVHubCredentials): Promise<any[]>;
27
+ export declare function listTasks(creds: CVHubCredentials, status?: string): Promise<any[]>;
28
+ export declare function getTask(creds: CVHubCredentials, taskId: string): Promise<any>;
29
+ export declare function getTaskLogs(creds: CVHubCredentials, taskId: string): Promise<any[]>;
30
+ export declare function createRepo(creds: CVHubCredentials, name: string, description?: string): Promise<any>;
31
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * CV-Hub API client for the cva agent.
4
+ *
5
+ * Extracted from cv-git agent.ts with additional endpoints for
6
+ * listing executors, tasks, logs, and creating repos.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.apiCall = apiCall;
10
+ exports.registerExecutor = registerExecutor;
11
+ exports.markOffline = markOffline;
12
+ exports.pollForTask = pollForTask;
13
+ exports.startTask = startTask;
14
+ exports.completeTask = completeTask;
15
+ exports.failTask = failTask;
16
+ exports.sendHeartbeat = sendHeartbeat;
17
+ exports.sendTaskLog = sendTaskLog;
18
+ exports.createTaskPrompt = createTaskPrompt;
19
+ exports.pollPromptResponse = pollPromptResponse;
20
+ exports.listExecutors = listExecutors;
21
+ exports.listTasks = listTasks;
22
+ exports.getTask = getTask;
23
+ exports.getTaskLogs = getTaskLogs;
24
+ exports.createRepo = createRepo;
25
+ // ============================================================================
26
+ // Core API call
27
+ // ============================================================================
28
+ async function apiCall(creds, method, path, body) {
29
+ const url = `${creds.CV_HUB_API}${path}`;
30
+ const headers = {
31
+ 'Authorization': `Bearer ${creds.CV_HUB_PAT}`,
32
+ 'Content-Type': 'application/json',
33
+ };
34
+ return fetch(url, {
35
+ method,
36
+ headers,
37
+ body: body ? JSON.stringify(body) : undefined,
38
+ });
39
+ }
40
+ // ============================================================================
41
+ // Executor lifecycle
42
+ // ============================================================================
43
+ async function registerExecutor(creds, machineName, workingDir) {
44
+ const hostname = (await import('node:os')).hostname();
45
+ const res = await apiCall(creds, 'POST', '/api/v1/executors', {
46
+ name: `cva:${machineName}`,
47
+ machine_name: machineName,
48
+ type: 'claude_code',
49
+ workspace_root: workingDir,
50
+ capabilities: {
51
+ tools: ['bash', 'read', 'write', 'edit', 'glob', 'grep'],
52
+ maxConcurrentTasks: 1,
53
+ },
54
+ });
55
+ if (!res.ok) {
56
+ const err = await res.text();
57
+ throw new Error(`Failed to register executor: ${res.status} ${err}`);
58
+ }
59
+ const data = await res.json();
60
+ return { id: data.executor.id, name: data.executor.name };
61
+ }
62
+ async function markOffline(creds, executorId) {
63
+ await apiCall(creds, 'POST', `/api/v1/executors/${executorId}/offline`).catch(() => { });
64
+ }
65
+ // ============================================================================
66
+ // Task lifecycle
67
+ // ============================================================================
68
+ async function pollForTask(creds, executorId) {
69
+ const res = await apiCall(creds, 'POST', `/api/v1/executors/${executorId}/poll`);
70
+ if (!res.ok)
71
+ throw new Error(`Poll failed: ${res.status}`);
72
+ const data = await res.json();
73
+ return data.task || null;
74
+ }
75
+ async function startTask(creds, executorId, taskId) {
76
+ const res = await apiCall(creds, 'POST', `/api/v1/executors/${executorId}/tasks/${taskId}/start`);
77
+ if (!res.ok)
78
+ throw new Error(`Start failed: ${res.status}`);
79
+ }
80
+ async function completeTask(creds, executorId, taskId, result) {
81
+ const res = await apiCall(creds, 'POST', `/api/v1/executors/${executorId}/tasks/${taskId}/complete`, result);
82
+ if (!res.ok)
83
+ throw new Error(`Complete failed: ${res.status}`);
84
+ }
85
+ async function failTask(creds, executorId, taskId, error) {
86
+ const res = await apiCall(creds, 'POST', `/api/v1/executors/${executorId}/tasks/${taskId}/fail`, { error });
87
+ if (!res.ok)
88
+ throw new Error(`Fail failed: ${res.status}`);
89
+ }
90
+ async function sendHeartbeat(creds, executorId, taskId, message) {
91
+ await apiCall(creds, 'POST', `/api/v1/executors/${executorId}/heartbeat`).catch(() => { });
92
+ if (taskId) {
93
+ const body = message ? { message, log_type: 'heartbeat' } : undefined;
94
+ await apiCall(creds, 'POST', `/api/v1/executors/${executorId}/tasks/${taskId}/heartbeat`, body).catch(() => { });
95
+ }
96
+ }
97
+ async function sendTaskLog(creds, executorId, taskId, logType, message, details, progressPct) {
98
+ await apiCall(creds, 'POST', `/api/v1/executors/${executorId}/tasks/${taskId}/log`, {
99
+ log_type: logType,
100
+ message,
101
+ ...(details ? { details } : {}),
102
+ ...(progressPct !== undefined ? { progress_pct: progressPct } : {}),
103
+ }).catch(() => { });
104
+ }
105
+ // ============================================================================
106
+ // Prompt relay (for relay mode)
107
+ // ============================================================================
108
+ async function createTaskPrompt(creds, executorId, taskId, promptText, promptType = 'approval', options, context) {
109
+ const res = await apiCall(creds, 'POST', `/api/v1/executors/${executorId}/tasks/${taskId}/prompt`, {
110
+ type: promptType,
111
+ text: promptText,
112
+ ...(options ? { options } : {}),
113
+ ...(context ? { context } : {}),
114
+ });
115
+ if (!res.ok)
116
+ throw new Error(`Create prompt failed: ${res.status}`);
117
+ return await res.json();
118
+ }
119
+ async function pollPromptResponse(creds, executorId, taskId, promptId) {
120
+ const res = await apiCall(creds, 'GET', `/api/v1/executors/${executorId}/tasks/${taskId}/prompts/${promptId}`);
121
+ if (!res.ok)
122
+ throw new Error(`Poll prompt failed: ${res.status}`);
123
+ const data = await res.json();
124
+ return { response: data.response ?? null };
125
+ }
126
+ // ============================================================================
127
+ // New listing endpoints
128
+ // ============================================================================
129
+ async function listExecutors(creds) {
130
+ const res = await apiCall(creds, 'GET', '/api/v1/executors');
131
+ if (!res.ok)
132
+ throw new Error(`List executors failed: ${res.status}`);
133
+ const data = await res.json();
134
+ return data.executors || [];
135
+ }
136
+ async function listTasks(creds, status) {
137
+ const qs = status ? `?status=${encodeURIComponent(status)}` : '';
138
+ const res = await apiCall(creds, 'GET', `/api/v1/tasks${qs}`);
139
+ if (!res.ok)
140
+ throw new Error(`List tasks failed: ${res.status}`);
141
+ const data = await res.json();
142
+ return data.tasks || [];
143
+ }
144
+ async function getTask(creds, taskId) {
145
+ const res = await apiCall(creds, 'GET', `/api/v1/tasks/${taskId}`);
146
+ if (!res.ok)
147
+ throw new Error(`Get task failed: ${res.status}`);
148
+ const data = await res.json();
149
+ return data.task;
150
+ }
151
+ async function getTaskLogs(creds, taskId) {
152
+ const res = await apiCall(creds, 'GET', `/api/v1/tasks/${taskId}/logs`);
153
+ if (!res.ok)
154
+ throw new Error(`Get task logs failed: ${res.status}`);
155
+ const data = await res.json();
156
+ return data.logs || [];
157
+ }
158
+ async function createRepo(creds, name, description) {
159
+ const res = await apiCall(creds, 'POST', '/api/v1/repos', {
160
+ name,
161
+ ...(description ? { description } : {}),
162
+ });
163
+ if (!res.ok) {
164
+ const err = await res.text();
165
+ throw new Error(`Create repo failed: ${res.status} ${err}`);
166
+ }
167
+ return await res.json();
168
+ }
169
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}