codevf 1.0.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 (78) hide show
  1. package/ARCHITECTURE.md +285 -0
  2. package/BUILD_SUMMARY.md +340 -0
  3. package/LICENSE +21 -0
  4. package/QUICKSTART.md +180 -0
  5. package/README.md +104 -0
  6. package/dist/commands/fix.d.ts +2 -0
  7. package/dist/commands/fix.d.ts.map +1 -0
  8. package/dist/commands/fix.js +118 -0
  9. package/dist/commands/fix.js.map +1 -0
  10. package/dist/commands/init.d.ts +2 -0
  11. package/dist/commands/init.d.ts.map +1 -0
  12. package/dist/commands/init.js +270 -0
  13. package/dist/commands/init.js.map +1 -0
  14. package/dist/commands/login.d.ts +2 -0
  15. package/dist/commands/login.d.ts.map +1 -0
  16. package/dist/commands/login.js +62 -0
  17. package/dist/commands/login.js.map +1 -0
  18. package/dist/commands/logout.d.ts +2 -0
  19. package/dist/commands/logout.d.ts.map +1 -0
  20. package/dist/commands/logout.js +14 -0
  21. package/dist/commands/logout.js.map +1 -0
  22. package/dist/commands/sync.d.ts +4 -0
  23. package/dist/commands/sync.d.ts.map +1 -0
  24. package/dist/commands/sync.js +93 -0
  25. package/dist/commands/sync.js.map +1 -0
  26. package/dist/commands/tasks.d.ts +2 -0
  27. package/dist/commands/tasks.d.ts.map +1 -0
  28. package/dist/commands/tasks.js +41 -0
  29. package/dist/commands/tasks.js.map +1 -0
  30. package/dist/index.d.ts +3 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +248 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/modules/api.d.ts +36 -0
  35. package/dist/modules/api.d.ts.map +1 -0
  36. package/dist/modules/api.js +107 -0
  37. package/dist/modules/api.js.map +1 -0
  38. package/dist/modules/auth.d.ts +13 -0
  39. package/dist/modules/auth.d.ts.map +1 -0
  40. package/dist/modules/auth.js +80 -0
  41. package/dist/modules/auth.js.map +1 -0
  42. package/dist/modules/config.d.ts +17 -0
  43. package/dist/modules/config.d.ts.map +1 -0
  44. package/dist/modules/config.js +76 -0
  45. package/dist/modules/config.js.map +1 -0
  46. package/dist/modules/git.d.ts +13 -0
  47. package/dist/modules/git.d.ts.map +1 -0
  48. package/dist/modules/git.js +78 -0
  49. package/dist/modules/git.js.map +1 -0
  50. package/dist/modules/permissions.d.ts +5 -0
  51. package/dist/modules/permissions.d.ts.map +1 -0
  52. package/dist/modules/permissions.js +42 -0
  53. package/dist/modules/permissions.js.map +1 -0
  54. package/dist/modules/websocket.d.ts +17 -0
  55. package/dist/modules/websocket.d.ts.map +1 -0
  56. package/dist/modules/websocket.js +80 -0
  57. package/dist/modules/websocket.js.map +1 -0
  58. package/dist/types/index.d.ts +186 -0
  59. package/dist/types/index.d.ts.map +1 -0
  60. package/dist/types/index.js +40 -0
  61. package/dist/types/index.js.map +1 -0
  62. package/dist/ui/LiveSession.d.ts +13 -0
  63. package/dist/ui/LiveSession.d.ts.map +1 -0
  64. package/dist/ui/LiveSession.js +451 -0
  65. package/dist/ui/LiveSession.js.map +1 -0
  66. package/dist/utils/detect.d.ts +3 -0
  67. package/dist/utils/detect.d.ts.map +1 -0
  68. package/dist/utils/detect.js +78 -0
  69. package/dist/utils/detect.js.map +1 -0
  70. package/dist/utils/errors.d.ts +3 -0
  71. package/dist/utils/errors.d.ts.map +1 -0
  72. package/dist/utils/errors.js +36 -0
  73. package/dist/utils/errors.js.map +1 -0
  74. package/dist/utils/upload.d.ts +3 -0
  75. package/dist/utils/upload.d.ts.map +1 -0
  76. package/dist/utils/upload.js +75 -0
  77. package/dist/utils/upload.js.map +1 -0
  78. package/package.json +76 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/modules/git.ts"],"names":[],"mappings":"AAGA,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAY;gBAEX,GAAG,GAAE,MAAsB;IAIjC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAS7B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IASnC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAShC,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IASzC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASlD,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQtD"}
