@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,59 @@
1
+ /**
2
+ * Git state tracking for the cva agent.
3
+ *
4
+ * Captures pre-task and post-task git state so the agent can report
5
+ * structured diffs, commit info, and file change details back to CV-Hub.
6
+ */
7
+ export interface PreTaskState {
8
+ headSha: string | null;
9
+ branch: string | null;
10
+ remote: string | null;
11
+ workingDir: string;
12
+ }
13
+ export interface PostTaskState {
14
+ headSha: string | null;
15
+ branch: string | null;
16
+ filesAdded: string[];
17
+ filesModified: string[];
18
+ filesDeleted: string[];
19
+ linesAdded: number;
20
+ linesDeleted: number;
21
+ commitMessages: string[];
22
+ pushStatus: 'success' | 'not_pushed' | 'failed' | 'no_remote';
23
+ pushRemote: string | null;
24
+ }
25
+ export interface TaskCompletionPayload {
26
+ summary: string;
27
+ commit: {
28
+ sha: string | null;
29
+ branch: string | null;
30
+ remote: string | null;
31
+ push_status: string;
32
+ messages: string[];
33
+ };
34
+ files: {
35
+ added: string[];
36
+ modified: string[];
37
+ deleted: string[];
38
+ total_changed: number;
39
+ };
40
+ stats: {
41
+ lines_added: number;
42
+ lines_deleted: number;
43
+ duration_seconds: number;
44
+ };
45
+ exit_code: number;
46
+ }
47
+ /** Run a git command, return trimmed stdout or null on failure */
48
+ export declare function gitExec(cmd: string, cwd: string): string | null;
49
+ export declare function capturePreTaskState(cwd: string): PreTaskState;
50
+ export declare function capturePostTaskState(cwd: string, preState: PreTaskState): PostTaskState;
51
+ export declare function buildCompletionPayload(exitCode: number, preState: PreTaskState, postState: PostTaskState, startTime: number): TaskCompletionPayload;
52
+ export declare function verifyGitRemote(cwd: string, task: {
53
+ owner?: string;
54
+ repo?: string;
55
+ }, gitHost: string): {
56
+ remoteName: string;
57
+ remoteUrl: string;
58
+ } | null;
59
+ //# sourceMappingURL=agent-git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-git.d.ts","sourceRoot":"","sources":["../../src/commands/agent-git.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC9D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,kEAAkE;AAClE,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;AAMD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAO7D;AAMD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,aAAa,CAyGvF;AAMD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,GAChB,qBAAqB,CAqDvB;AAMD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACvC,OAAO,EAAE,MAAM,GACd;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAuClD"}
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ /**
3
+ * Git state tracking for the cva agent.
4
+ *
5
+ * Captures pre-task and post-task git state so the agent can report
6
+ * structured diffs, commit info, and file change details back to CV-Hub.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.gitExec = gitExec;
10
+ exports.capturePreTaskState = capturePreTaskState;
11
+ exports.capturePostTaskState = capturePostTaskState;
12
+ exports.buildCompletionPayload = buildCompletionPayload;
13
+ exports.verifyGitRemote = verifyGitRemote;
14
+ const node_child_process_1 = require("node:child_process");
15
+ // ============================================================================
16
+ // Helpers
17
+ // ============================================================================
18
+ /** Run a git command, return trimmed stdout or null on failure */
19
+ function gitExec(cmd, cwd) {
20
+ try {
21
+ return (0, node_child_process_1.execSync)(cmd, { cwd, encoding: 'utf-8', timeout: 10000 }).trim();
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
27
+ // ============================================================================
28
+ // Pre-task state
29
+ // ============================================================================
30
+ function capturePreTaskState(cwd) {
31
+ return {
32
+ headSha: gitExec('git rev-parse HEAD', cwd),
33
+ branch: gitExec('git rev-parse --abbrev-ref HEAD', cwd),
34
+ remote: gitExec('git remote get-url origin', cwd),
35
+ workingDir: cwd,
36
+ };
37
+ }
38
+ // ============================================================================
39
+ // Post-task state
40
+ // ============================================================================
41
+ function capturePostTaskState(cwd, preState) {
42
+ const headSha = gitExec('git rev-parse HEAD', cwd);
43
+ const branch = gitExec('git rev-parse --abbrev-ref HEAD', cwd);
44
+ let filesAdded = [];
45
+ let filesModified = [];
46
+ let filesDeleted = [];
47
+ let linesAdded = 0;
48
+ let linesDeleted = 0;
49
+ let commitMessages = [];
50
+ if (preState.headSha && headSha && preState.headSha !== headSha) {
51
+ // HEAD changed — diff between pre and post
52
+ const diffOutput = gitExec(`git diff --name-status ${preState.headSha}..${headSha}`, cwd);
53
+ if (diffOutput) {
54
+ for (const line of diffOutput.split('\n')) {
55
+ const [status, ...pathParts] = line.split('\t');
56
+ const filepath = pathParts.join('\t');
57
+ if (!filepath)
58
+ continue;
59
+ if (status === 'A')
60
+ filesAdded.push(filepath);
61
+ else if (status === 'M')
62
+ filesModified.push(filepath);
63
+ else if (status === 'D')
64
+ filesDeleted.push(filepath);
65
+ else if (status?.startsWith('R')) {
66
+ filesDeleted.push(pathParts[0]);
67
+ if (pathParts[1])
68
+ filesAdded.push(pathParts[1]);
69
+ }
70
+ }
71
+ }
72
+ // Line stats
73
+ const statOutput = gitExec(`git diff --shortstat ${preState.headSha}..${headSha}`, cwd);
74
+ if (statOutput) {
75
+ const addMatch = statOutput.match(/(\d+) insertion/);
76
+ const delMatch = statOutput.match(/(\d+) deletion/);
77
+ linesAdded = addMatch ? parseInt(addMatch[1], 10) : 0;
78
+ linesDeleted = delMatch ? parseInt(delMatch[1], 10) : 0;
79
+ }
80
+ // Commit messages
81
+ const logOutput = gitExec(`git log --oneline ${preState.headSha}..${headSha}`, cwd);
82
+ if (logOutput) {
83
+ commitMessages = logOutput.split('\n').filter(Boolean);
84
+ }
85
+ }
86
+ else if (!preState.headSha && headSha) {
87
+ // Repo was empty, everything is new
88
+ const allFiles = gitExec('git ls-files', cwd);
89
+ if (allFiles) {
90
+ filesAdded = allFiles.split('\n').filter(Boolean);
91
+ }
92
+ }
93
+ else {
94
+ // HEAD unchanged — check for uncommitted changes
95
+ const statusOutput = gitExec('git status --porcelain', cwd);
96
+ if (statusOutput) {
97
+ for (const line of statusOutput.split('\n')) {
98
+ const status = line.substring(0, 2).trim();
99
+ const filepath = line.substring(3);
100
+ if (!filepath)
101
+ continue;
102
+ if (status === '??' || status === 'A')
103
+ filesAdded.push(filepath);
104
+ else if (status === 'M')
105
+ filesModified.push(filepath);
106
+ else if (status === 'D')
107
+ filesDeleted.push(filepath);
108
+ }
109
+ }
110
+ }
111
+ // Push status
112
+ let pushStatus = 'not_pushed';
113
+ let pushRemote = null;
114
+ const remote = gitExec('git remote get-url origin', cwd);
115
+ if (!remote) {
116
+ pushStatus = 'no_remote';
117
+ }
118
+ else {
119
+ pushRemote = remote;
120
+ if (headSha && branch) {
121
+ const remoteRef = gitExec(`git ls-remote origin ${branch}`, cwd);
122
+ if (remoteRef && remoteRef.includes(headSha)) {
123
+ pushStatus = 'success';
124
+ }
125
+ }
126
+ }
127
+ return {
128
+ headSha,
129
+ branch,
130
+ filesAdded,
131
+ filesModified,
132
+ filesDeleted,
133
+ linesAdded,
134
+ linesDeleted,
135
+ commitMessages,
136
+ pushStatus,
137
+ pushRemote,
138
+ };
139
+ }
140
+ // ============================================================================
141
+ // Structured completion payload
142
+ // ============================================================================
143
+ function buildCompletionPayload(exitCode, preState, postState, startTime) {
144
+ const durationSec = Math.floor((Date.now() - startTime) / 1000);
145
+ const durationStr = durationSec >= 60
146
+ ? `${Math.floor(durationSec / 60)}m ${durationSec % 60}s`
147
+ : `${durationSec}s`;
148
+ const totalChanged = postState.filesAdded.length +
149
+ postState.filesModified.length +
150
+ postState.filesDeleted.length;
151
+ const parts = [`Completed in ${durationStr}.`];
152
+ if (totalChanged > 0) {
153
+ parts.push(`${totalChanged} file(s) changed (+${postState.linesAdded}/-${postState.linesDeleted}).`);
154
+ }
155
+ else {
156
+ parts.push('No file changes detected.');
157
+ }
158
+ if (postState.headSha && postState.headSha !== preState.headSha) {
159
+ parts.push(`Commit: ${postState.headSha.substring(0, 8)}`);
160
+ }
161
+ if (postState.pushStatus === 'success') {
162
+ parts.push('Pushed to remote.');
163
+ }
164
+ else if (postState.pushStatus === 'not_pushed') {
165
+ parts.push('Not pushed to remote.');
166
+ }
167
+ return {
168
+ summary: parts.join(' '),
169
+ commit: {
170
+ sha: postState.headSha,
171
+ branch: postState.branch,
172
+ remote: postState.pushRemote,
173
+ push_status: postState.pushStatus,
174
+ messages: postState.commitMessages,
175
+ },
176
+ files: {
177
+ added: postState.filesAdded,
178
+ modified: postState.filesModified,
179
+ deleted: postState.filesDeleted,
180
+ total_changed: totalChanged,
181
+ },
182
+ stats: {
183
+ lines_added: postState.linesAdded,
184
+ lines_deleted: postState.linesDeleted,
185
+ duration_seconds: durationSec,
186
+ },
187
+ exit_code: exitCode,
188
+ };
189
+ }
190
+ // ============================================================================
191
+ // Git remote verification
192
+ // ============================================================================
193
+ function verifyGitRemote(cwd, task, gitHost) {
194
+ if (!task.owner || !task.repo)
195
+ return null;
196
+ const expectedRemote = `https://${gitHost}/${task.owner}/${task.repo}.git`;
197
+ const currentRemote = gitExec('git remote get-url origin', cwd);
198
+ if (!currentRemote) {
199
+ // No remote — add origin
200
+ try {
201
+ (0, node_child_process_1.execSync)(`git remote add origin ${expectedRemote}`, { cwd, timeout: 5000 });
202
+ }
203
+ catch { /* remote may already exist without URL */ }
204
+ return { remoteName: 'origin', remoteUrl: expectedRemote };
205
+ }
206
+ if (currentRemote === expectedRemote) {
207
+ // Already correct
208
+ return { remoteName: 'origin', remoteUrl: expectedRemote };
209
+ }
210
+ if (currentRemote.includes(gitHost)) {
211
+ // Wrong CV-Hub namespace — fix origin
212
+ try {
213
+ (0, node_child_process_1.execSync)(`git remote set-url origin ${expectedRemote}`, { cwd, timeout: 5000 });
214
+ }
215
+ catch { }
216
+ return { remoteName: 'origin', remoteUrl: expectedRemote };
217
+ }
218
+ // External remote (GitHub etc) — add cv-hub as secondary
219
+ const cvRemote = gitExec('git remote get-url cv-hub', cwd);
220
+ if (!cvRemote) {
221
+ try {
222
+ (0, node_child_process_1.execSync)(`git remote add cv-hub ${expectedRemote}`, { cwd, timeout: 5000 });
223
+ }
224
+ catch { }
225
+ }
226
+ else if (cvRemote !== expectedRemote) {
227
+ try {
228
+ (0, node_child_process_1.execSync)(`git remote set-url cv-hub ${expectedRemote}`, { cwd, timeout: 5000 });
229
+ }
230
+ catch { }
231
+ }
232
+ return { remoteName: 'cv-hub', remoteUrl: expectedRemote };
233
+ }
234
+ //# sourceMappingURL=agent-git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-git.js","sourceRoot":"","sources":["../../src/commands/agent-git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * cva agent command
3
+ *
4
+ * Listens for tasks dispatched from Claude.ai via CV-Hub and executes them
5
+ * with Claude Code. The agent registers as an executor, polls for tasks,
6
+ * and reports results back.
7
+ *
8
+ * Two execution modes:
9
+ * --auto-approve: Uses Claude Code -p mode with --allowedTools (proven)
10
+ * Default (relay): Spawns interactive Claude Code, relays permission prompts
11
+ *
12
+ * Usage:
13
+ * cva agent # Start in relay mode
14
+ * cva agent --auto-approve # Start in auto-approve mode
15
+ * cva agent --machine z840-primary # Override machine name
16
+ * cva agent --poll-interval 10 # Check every 10 seconds
17
+ */
18
+ import { Command } from 'commander';
19
+ export declare function agentCommand(): Command;
20
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAopBpC,wBAAgB,YAAY,IAAI,OAAO,CActC"}