episoda 0.2.3 → 0.2.5
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/commands/auth.js +1 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/dev.js +1 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/status.d.ts +5 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +29 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/daemon/daemon-manager.js +1 -1
- package/dist/daemon/daemon-manager.js.map +1 -1
- package/dist/daemon/daemon-process.js +42 -4
- package/dist/daemon/daemon-process.js.map +1 -1
- package/dist/daemon/identity-server.d.ts.map +1 -1
- package/dist/daemon/identity-server.js +4 -0
- package/dist/daemon/identity-server.js.map +1 -1
- package/dist/daemon/machine-id.js +1 -1
- package/dist/daemon/machine-id.js.map +1 -1
- package/dist/daemon/project-tracker.js +1 -1
- package/dist/daemon/project-tracker.js.map +1 -1
- package/dist/dev-wrapper.js +1 -1
- package/dist/dev-wrapper.js.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/ipc/ipc-client.d.ts +21 -0
- package/dist/ipc/ipc-client.d.ts.map +1 -1
- package/dist/ipc/ipc-client.js +13 -1
- package/dist/ipc/ipc-client.js.map +1 -1
- package/dist/ipc/ipc-server.js +1 -1
- package/dist/ipc/ipc-server.js.map +1 -1
- package/dist/output.d.ts +1 -1
- package/dist/output.d.ts.map +1 -1
- package/package.json +2 -1
- package/dist/core/auth.d.ts +0 -26
- package/dist/core/auth.d.ts.map +0 -1
- package/dist/core/auth.js +0 -113
- package/dist/core/auth.js.map +0 -1
- package/dist/core/command-protocol.d.ts +0 -262
- package/dist/core/command-protocol.d.ts.map +0 -1
- package/dist/core/command-protocol.js +0 -13
- package/dist/core/command-protocol.js.map +0 -1
- package/dist/core/connection-manager.d.ts +0 -58
- package/dist/core/connection-manager.d.ts.map +0 -1
- package/dist/core/connection-manager.js +0 -215
- package/dist/core/connection-manager.js.map +0 -1
- package/dist/core/errors.d.ts +0 -18
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -55
- package/dist/core/errors.js.map +0 -1
- package/dist/core/git-executor.d.ts +0 -157
- package/dist/core/git-executor.d.ts.map +0 -1
- package/dist/core/git-executor.js +0 -1605
- package/dist/core/git-executor.js.map +0 -1
- package/dist/core/git-parser.d.ts +0 -40
- package/dist/core/git-parser.d.ts.map +0 -1
- package/dist/core/git-parser.js +0 -194
- package/dist/core/git-parser.js.map +0 -1
- package/dist/core/git-validator.d.ts +0 -42
- package/dist/core/git-validator.d.ts.map +0 -1
- package/dist/core/git-validator.js +0 -102
- package/dist/core/git-validator.js.map +0 -1
- package/dist/core/index.d.ts +0 -17
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -41
- package/dist/core/index.js.map +0 -1
- package/dist/core/version.d.ts +0 -9
- package/dist/core/version.d.ts.map +0 -1
- package/dist/core/version.js +0 -19
- package/dist/core/version.js.map +0 -1
- package/dist/core/websocket-client.d.ts +0 -122
- package/dist/core/websocket-client.d.ts.map +0 -1
- package/dist/core/websocket-client.js +0 -438
- package/dist/core/websocket-client.js.map +0 -1
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Connection Manager for CLI WebSocket tracking (Phase 2)
|
|
4
|
-
*
|
|
5
|
-
* Simpler than the full Git command WebSocket client.
|
|
6
|
-
* Focuses only on maintaining connection status via heartbeats.
|
|
7
|
-
*/
|
|
8
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
-
};
|
|
44
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
exports.ConnectionManager = void 0;
|
|
46
|
-
const ws_1 = __importDefault(require("ws"));
|
|
47
|
-
const os = __importStar(require("os"));
|
|
48
|
-
class ConnectionManager {
|
|
49
|
-
constructor(config) {
|
|
50
|
-
this.ws = null;
|
|
51
|
-
this.pingInterval = null;
|
|
52
|
-
this.reconnectTimeout = null;
|
|
53
|
-
this.connectionId = null;
|
|
54
|
-
this.isIntentionalClose = false;
|
|
55
|
-
this.reconnectAttempts = 0;
|
|
56
|
-
this.maxReconnectAttempts = 10;
|
|
57
|
-
this.config = config;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Connect to the WebSocket server
|
|
61
|
-
*/
|
|
62
|
-
connect() {
|
|
63
|
-
return new Promise((resolve, reject) => {
|
|
64
|
-
try {
|
|
65
|
-
// Convert HTTP to WebSocket URL
|
|
66
|
-
const wsUrl = this.config.apiUrl
|
|
67
|
-
.replace('http://', 'ws://')
|
|
68
|
-
.replace('https://', 'wss://');
|
|
69
|
-
const url = `${wsUrl}/api/cli/ws`;
|
|
70
|
-
console.log(`[Connection] Connecting to ${url}`);
|
|
71
|
-
this.ws = new ws_1.default(url);
|
|
72
|
-
this.isIntentionalClose = false;
|
|
73
|
-
this.ws.on('open', () => {
|
|
74
|
-
console.log('[Connection] WebSocket connected');
|
|
75
|
-
this.reconnectAttempts = 0;
|
|
76
|
-
// Send connect message
|
|
77
|
-
this.send({
|
|
78
|
-
type: 'connect',
|
|
79
|
-
projectId: this.config.projectId,
|
|
80
|
-
userId: this.config.userId,
|
|
81
|
-
workspaceId: this.config.workspaceId,
|
|
82
|
-
cliVersion: this.config.cliVersion,
|
|
83
|
-
workingDirectory: this.config.workingDirectory,
|
|
84
|
-
osPlatform: os.platform(),
|
|
85
|
-
osArch: os.arch(),
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
this.ws.on('message', (data) => {
|
|
89
|
-
try {
|
|
90
|
-
const message = JSON.parse(data.toString());
|
|
91
|
-
switch (message.type) {
|
|
92
|
-
case 'connected':
|
|
93
|
-
this.connectionId = message.connectionId;
|
|
94
|
-
console.log(`[Connection] Connected with ID: ${this.connectionId}`);
|
|
95
|
-
this.startHeartbeat();
|
|
96
|
-
if (this.connectionId) {
|
|
97
|
-
resolve(this.connectionId);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
reject(new Error('Connection ID not received from server'));
|
|
101
|
-
}
|
|
102
|
-
break;
|
|
103
|
-
case 'pong':
|
|
104
|
-
// Heartbeat acknowledged
|
|
105
|
-
break;
|
|
106
|
-
case 'error':
|
|
107
|
-
console.error(`[Connection] Server error: ${message.message}`);
|
|
108
|
-
reject(new Error(message.message));
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
console.error('[Connection] Failed to parse message:', error);
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
this.ws.on('close', (code, reason) => {
|
|
117
|
-
console.log(`[Connection] WebSocket closed: ${code} ${reason.toString()}`);
|
|
118
|
-
this.stopHeartbeat();
|
|
119
|
-
if (!this.isIntentionalClose && this.reconnectAttempts < this.maxReconnectAttempts) {
|
|
120
|
-
this.scheduleReconnect();
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
this.ws.on('error', (error) => {
|
|
124
|
-
console.error('[Connection] WebSocket error:', error);
|
|
125
|
-
reject(error);
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
reject(error);
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Disconnect from the server
|
|
135
|
-
*/
|
|
136
|
-
disconnect() {
|
|
137
|
-
console.log('[Connection] Disconnecting...');
|
|
138
|
-
this.isIntentionalClose = true;
|
|
139
|
-
this.stopHeartbeat();
|
|
140
|
-
this.clearReconnectTimeout();
|
|
141
|
-
if (this.ws) {
|
|
142
|
-
if (this.ws.readyState === ws_1.default.OPEN) {
|
|
143
|
-
this.send({ type: 'disconnect' });
|
|
144
|
-
}
|
|
145
|
-
this.ws.close();
|
|
146
|
-
this.ws = null;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Send a message to the server
|
|
151
|
-
*/
|
|
152
|
-
send(message) {
|
|
153
|
-
if (this.ws?.readyState === ws_1.default.OPEN) {
|
|
154
|
-
this.ws.send(JSON.stringify(message));
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Start sending heartbeat pings
|
|
159
|
-
*/
|
|
160
|
-
startHeartbeat() {
|
|
161
|
-
this.stopHeartbeat();
|
|
162
|
-
// Send ping every 15 seconds
|
|
163
|
-
this.pingInterval = setInterval(() => {
|
|
164
|
-
this.send({
|
|
165
|
-
type: 'ping',
|
|
166
|
-
timestamp: new Date().toISOString(),
|
|
167
|
-
});
|
|
168
|
-
}, 15000);
|
|
169
|
-
// Send initial ping
|
|
170
|
-
this.send({
|
|
171
|
-
type: 'ping',
|
|
172
|
-
timestamp: new Date().toISOString(),
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Stop heartbeat
|
|
177
|
-
*/
|
|
178
|
-
stopHeartbeat() {
|
|
179
|
-
if (this.pingInterval) {
|
|
180
|
-
clearInterval(this.pingInterval);
|
|
181
|
-
this.pingInterval = null;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Schedule reconnection with exponential backoff
|
|
186
|
-
*/
|
|
187
|
-
scheduleReconnect() {
|
|
188
|
-
this.clearReconnectTimeout();
|
|
189
|
-
const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts), 30000);
|
|
190
|
-
console.log(`[Connection] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts + 1}/${this.maxReconnectAttempts})`);
|
|
191
|
-
this.reconnectTimeout = setTimeout(() => {
|
|
192
|
-
this.reconnectAttempts++;
|
|
193
|
-
this.connect().catch((error) => {
|
|
194
|
-
console.error('[Connection] Reconnection failed:', error);
|
|
195
|
-
});
|
|
196
|
-
}, delay);
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Clear reconnect timeout
|
|
200
|
-
*/
|
|
201
|
-
clearReconnectTimeout() {
|
|
202
|
-
if (this.reconnectTimeout) {
|
|
203
|
-
clearTimeout(this.reconnectTimeout);
|
|
204
|
-
this.reconnectTimeout = null;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Check if connected
|
|
209
|
-
*/
|
|
210
|
-
isConnected() {
|
|
211
|
-
return this.ws?.readyState === ws_1.default.OPEN && this.connectionId !== null;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
exports.ConnectionManager = ConnectionManager;
|
|
215
|
-
//# sourceMappingURL=connection-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/core/connection-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/core/errors.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error handling utilities
|
|
3
|
-
*/
|
|
4
|
-
import { ErrorCode } from './command-protocol';
|
|
5
|
-
/**
|
|
6
|
-
* Custom error class for Episoda operations
|
|
7
|
-
*/
|
|
8
|
-
export declare class EpisodaError extends Error {
|
|
9
|
-
code: ErrorCode;
|
|
10
|
-
details?: Record<string, any> | undefined;
|
|
11
|
-
constructor(code: ErrorCode, message: string, details?: Record<string, any> | undefined);
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Create a user-friendly error message from error code
|
|
15
|
-
* (For CLI use - MCP will format differently)
|
|
16
|
-
*/
|
|
17
|
-
export declare function formatErrorMessage(code: ErrorCode, details?: Record<string, any>): string;
|
|
18
|
-
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAE5B,IAAI,EAAE,SAAS;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAF7B,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAA;CAKvC;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAgCzF"}
|
package/dist/core/errors.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Error handling utilities
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EpisodaError = void 0;
|
|
7
|
-
exports.formatErrorMessage = formatErrorMessage;
|
|
8
|
-
/**
|
|
9
|
-
* Custom error class for Episoda operations
|
|
10
|
-
*/
|
|
11
|
-
class EpisodaError extends Error {
|
|
12
|
-
constructor(code, message, details) {
|
|
13
|
-
super(message);
|
|
14
|
-
this.code = code;
|
|
15
|
-
this.details = details;
|
|
16
|
-
this.name = 'EpisodaError';
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.EpisodaError = EpisodaError;
|
|
20
|
-
// Note: parseGitError is exported from git-parser.ts
|
|
21
|
-
/**
|
|
22
|
-
* Create a user-friendly error message from error code
|
|
23
|
-
* (For CLI use - MCP will format differently)
|
|
24
|
-
*/
|
|
25
|
-
function formatErrorMessage(code, details) {
|
|
26
|
-
const messages = {
|
|
27
|
-
'GIT_NOT_INSTALLED': 'Git is not installed or not in PATH',
|
|
28
|
-
'NOT_GIT_REPO': 'Not a git repository',
|
|
29
|
-
'MERGE_CONFLICT': 'Merge conflict detected',
|
|
30
|
-
'REBASE_CONFLICT': 'Rebase conflict detected - resolve conflicts or abort rebase',
|
|
31
|
-
'UNCOMMITTED_CHANGES': 'Uncommitted changes would be overwritten',
|
|
32
|
-
'NETWORK_ERROR': 'Network error occurred',
|
|
33
|
-
'AUTH_FAILURE': 'Authentication failed',
|
|
34
|
-
'BRANCH_NOT_FOUND': 'Branch not found',
|
|
35
|
-
'BRANCH_ALREADY_EXISTS': 'Branch already exists',
|
|
36
|
-
'PUSH_REJECTED': 'Push rejected by remote',
|
|
37
|
-
'COMMAND_TIMEOUT': 'Command timed out',
|
|
38
|
-
'UNKNOWN_ERROR': 'Unknown error occurred'
|
|
39
|
-
};
|
|
40
|
-
let message = messages[code] || `Error: ${code}`;
|
|
41
|
-
// Add details if provided
|
|
42
|
-
if (details) {
|
|
43
|
-
if (details.uncommittedFiles && details.uncommittedFiles.length > 0) {
|
|
44
|
-
message += `\nUncommitted files: ${details.uncommittedFiles.join(', ')}`;
|
|
45
|
-
}
|
|
46
|
-
if (details.conflictingFiles && details.conflictingFiles.length > 0) {
|
|
47
|
-
message += `\nConflicting files: ${details.conflictingFiles.join(', ')}`;
|
|
48
|
-
}
|
|
49
|
-
if (details.branchName) {
|
|
50
|
-
message += `\nBranch: ${details.branchName}`;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return message;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=errors.js.map
|
package/dist/core/errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAwBH,gDAgCC;AApDD;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK;IACrC,YACS,IAAe,EACtB,OAAe,EACR,OAA6B;QAEpC,KAAK,CAAC,OAAO,CAAC,CAAA;QAJP,SAAI,GAAJ,IAAI,CAAW;QAEf,YAAO,GAAP,OAAO,CAAsB;QAGpC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AATD,oCASC;AAED,qDAAqD;AAErD;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,IAAe,EAAE,OAA6B;IAC/E,MAAM,QAAQ,GAA8B;QAC1C,mBAAmB,EAAE,qCAAqC;QAC1D,cAAc,EAAE,sBAAsB;QACtC,gBAAgB,EAAE,yBAAyB;QAC3C,iBAAiB,EAAE,8DAA8D;QACjF,qBAAqB,EAAE,0CAA0C;QACjE,eAAe,EAAE,wBAAwB;QACzC,cAAc,EAAE,uBAAuB;QACvC,kBAAkB,EAAE,kBAAkB;QACtC,uBAAuB,EAAE,uBAAuB;QAChD,eAAe,EAAE,yBAAyB;QAC1C,iBAAiB,EAAE,mBAAmB;QACtC,eAAe,EAAE,wBAAwB;KAC1C,CAAA;IAED,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,IAAI,EAAE,CAAA;IAEhD,0BAA0B;IAC1B,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,wBAAwB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAC1E,CAAC;QACD,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,wBAAwB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAC1E,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,IAAI,aAAa,OAAO,CAAC,UAAU,EAAE,CAAA;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Git Command Executor
|
|
3
|
-
*
|
|
4
|
-
* Executes git commands with error handling and returns structured results.
|
|
5
|
-
* Interface-agnostic: Returns structured data, not formatted strings.
|
|
6
|
-
*/
|
|
7
|
-
import { GitCommand, ExecutionResult, ExecutionOptions } from './command-protocol';
|
|
8
|
-
/**
|
|
9
|
-
* Executes git commands with error handling
|
|
10
|
-
*
|
|
11
|
-
* DESIGN PRINCIPLES:
|
|
12
|
-
* - Interface-agnostic: Returns structured data, not formatted strings
|
|
13
|
-
* - No console.log: Let the interface handle output
|
|
14
|
-
* - Error codes: Return error codes, not messages
|
|
15
|
-
* - Reusable: Can be used by CLI, MCP, or any other interface
|
|
16
|
-
*/
|
|
17
|
-
export declare class GitExecutor {
|
|
18
|
-
/**
|
|
19
|
-
* Execute a git command
|
|
20
|
-
* @param command - The git command to execute
|
|
21
|
-
* @param options - Execution options (timeout, cwd, etc.)
|
|
22
|
-
* @returns Structured result with success/error details
|
|
23
|
-
*/
|
|
24
|
-
execute(command: GitCommand, options?: ExecutionOptions): Promise<ExecutionResult>;
|
|
25
|
-
/**
|
|
26
|
-
* Execute checkout command
|
|
27
|
-
*/
|
|
28
|
-
private executeCheckout;
|
|
29
|
-
/**
|
|
30
|
-
* Execute create_branch command
|
|
31
|
-
*/
|
|
32
|
-
private executeCreateBranch;
|
|
33
|
-
/**
|
|
34
|
-
* Execute commit command
|
|
35
|
-
*/
|
|
36
|
-
private executeCommit;
|
|
37
|
-
/**
|
|
38
|
-
* Execute push command
|
|
39
|
-
* EP769: Added force parameter for pushing rebased branches
|
|
40
|
-
*/
|
|
41
|
-
private executePush;
|
|
42
|
-
/**
|
|
43
|
-
* Execute status command
|
|
44
|
-
*/
|
|
45
|
-
private executeStatus;
|
|
46
|
-
/**
|
|
47
|
-
* Execute pull command
|
|
48
|
-
*/
|
|
49
|
-
private executePull;
|
|
50
|
-
/**
|
|
51
|
-
* Execute delete_branch command
|
|
52
|
-
*/
|
|
53
|
-
private executeDeleteBranch;
|
|
54
|
-
/**
|
|
55
|
-
* EP597: Execute branch_exists command
|
|
56
|
-
* Checks if a branch exists locally and/or remotely
|
|
57
|
-
*/
|
|
58
|
-
private executeBranchExists;
|
|
59
|
-
/**
|
|
60
|
-
* EP597: Execute branch_has_commits command
|
|
61
|
-
* Checks if a branch has commits ahead of the base branch (default: main)
|
|
62
|
-
*/
|
|
63
|
-
private executeBranchHasCommits;
|
|
64
|
-
/**
|
|
65
|
-
* EP598: Execute main branch check - returns current branch, uncommitted files, and unpushed commits
|
|
66
|
-
*/
|
|
67
|
-
private executeMainBranchCheck;
|
|
68
|
-
/**
|
|
69
|
-
* EP599: Execute get_commits command
|
|
70
|
-
* Returns commits for a branch with pushed/unpushed status
|
|
71
|
-
*/
|
|
72
|
-
private executeGetCommits;
|
|
73
|
-
/**
|
|
74
|
-
* Execute git stash operations
|
|
75
|
-
*/
|
|
76
|
-
private executeStash;
|
|
77
|
-
/**
|
|
78
|
-
* Execute git reset
|
|
79
|
-
*/
|
|
80
|
-
private executeReset;
|
|
81
|
-
/**
|
|
82
|
-
* Execute git merge
|
|
83
|
-
*/
|
|
84
|
-
private executeMerge;
|
|
85
|
-
/**
|
|
86
|
-
* Execute git cherry-pick
|
|
87
|
-
*/
|
|
88
|
-
private executeCherryPick;
|
|
89
|
-
/**
|
|
90
|
-
* Execute git clean
|
|
91
|
-
*/
|
|
92
|
-
private executeClean;
|
|
93
|
-
/**
|
|
94
|
-
* Execute git add
|
|
95
|
-
*/
|
|
96
|
-
private executeAdd;
|
|
97
|
-
/**
|
|
98
|
-
* Execute git fetch
|
|
99
|
-
*/
|
|
100
|
-
private executeFetch;
|
|
101
|
-
/**
|
|
102
|
-
* Execute move_to_module - composite operation
|
|
103
|
-
* Moves commits/changes to a module branch with conflict handling
|
|
104
|
-
*/
|
|
105
|
-
private executeMoveToModule;
|
|
106
|
-
/**
|
|
107
|
-
* Execute discard_main_changes - composite operation
|
|
108
|
-
* Discards all uncommitted files and local commits on main branch
|
|
109
|
-
*/
|
|
110
|
-
private executeDiscardMainChanges;
|
|
111
|
-
/**
|
|
112
|
-
* EP523: Get sync status of a branch relative to main
|
|
113
|
-
* Returns how many commits behind/ahead the branch is
|
|
114
|
-
*/
|
|
115
|
-
private executeSyncStatus;
|
|
116
|
-
/**
|
|
117
|
-
* EP523: Sync local main branch with remote
|
|
118
|
-
* Used before creating new branches to ensure we branch from latest main
|
|
119
|
-
*/
|
|
120
|
-
private executeSyncMain;
|
|
121
|
-
/**
|
|
122
|
-
* EP523: Rebase a branch onto main
|
|
123
|
-
* Used when resuming work on a branch that's behind main
|
|
124
|
-
*/
|
|
125
|
-
private executeRebaseBranch;
|
|
126
|
-
/**
|
|
127
|
-
* EP523: Abort an in-progress rebase
|
|
128
|
-
* Returns to the state before rebase was started
|
|
129
|
-
*/
|
|
130
|
-
private executeRebaseAbort;
|
|
131
|
-
/**
|
|
132
|
-
* EP523: Continue a paused rebase after conflicts are resolved
|
|
133
|
-
*/
|
|
134
|
-
private executeRebaseContinue;
|
|
135
|
-
/**
|
|
136
|
-
* EP523: Check if a rebase is currently in progress
|
|
137
|
-
*/
|
|
138
|
-
private executeRebaseStatus;
|
|
139
|
-
/**
|
|
140
|
-
* Run a git command and return structured result
|
|
141
|
-
*/
|
|
142
|
-
private runGitCommand;
|
|
143
|
-
/**
|
|
144
|
-
* Validate that git is installed
|
|
145
|
-
*/
|
|
146
|
-
private validateGitInstalled;
|
|
147
|
-
/**
|
|
148
|
-
* Check if directory is a git repository
|
|
149
|
-
*/
|
|
150
|
-
private isGitRepository;
|
|
151
|
-
/**
|
|
152
|
-
* Detect the git working directory (repository root)
|
|
153
|
-
* @returns Path to the git repository root
|
|
154
|
-
*/
|
|
155
|
-
private detectWorkingDirectory;
|
|
156
|
-
}
|
|
157
|
-
//# sourceMappingURL=git-executor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-executor.d.ts","sourceRoot":"","sources":["../../src/core/git-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAa,MAAM,oBAAoB,CAAA;AAkB7F;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB;;;;;OAKG;IACG,OAAO,CACX,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC;IAmG3B;;OAEG;YACW,eAAe;IAoC7B;;OAEG;YACW,mBAAmB;IAmCjC;;OAEG;YACW,aAAa;IA4C3B;;;OAGG;YACW,WAAW;IAqCzB;;OAEG;YACW,aAAa;IAqB3B;;OAEG;YACW,WAAW;IAsDzB;;OAEG;YACW,mBAAmB;IAsBjC;;;OAGG;YACW,mBAAmB;IA6DjC;;;OAGG;YACW,uBAAuB;IAuErC;;OAEG;YACW,sBAAsB;IAsEpC;;;OAGG;YACW,iBAAiB;IAwG/B;;OAEG;YACW,YAAY;IAuC1B;;OAEG;YACW,YAAY;IAqB1B;;OAEG;YACW,YAAY;IAkD1B;;OAEG;YACW,iBAAiB;IA4B/B;;OAEG;YACW,YAAY;IAyB1B;;OAEG;YACW,UAAU;IAmCxB;;OAEG;YACW,YAAY;IA+B1B;;;OAGG;YACW,mBAAmB;IAmKjC;;;OAGG;YACW,yBAAyB;IAqEvC;;;OAGG;YACW,iBAAiB;IAiF/B;;;OAGG;YACW,eAAe;IAoF7B;;;OAGG;YACW,mBAAmB;IAuGjC;;;OAGG;YACW,kBAAkB;IAkChC;;OAEG;YACW,qBAAqB;IAmEnC;;OAEG;YACW,mBAAmB;IA0EjC;;OAEG;YACW,aAAa;IAwF3B;;OAEG;YACW,oBAAoB;IASlC;;OAEG;YACW,eAAe;IAS7B;;;OAGG;YACW,sBAAsB;CAWrC"}
|