@@ -0,0 +1,78 @@
1
+ import simpleGit from 'simple-git';
2
+ import { GitError } from '../types/index.js';
3
+ export class GitManager {
4
+ constructor(cwd = process.cwd()) {
5
+ this.git = simpleGit(cwd);
6
+ }
7
+ async isGitRepo() {
8
+ try {
9
+ await this.git.status();
10
+ return true;
11
+ }
12
+ catch {
13
+ return false;
14
+ }
15
+ }
16
+ async getCurrentBranch() {
17
+ try {
18
+ const status = await this.git.status();
19
+ return status.current || '';
20
+ }
21
+ catch (error) {
22
+ throw new GitError(`Failed to get current branch: ${error}`);
23
+ }
24
+ }
25
+ async getCommitHash() {
26
+ try {
27
+ const log = await this.git.log({ maxCount: 1 });
28
+ return log.latest?.hash || '';
29
+ }
30
+ catch (error) {
31
+ throw new GitError(`Failed to get commit hash: ${error}`);
32
+ }
33
+ }
34
+ async hasUncommittedChanges() {
35
+ try {
36
+ const status = await this.git.status();
37
+ return !status.isClean();
38
+ }
39
+ catch (error) {
40
+ throw new GitError(`Failed to check git status: ${error}`);
41
+ }
42
+ }
43
+ async createBranch(branchName) {
44
+ try {
45
+ await this.git.checkoutLocalBranch(branchName);
46
+ }
47
+ catch (error) {
48
+ throw new GitError(`Failed to create branch '${branchName}': ${error}`);
49
+ }
50
+ }
51
+ async switchBranch(branchName) {
52
+ try {
53
+ await this.git.checkout(branchName);
54
+ }
55
+ catch (error) {
56
+ throw new GitError(`Failed to switch to branch '${branchName}': ${error}`);
57
+ }
58
+ }
59
+ async branchExists(branchName) {
60
+ try {
61
+ const branches = await this.git.branchLocal();
62
+ return branches.all.includes(branchName);
63
+ }
64
+ catch {
65
+ return false;
66
+ }
67
+ }
68
+ async ensureBranch(branchName) {
69
+ const exists = await this.branchExists(branchName);
70
+ if (!exists) {
71
+ await this.createBranch(branchName);
72
+ }
73
+ else {
74
+ await this.switchBranch(branchName);
75
+ }
76
+ }
77
+ }
78
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/modules/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class PermissionManager {
2
+ requestCommandPermission(command: string, reason?: string): Promise<boolean>;
3
+ requestFilePermission(filePath: string, reason?: string): Promise<boolean>;
4
+ }
5
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/modules/permissions.ts"],"names":[],"mappings":"AAIA,qBAAa,iBAAiB;IACtB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB5E,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA0BjF"}
@@ -0,0 +1,42 @@
1
+ import prompts from 'prompts';
2
+ import chalk from 'chalk';
3
+ import { shouldWarnAboutFile } from '../utils/upload.js';
4
+ export class PermissionManager {
5
+ async requestCommandPermission(command, reason) {
6
+ console.log('\n' + chalk.yellow('━'.repeat(60)));
7
+ console.log(chalk.bold.yellow('Engineer requests to run:'));
8
+ console.log(chalk.white(` ${command}`));
9
+ if (reason) {
10
+ console.log(chalk.dim(` Reason: ${reason}`));
11
+ }
12
+ console.log(chalk.yellow('━'.repeat(60)));
13
+ const response = await prompts({
14
+ type: 'confirm',
15
+ name: 'approved',
16
+ message: `Allow command: "${command}"?`,
17
+ initial: false,
18
+ });
19
+ return response.approved ?? false;
20
+ }
21
+ async requestFilePermission(filePath, reason) {
22
+ console.log('\n' + chalk.yellow('━'.repeat(60)));
23
+ console.log(chalk.bold.yellow('Engineer requests file:'));
24
+ console.log(chalk.white(` ${filePath}`));
25
+ if (reason) {
26
+ console.log(chalk.dim(` Reason: ${reason}`));
27
+ }
28
+ const isSensitive = shouldWarnAboutFile(filePath);
29
+ if (isSensitive) {
30
+ console.log(chalk.red.bold(' ⚠ WARNING: This file may contain sensitive information!'));
31
+ }
32
+ console.log(chalk.yellow('━'.repeat(60)));
33
+ const response = await prompts({
34
+ type: 'confirm',
35
+ name: 'approved',
36
+ message: `Allow file access: "${filePath}"?${isSensitive ? ' ⚠ SENSITIVE' : ''}`,
37
+ initial: false,
38
+ });
39
+ return response.approved ?? false;
40
+ }
41
+ }
42
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/modules/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAC,wBAAwB,CAAC,OAAe,EAAE,MAAe;QAC7D,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,mBAAmB,OAAO,IAAI;YACvC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,QAAgB,EAAE,MAAe;QAC3D,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAC5E,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,uBAAuB,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;YAChF,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC;IACpC,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { EventEmitter } from 'events';
2
+ import { WebSocketMessage } from '../types/index.js';
3
+ export declare class WebSocketClient extends EventEmitter {
4
+ private ws;
5
+ private url;
6
+ private token;
7
+ private reconnectAttempts;
8
+ private maxReconnectAttempts;
9
+ private reconnectDelay;
10
+ constructor(url: string, token: string);
11
+ connect(): Promise<void>;
12
+ send(message: WebSocketMessage): void;
13
+ disconnect(): void;
14
+ isConnected(): boolean;
15
+ private attemptReconnect;
16
+ }
17
+ //# sourceMappingURL=websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/modules/websocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AAEnE,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,cAAc,CAAQ;gBAElB,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAMtC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCxB,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAQrC,UAAU,IAAI,IAAI;IAOlB,WAAW,IAAI,OAAO;IAItB,OAAO,CAAC,gBAAgB;CAezB"}
@@ -0,0 +1,80 @@
1
+ import WebSocket from 'ws';
2
+ import { EventEmitter } from 'events';
3
+ import { NetworkError } from '../types/index.js';
4
+ export class WebSocketClient extends EventEmitter {
5
+ constructor(url, token) {
6
+ super();
7
+ this.ws = null;
8
+ this.reconnectAttempts = 0;
9
+ this.maxReconnectAttempts = 5;
10
+ this.reconnectDelay = 2000;
11
+ this.url = url;
12
+ this.token = token;
13
+ }
14
+ connect() {
15
+ return new Promise((resolve, reject) => {
16
+ try {
17
+ this.ws = new WebSocket(this.url, {
18
+ headers: {
19
+ Authorization: `Bearer ${this.token}`,
20
+ },
21
+ });
22
+ this.ws.on('open', () => {
23
+ this.reconnectAttempts = 0;
24
+ this.emit('connected');
25
+ resolve();
26
+ });
27
+ this.ws.on('message', (data) => {
28
+ try {
29
+ const message = JSON.parse(data.toString());
30
+ this.emit('message', message);
31
+ this.emit(message.type, message);
32
+ }
33
+ catch (error) {
34
+ this.emit('error', new Error(`Failed to parse message: ${error}`));
35
+ }
36
+ });
37
+ this.ws.on('close', () => {
38
+ this.emit('disconnected');
39
+ this.attemptReconnect();
40
+ });
41
+ this.ws.on('error', (error) => {
42
+ this.emit('error', new NetworkError(`WebSocket error: ${error.message}`));
43
+ reject(error);
44
+ });
45
+ }
46
+ catch (error) {
47
+ reject(error);
48
+ }
49
+ });
50
+ }
51
+ send(message) {
52
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
53
+ throw new NetworkError('WebSocket is not connected');
54
+ }
55
+ this.ws.send(JSON.stringify(message));
56
+ }
57
+ disconnect() {
58
+ if (this.ws) {
59
+ this.ws.close();
60
+ this.ws = null;
61
+ }
62
+ }
63
+ isConnected() {
64
+ return this.ws !== null && this.ws.readyState === WebSocket.OPEN;
65
+ }
66
+ attemptReconnect() {
67
+ if (this.reconnectAttempts >= this.maxReconnectAttempts) {
68
+ this.emit('error', new NetworkError('Max reconnection attempts reached'));
69
+ return;
70
+ }
71
+ this.reconnectAttempts++;
72
+ this.emit('reconnecting', this.reconnectAttempts);
73
+ setTimeout(() => {
74
+ this.connect().catch((error) => {
75
+ this.emit('error', error);
76
+ });
77
+ }, this.reconnectDelay * this.reconnectAttempts);
78
+ }
79
+ }
80
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/modules/websocket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ export interface Config {
2
+ projectId: string;
3
+ allowedTools: string[];
4
+ testCommand: string;
5
+ buildCommand: string;
6
+ repoUploaded: boolean;
7
+ branchMode: string;
8
+ createdAt: string;
9
+ version: string;
10
+ }
11
+ export interface AuthToken {
12
+ accessToken: string;
13
+ refreshToken: string;
14
+ expiresAt: string;
15
+ userId: string;
16
+ }
17
+ export interface LastSync {
18
+ timestamp: string;
19
+ commitHash: string;
20
+ branch: string;
21
+ }
22
+ export type ProjectType = 'node' | 'python' | 'go' | 'ruby' | 'java' | 'rust' | 'unknown';
23
+ export interface ProjectDetection {
24
+ type: ProjectType;
25
+ confidence: number;
26
+ indicators: string[];
27
+ suggestedTestCommand?: string;
28
+ suggestedBuildCommand?: string;
29
+ }
30
+ export interface InitWizardAnswers {
31
+ projectType: ProjectType;
32
+ testCommand: string;
33
+ buildCommand: string;
34
+ allowedTools: string[];
35
+ uploadCode: boolean;
36
+ allowBranchAccess: boolean;
37
+ }
38
+ export interface WebSocketMessage {
39
+ type: string;
40
+ timestamp: string;
41
+ payload: any;
42
+ }
43
+ export interface EngineerMessage extends WebSocketMessage {
44
+ type: 'engineer_message';
45
+ payload: {
46
+ engineerId: string;
47
+ engineerName: string;
48
+ message: string;
49
+ };
50
+ }
51
+ export interface CommandRequest extends WebSocketMessage {
52
+ type: 'request_command';
53
+ payload: {
54
+ command: string;
55
+ reason?: string;
56
+ };
57
+ }
58
+ export interface FileRequest extends WebSocketMessage {
59
+ type: 'request_file';
60
+ payload: {
61
+ filePath: string;
62
+ reason?: string;
63
+ };
64
+ }
65
+ export interface ScreenshareRequest extends WebSocketMessage {
66
+ type: 'screenshare_request';
67
+ payload: {
68
+ url: string;
69
+ };
70
+ }
71
+ export interface BillingUpdate extends WebSocketMessage {
72
+ type: 'billing_update';
73
+ payload: {
74
+ creditsUsed: number;
75
+ sessionDuration: number;
76
+ };
77
+ }
78
+ export interface EngineerConnected extends WebSocketMessage {
79
+ type: 'engineer_connected';
80
+ payload: {
81
+ engineerId: string;
82
+ engineerName: string;
83
+ engineerTitle: string;
84
+ };
85
+ }
86
+ export interface SessionEnd extends WebSocketMessage {
87
+ type: 'session_end';
88
+ payload: {
89
+ reason: string;
90
+ summary: SessionSummary;
91
+ };
92
+ }
93
+ export interface SessionSummary {
94
+ engineerName: string;
95
+ sessionDuration: number;
96
+ creditsUsed: number;
97
+ tasksCompleted: string[];
98
+ }
99
+ export interface CustomerMessage {
100
+ type: 'customer_message';
101
+ payload: {
102
+ message: string;
103
+ };
104
+ }
105
+ export interface ApproveCommand {
106
+ type: 'approve_command';
107
+ payload: {
108
+ command: string;
109
+ approved: boolean;
110
+ };
111
+ }
112
+ export interface CommandOutput {
113
+ type: 'command_output';
114
+ payload: {
115
+ command: string;
116
+ exitCode: number;
117
+ stdout: string;
118
+ stderr: string;
119
+ };
120
+ }
121
+ export interface ApproveFile {
122
+ type: 'approve_file';
123
+ payload: {
124
+ filePath: string;
125
+ approved: boolean;
126
+ };
127
+ }
128
+ export interface FileUpload {
129
+ type: 'file_upload';
130
+ payload: {
131
+ filePath: string;
132
+ content: string;
133
+ };
134
+ }
135
+ export interface ApiResponse<T = any> {
136
+ success: boolean;
137
+ data?: T;
138
+ error?: string;
139
+ message?: string;
140
+ }
141
+ export interface CreateTaskRequest {
142
+ issueDescription: string;
143
+ projectId: string;
144
+ maxCredits?: number;
145
+ }
146
+ export interface CreateTaskResponse {
147
+ taskId: string;
148
+ estimatedWaitTime: number;
149
+ }
150
+ export interface InitProjectRequest {
151
+ projectType: ProjectType;
152
+ testCommand: string;
153
+ buildCommand: string;
154
+ allowedTools: string[];
155
+ repoUploaded: boolean;
156
+ }
157
+ export interface InitProjectResponse {
158
+ projectId: string;
159
+ uploadUrl?: string;
160
+ }
161
+ export interface SyncProjectRequest {
162
+ projectId: string;
163
+ commitHash: string;
164
+ branch: string;
165
+ }
166
+ export declare class CodeVFError extends Error {
167
+ code: string;
168
+ recoverable: boolean;
169
+ constructor(message: string, code: string, recoverable?: boolean);
170
+ }
171
+ export declare class AuthError extends CodeVFError {
172
+ constructor(message: string, recoverable?: boolean);
173
+ }
174
+ export declare class NetworkError extends CodeVFError {
175
+ constructor(message: string, recoverable?: boolean);
176
+ }
177
+ export declare class ConfigError extends CodeVFError {
178
+ constructor(message: string, recoverable?: boolean);
179
+ }
180
+ export declare class PermissionError extends CodeVFError {
181
+ constructor(message: string, recoverable?: boolean);
182
+ }
183
+ export declare class GitError extends CodeVFError {
184
+ constructor(message: string, recoverable?: boolean);
185
+ }
186
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ // Error Types
2
+ export class CodeVFError extends Error {
3
+ constructor(message, code, recoverable = false) {
4
+ super(message);
5
+ this.name = 'CodeVFError';
6
+ this.code = code;
7
+ this.recoverable = recoverable;
8
+ }
9
+ }
10
+ export class AuthError extends CodeVFError {
11
+ constructor(message, recoverable = false) {
12
+ super(message, 'AUTH_ERROR', recoverable);
13
+ this.name = 'AuthError';
14
+ }
15
+ }
16
+ export class NetworkError extends CodeVFError {
17
+ constructor(message, recoverable = true) {
18
+ super(message, 'NETWORK_ERROR', recoverable);
19
+ this.name = 'NetworkError';
20
+ }
21
+ }
22
+ export class ConfigError extends CodeVFError {
23
+ constructor(message, recoverable = false) {
24
+ super(message, 'CONFIG_ERROR', recoverable);
25
+ this.name = 'ConfigError';
26
+ }
27
+ }
28
+ export class PermissionError extends CodeVFError {
29
+ constructor(message, recoverable = false) {
30
+ super(message, 'PERMISSION_ERROR', recoverable);
31
+ this.name = 'PermissionError';
32
+ }
33
+ }
34
+ export class GitError extends CodeVFError {
35
+ constructor(message, recoverable = false) {
36
+ super(message, 'GIT_ERROR', recoverable);
37
+ this.name = 'GitError';
38
+ }
39
+ }
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAoMA,cAAc;AACd,MAAM,OAAO,WAAY,SAAQ,KAAK;IAIpC,YAAY,OAAe,EAAE,IAAY,EAAE,WAAW,GAAG,KAAK;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,WAAW;IACxC,YAAY,OAAe,EAAE,WAAW,GAAG,KAAK;QAC9C,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C,YAAY,OAAe,EAAE,WAAW,GAAG,IAAI;QAC7C,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C,YAAY,OAAe,EAAE,WAAW,GAAG,KAAK;QAC9C,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,YAAY,OAAe,EAAE,WAAW,GAAG,KAAK;QAC9C,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,WAAW;IACvC,YAAY,OAAe,EAAE,WAAW,GAAG,KAAK;QAC9C,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { WebSocketClient } from '../modules/websocket.js';
3
+ import { PermissionManager } from '../modules/permissions.js';
4
+ import { ApiClient } from '../modules/api.js';
5
+ interface LiveSessionProps {
6
+ taskId: string;
7
+ wsClient: WebSocketClient;
8
+ apiClient: ApiClient;
9
+ permissionManager: PermissionManager;
10
+ }
11
+ export declare const LiveSession: React.FC<LiveSessionProps>;
12
+ export {};
13
+ //# sourceMappingURL=LiveSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveSession.d.ts","sourceRoot":"","sources":["../../src/ui/LiveSession.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAsB9C,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAyelD,CAAC"}