termify-agent 1.0.12 → 1.0.14

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/agent.d.ts CHANGED
@@ -10,6 +10,8 @@ export declare class Agent extends EventEmitter {
10
10
  private ptyManager;
11
11
  private sshManager;
12
12
  private statsManager;
13
+ private daemonClient;
14
+ private useDaemonForStats;
13
15
  private isRunning;
14
16
  private agentId;
15
17
  private agentName;
@@ -21,7 +23,7 @@ export declare class Agent extends EventEmitter {
21
23
  /**
22
24
  * Start the agent
23
25
  */
24
- start(options?: AgentOptions): boolean;
26
+ start(options?: AgentOptions): Promise<boolean>;
25
27
  /**
26
28
  * Stop the agent
27
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,KAAM,SAAQ,YAAY;IACrC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAAuB;;IAWxC;;OAEG;IACH,OAAO,CAAC,aAAa;IAgHrB;;OAEG;IACH,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO;IAwB1C;;OAEG;IACH,IAAI,IAAI,IAAI;IAqBZ;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAMtB;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,GAAG,IAAI,CAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,SAAS,IAAI;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE;YACN,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;YAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;SAC9B,CAAC;KACH;CAeF"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAStC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,KAAM,SAAQ,YAAY;IACrC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,SAAS,CAAuB;;IAmBxC;;OAEG;IACH,OAAO,CAAC,aAAa;IAgHrB;;OAEG;IACG,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCzD;;OAEG;IACH,IAAI,IAAI,IAAI;IAuBZ;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0C5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAMtB;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,GAAG,IAAI,CAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,SAAS,IAAI;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE;YACN,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;YAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;SAC9B,CAAC;KACH;CAeF"}
package/dist/agent.js CHANGED
@@ -3,6 +3,7 @@ import { WSClient } from './ws-client.js';
3
3
  import { PTYManager } from './pty-manager.js';
4
4
  import { SSHManager } from './ssh-manager.js';
5
5
  import { StatsManager } from './stats-manager.js';
6
+ import { getDaemonClient } from './daemon-client.js';
6
7
  import { getConfig, isConfigured } from './config.js';
7
8
  import { logger } from './utils/logger.js';
8
9
  /**
@@ -13,6 +14,8 @@ export class Agent extends EventEmitter {
13
14
  ptyManager;
14
15
  sshManager;
15
16
  statsManager;
17
+ daemonClient;
18
+ useDaemonForStats = false;
16
19
  isRunning = false;
17
20
  agentId = null;
18
21
  agentName = null;
@@ -22,6 +25,11 @@ export class Agent extends EventEmitter {
22
25
  this.ptyManager = new PTYManager();
23
26
  this.sshManager = new SSHManager();
24
27
  this.statsManager = new StatsManager(5); // Collect stats every 5 seconds
28
+ this.daemonClient = getDaemonClient();
29
+ // Pass wsClient to PTYManager for git updates
30
+ this.ptyManager.setWSClient(this.wsClient);
31
+ // Pass daemon client to PTYManager for process monitoring
32
+ this.ptyManager.setDaemonClient(this.daemonClient);
25
33
  this.setupHandlers();
26
34
  }
27
35
  /**
@@ -129,7 +137,7 @@ export class Agent extends EventEmitter {
129
137
  /**
130
138
  * Start the agent
131
139
  */
132
- start(options = {}) {
140
+ async start(options = {}) {
133
141
  if (!isConfigured()) {
134
142
  logger.error('Agent not configured. Run `termify-agent login` first.');
135
143
  return false;
@@ -143,6 +151,15 @@ export class Agent extends EventEmitter {
143
151
  // Setup signal handlers for graceful shutdown
144
152
  process.on('SIGINT', () => this.handleShutdown('SIGINT'));
145
153
  process.on('SIGTERM', () => this.handleShutdown('SIGTERM'));
154
+ // Connect to termify-daemon for process monitoring and stats
155
+ const daemonConnected = await this.daemonClient.connect();
156
+ if (daemonConnected) {
157
+ logger.info('Connected to termify-daemon for process monitoring');
158
+ this.useDaemonForStats = true;
159
+ }
160
+ else {
161
+ logger.warn('termify-daemon not available, falling back to stats-agent and pgrep');
162
+ }
146
163
  // Connect to server
147
164
  this.wsClient.connect();
148
165
  return true;
@@ -158,6 +175,8 @@ export class Agent extends EventEmitter {
158
175
  this.isRunning = false;
159
176
  // Stop stats collection
160
177
  this.statsManager.stop();
178
+ this.daemonClient.stopStatsCollection();
179
+ this.daemonClient.disconnect();
161
180
  // Kill all terminals (both local and SSH)
162
181
  this.ptyManager.killAll();
163
182
  this.sshManager.killAll();
@@ -169,6 +188,30 @@ export class Agent extends EventEmitter {
169
188
  * Start collecting and sending system stats
170
189
  */
171
190
  startStatsCollection() {
191
+ // Try daemon first for stats (more efficient)
192
+ if (this.useDaemonForStats && this.daemonClient.isConnected()) {
193
+ logger.info('Using termify-daemon for stats collection');
194
+ this.daemonClient.on('stats', (stats) => {
195
+ // Convert daemon stats to full stats format
196
+ // Note: daemon provides basic CPU/RAM, for full stats we still use stats-agent
197
+ this.wsClient.sendStats({
198
+ cpu: [],
199
+ cpuAvg: stats.cpuPercent,
200
+ memory: {
201
+ total: stats.memTotal,
202
+ used: stats.memUsed,
203
+ swapTotal: 0,
204
+ swapUsed: 0,
205
+ },
206
+ disks: [],
207
+ network: [],
208
+ processes: [],
209
+ });
210
+ });
211
+ this.daemonClient.startStatsCollection(5000);
212
+ return;
213
+ }
214
+ // Fall back to stats-agent for full stats
172
215
  // Set up callback to send stats via WebSocket
173
216
  this.statsManager.setStatsCallback((stats) => {
174
217
  this.wsClient.sendStats(stats);
@@ -176,7 +219,7 @@ export class Agent extends EventEmitter {
176
219
  // Start the stats-agent process
177
220
  const started = this.statsManager.start();
178
221
  if (started) {
179
- logger.info('Stats collection started');
222
+ logger.info('Stats collection started via stats-agent');
180
223
  }
181
224
  else {
182
225
  logger.warn('Stats collection not available (stats-agent not found)');
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { EventEmitter } from 'events';
2
+ export declare enum TerminalState {
3
+ Idle = 0,
4
+ Working = 1,
5
+ NeedsInput = 2,
6
+ Finished = 3,
7
+ Error = 4
8
+ }
9
+ export interface SystemStats {
10
+ cpuPercent: number;
11
+ memUsed: number;
12
+ memTotal: number;
13
+ }
14
+ export interface StateChangeEvent {
15
+ terminalId: string;
16
+ state: TerminalState;
17
+ processName: string | null;
18
+ }
19
+ export declare class DaemonClient extends EventEmitter {
20
+ private socket;
21
+ private connected;
22
+ private reconnectTimer;
23
+ private buffer;
24
+ private daemonProcess;
25
+ private statsInterval;
26
+ private statsIntervalMs;
27
+ constructor();
28
+ /**
29
+ * Find the daemon binary
30
+ */
31
+ private findDaemonBinary;
32
+ /**
33
+ * Remove stale socket file if it exists
34
+ */
35
+ private removeStaleSocket;
36
+ /**
37
+ * Start the daemon process if not already running
38
+ */
39
+ private startDaemon;
40
+ /**
41
+ * Connect to the daemon (starting it if necessary)
42
+ */
43
+ connect(retryCount?: number): Promise<boolean>;
44
+ /**
45
+ * Disconnect from the daemon
46
+ */
47
+ disconnect(): void;
48
+ /**
49
+ * Watch a terminal's shell process
50
+ */
51
+ watch(terminalId: string, shellPid: number): void;
52
+ /**
53
+ * Stop watching a terminal
54
+ */
55
+ unwatch(terminalId: string): void;
56
+ /**
57
+ * Request system stats
58
+ */
59
+ requestStats(): void;
60
+ /**
61
+ * Start periodic stats collection
62
+ */
63
+ startStatsCollection(intervalMs?: number): void;
64
+ /**
65
+ * Stop periodic stats collection
66
+ */
67
+ stopStatsCollection(): void;
68
+ /**
69
+ * Ping the daemon
70
+ */
71
+ ping(): void;
72
+ /**
73
+ * Check if connected
74
+ */
75
+ isConnected(): boolean;
76
+ private handleData;
77
+ private parseMessage;
78
+ private scheduleReconnect;
79
+ }
80
+ /**
81
+ * Get the shared daemon client instance
82
+ */
83
+ export declare function getDaemonClient(): DaemonClient;
84
+ //# sourceMappingURL=daemon-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-client.d.ts","sourceRoot":"","sources":["../src/daemon-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAoBtC,oBAAY,aAAa;IACvB,IAAI,IAAI;IACR,OAAO,IAAI;IACX,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,KAAK,IAAI;CACV;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,eAAe,CAAQ;;IAU/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;YACW,WAAW;IAqDzB;;OAEG;IACG,OAAO,CAAC,UAAU,SAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IA+D/C;;OAEG;IACH,UAAU,IAAI,IAAI;IAgBlB;;OAEG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAejD;;OAEG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAcjC;;OAEG;IACH,YAAY,IAAI,IAAI;IAKpB;;OAEG;IACH,oBAAoB,CAAC,UAAU,SAAO,GAAG,IAAI;IAe7C;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAO3B;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,YAAY;IAsDpB,OAAO,CAAC,iBAAiB;CAU1B;AAKD;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAK9C"}
@@ -0,0 +1,354 @@
1
+ // packages/termify-agent/src/daemon-client.ts
2
+ import * as net from 'net';
3
+ import { EventEmitter } from 'events';
4
+ import { spawn } from 'child_process';
5
+ import { existsSync, unlinkSync } from 'fs';
6
+ import * as path from 'path';
7
+ import * as os from 'os';
8
+ import { logger } from './utils/logger.js';
9
+ const SOCKET_PATH = '/tmp/termify-daemon.sock';
10
+ // Protocol commands
11
+ const CMD_WATCH = 0x01;
12
+ const CMD_UNWATCH = 0x02;
13
+ const CMD_GET_STATS = 0x03;
14
+ const CMD_PING = 0x04;
15
+ // Response types
16
+ const RESP_STATE_CHANGE = 0x01;
17
+ const RESP_STATS = 0x02;
18
+ const RESP_PONG = 0x03;
19
+ export var TerminalState;
20
+ (function (TerminalState) {
21
+ TerminalState[TerminalState["Idle"] = 0] = "Idle";
22
+ TerminalState[TerminalState["Working"] = 1] = "Working";
23
+ TerminalState[TerminalState["NeedsInput"] = 2] = "NeedsInput";
24
+ TerminalState[TerminalState["Finished"] = 3] = "Finished";
25
+ TerminalState[TerminalState["Error"] = 4] = "Error";
26
+ })(TerminalState || (TerminalState = {}));
27
+ export class DaemonClient extends EventEmitter {
28
+ socket = null;
29
+ connected = false;
30
+ reconnectTimer = null;
31
+ buffer = Buffer.alloc(0);
32
+ daemonProcess = null;
33
+ statsInterval = null;
34
+ statsIntervalMs = 5000;
35
+ constructor() {
36
+ super();
37
+ // Prevent unhandled error crashes - default error handler
38
+ this.on('error', (err) => {
39
+ // Error is logged elsewhere, this prevents crash
40
+ });
41
+ }
42
+ /**
43
+ * Find the daemon binary
44
+ */
45
+ findDaemonBinary() {
46
+ const homeDir = os.homedir();
47
+ const searchPaths = [
48
+ // User's termify directory
49
+ path.join(homeDir, '.termify', 'termify-daemon'),
50
+ // Development paths
51
+ path.join(process.cwd(), '..', 'termify-daemon', 'target', 'release', 'termify-daemon'),
52
+ path.join(process.cwd(), '..', 'termify-daemon', 'target', 'debug', 'termify-daemon'),
53
+ // Global
54
+ '/usr/local/bin/termify-daemon',
55
+ ];
56
+ for (const p of searchPaths) {
57
+ if (existsSync(p)) {
58
+ return p;
59
+ }
60
+ }
61
+ return null;
62
+ }
63
+ /**
64
+ * Remove stale socket file if it exists
65
+ */
66
+ removeStaleSocket() {
67
+ try {
68
+ if (existsSync(SOCKET_PATH)) {
69
+ unlinkSync(SOCKET_PATH);
70
+ logger.debug('Removed stale daemon socket');
71
+ }
72
+ }
73
+ catch (err) {
74
+ // Ignore errors
75
+ }
76
+ }
77
+ /**
78
+ * Start the daemon process if not already running
79
+ */
80
+ async startDaemon(forceStart = false) {
81
+ // Check if socket already exists (daemon might be running)
82
+ if (!forceStart && existsSync(SOCKET_PATH)) {
83
+ return true;
84
+ }
85
+ // Remove stale socket if force starting
86
+ if (forceStart) {
87
+ this.removeStaleSocket();
88
+ }
89
+ const binaryPath = this.findDaemonBinary();
90
+ if (!binaryPath) {
91
+ logger.warn('termify-daemon binary not found. Process monitoring disabled.');
92
+ return false;
93
+ }
94
+ logger.info(`Starting termify-daemon from ${binaryPath}`);
95
+ return new Promise((resolve) => {
96
+ this.daemonProcess = spawn(binaryPath, [], {
97
+ stdio: ['ignore', 'pipe', 'pipe'],
98
+ detached: true,
99
+ });
100
+ this.daemonProcess.unref();
101
+ this.daemonProcess.stderr?.on('data', (data) => {
102
+ const msg = data.toString().trim();
103
+ if (msg.includes('Started on')) {
104
+ resolve(true);
105
+ }
106
+ else if (msg) {
107
+ logger.debug(`[termify-daemon] ${msg}`);
108
+ }
109
+ });
110
+ this.daemonProcess.on('error', (err) => {
111
+ logger.error(`Failed to start termify-daemon: ${err.message}`);
112
+ resolve(false);
113
+ });
114
+ this.daemonProcess.on('close', (code) => {
115
+ if (code !== 0) {
116
+ logger.warn(`termify-daemon exited with code ${code}`);
117
+ }
118
+ this.daemonProcess = null;
119
+ });
120
+ // Give it a moment to start
121
+ setTimeout(() => resolve(existsSync(SOCKET_PATH)), 500);
122
+ });
123
+ }
124
+ /**
125
+ * Connect to the daemon (starting it if necessary)
126
+ */
127
+ async connect(retryCount = 0) {
128
+ if (this.connected) {
129
+ return true;
130
+ }
131
+ // Try to start daemon if socket doesn't exist
132
+ if (!existsSync(SOCKET_PATH)) {
133
+ const started = await this.startDaemon();
134
+ if (!started) {
135
+ return false;
136
+ }
137
+ }
138
+ return new Promise((resolve) => {
139
+ this.socket = net.createConnection(SOCKET_PATH, () => {
140
+ this.connected = true;
141
+ logger.info('Connected to termify-daemon');
142
+ this.emit('connected');
143
+ resolve(true);
144
+ });
145
+ this.socket.on('data', (data) => {
146
+ this.handleData(data);
147
+ });
148
+ this.socket.on('error', async (err) => {
149
+ if (!this.connected) {
150
+ // If ECONNREFUSED and haven't retried yet, try to start daemon
151
+ if (err.code === 'ECONNREFUSED' && retryCount < 2) {
152
+ logger.info('Daemon not responding, attempting to start...');
153
+ this.socket?.destroy();
154
+ this.socket = null;
155
+ const started = await this.startDaemon(true);
156
+ if (started) {
157
+ // Wait for daemon to be ready
158
+ await new Promise((r) => setTimeout(r, 500));
159
+ const result = await this.connect(retryCount + 1);
160
+ resolve(result);
161
+ return;
162
+ }
163
+ }
164
+ logger.warn(`Daemon connection error: ${err.message}`);
165
+ resolve(false);
166
+ }
167
+ });
168
+ this.socket.on('close', () => {
169
+ this.connected = false;
170
+ this.emit('disconnected');
171
+ this.scheduleReconnect();
172
+ });
173
+ // Timeout for connection
174
+ setTimeout(() => {
175
+ if (!this.connected) {
176
+ this.socket?.destroy();
177
+ resolve(false);
178
+ }
179
+ }, 2000);
180
+ });
181
+ }
182
+ /**
183
+ * Disconnect from the daemon
184
+ */
185
+ disconnect() {
186
+ if (this.reconnectTimer) {
187
+ clearTimeout(this.reconnectTimer);
188
+ this.reconnectTimer = null;
189
+ }
190
+ if (this.statsInterval) {
191
+ clearInterval(this.statsInterval);
192
+ this.statsInterval = null;
193
+ }
194
+ if (this.socket) {
195
+ this.socket.destroy();
196
+ this.socket = null;
197
+ }
198
+ this.connected = false;
199
+ }
200
+ /**
201
+ * Watch a terminal's shell process
202
+ */
203
+ watch(terminalId, shellPid) {
204
+ if (!this.connected || !this.socket)
205
+ return;
206
+ const idBytes = Buffer.from(terminalId, 'utf8');
207
+ const buf = Buffer.alloc(1 + 1 + idBytes.length + 4);
208
+ buf[0] = CMD_WATCH;
209
+ buf[1] = idBytes.length;
210
+ idBytes.copy(buf, 2);
211
+ buf.writeUInt32LE(shellPid, 2 + idBytes.length);
212
+ this.socket.write(buf);
213
+ logger.debug(`Watching terminal ${terminalId} (pid ${shellPid})`);
214
+ }
215
+ /**
216
+ * Stop watching a terminal
217
+ */
218
+ unwatch(terminalId) {
219
+ if (!this.connected || !this.socket)
220
+ return;
221
+ const idBytes = Buffer.from(terminalId, 'utf8');
222
+ const buf = Buffer.alloc(1 + 1 + idBytes.length);
223
+ buf[0] = CMD_UNWATCH;
224
+ buf[1] = idBytes.length;
225
+ idBytes.copy(buf, 2);
226
+ this.socket.write(buf);
227
+ logger.debug(`Unwatching terminal ${terminalId}`);
228
+ }
229
+ /**
230
+ * Request system stats
231
+ */
232
+ requestStats() {
233
+ if (!this.connected || !this.socket)
234
+ return;
235
+ this.socket.write(Buffer.from([CMD_GET_STATS]));
236
+ }
237
+ /**
238
+ * Start periodic stats collection
239
+ */
240
+ startStatsCollection(intervalMs = 5000) {
241
+ this.statsIntervalMs = intervalMs;
242
+ if (this.statsInterval) {
243
+ clearInterval(this.statsInterval);
244
+ }
245
+ // Request stats immediately
246
+ this.requestStats();
247
+ // Then periodically
248
+ this.statsInterval = setInterval(() => {
249
+ this.requestStats();
250
+ }, this.statsIntervalMs);
251
+ }
252
+ /**
253
+ * Stop periodic stats collection
254
+ */
255
+ stopStatsCollection() {
256
+ if (this.statsInterval) {
257
+ clearInterval(this.statsInterval);
258
+ this.statsInterval = null;
259
+ }
260
+ }
261
+ /**
262
+ * Ping the daemon
263
+ */
264
+ ping() {
265
+ if (!this.connected || !this.socket)
266
+ return;
267
+ this.socket.write(Buffer.from([CMD_PING]));
268
+ }
269
+ /**
270
+ * Check if connected
271
+ */
272
+ isConnected() {
273
+ return this.connected;
274
+ }
275
+ handleData(data) {
276
+ // Append to buffer
277
+ this.buffer = Buffer.concat([this.buffer, data]);
278
+ // Process complete messages
279
+ while (this.buffer.length > 0) {
280
+ const consumed = this.parseMessage();
281
+ if (consumed === 0)
282
+ break;
283
+ this.buffer = this.buffer.subarray(consumed);
284
+ }
285
+ }
286
+ parseMessage() {
287
+ if (this.buffer.length === 0)
288
+ return 0;
289
+ const type = this.buffer[0];
290
+ switch (type) {
291
+ case RESP_STATE_CHANGE: {
292
+ // terminal_id_len(1) + terminal_id + state(1) + process_len(1) + process_name
293
+ if (this.buffer.length < 3)
294
+ return 0;
295
+ const idLen = this.buffer[1];
296
+ if (this.buffer.length < 2 + idLen + 2)
297
+ return 0;
298
+ const terminalId = this.buffer.subarray(2, 2 + idLen).toString('utf8');
299
+ const state = this.buffer[2 + idLen];
300
+ const processLen = this.buffer[2 + idLen + 1];
301
+ if (this.buffer.length < 2 + idLen + 2 + processLen)
302
+ return 0;
303
+ const processName = processLen > 0
304
+ ? this.buffer.subarray(2 + idLen + 2, 2 + idLen + 2 + processLen).toString('utf8')
305
+ : null;
306
+ this.emit('stateChange', { terminalId, state, processName });
307
+ return 1 + 1 + idLen + 1 + 1 + processLen;
308
+ }
309
+ case RESP_STATS: {
310
+ // cpu(4 f32) + mem_used(8 u64) + mem_total(8 u64)
311
+ if (this.buffer.length < 21)
312
+ return 0;
313
+ const cpuPercent = this.buffer.readFloatLE(1);
314
+ const memUsed = this.buffer.readBigUInt64LE(5);
315
+ const memTotal = this.buffer.readBigUInt64LE(13);
316
+ this.emit('stats', {
317
+ cpuPercent,
318
+ memUsed: Number(memUsed),
319
+ memTotal: Number(memTotal),
320
+ });
321
+ return 21;
322
+ }
323
+ case RESP_PONG: {
324
+ this.emit('pong');
325
+ return 1;
326
+ }
327
+ default:
328
+ // Unknown message, skip 1 byte
329
+ return 1;
330
+ }
331
+ }
332
+ scheduleReconnect() {
333
+ if (this.reconnectTimer)
334
+ return;
335
+ this.reconnectTimer = setTimeout(() => {
336
+ this.reconnectTimer = null;
337
+ this.connect().catch(() => {
338
+ // Will retry via close event
339
+ });
340
+ }, 2000);
341
+ }
342
+ }
343
+ // Singleton instance
344
+ let daemonClientInstance = null;
345
+ /**
346
+ * Get the shared daemon client instance
347
+ */
348
+ export function getDaemonClient() {
349
+ if (!daemonClientInstance) {
350
+ daemonClientInstance = new DaemonClient();
351
+ }
352
+ return daemonClientInstance;
353
+ }
354
+ //# sourceMappingURL=daemon-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-client.js","sourceRoot":"","sources":["../src/daemon-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { EventEmitter } from 'events';
2
+ export interface GitBranchInfo {
3
+ current: string;
4
+ branches: string[];
5
+ isGitRepo: boolean;
6
+ }
7
+ export interface GitCommitInfo {
8
+ hash: string;
9
+ shortHash: string;
10
+ parentHashes: string[];
11
+ authorName: string;
12
+ authorEmail: string;
13
+ timestamp: number;
14
+ summary: string;
15
+ }
16
+ export declare class GitService extends EventEmitter {
17
+ private git;
18
+ private cwd;
19
+ private isRepo;
20
+ constructor(cwd: string);
21
+ init(): Promise<boolean>;
22
+ getBranchInfo(): Promise<GitBranchInfo>;
23
+ checkout(branch: string): Promise<{
24
+ success: boolean;
25
+ error?: string;
26
+ }>;
27
+ createBranch(name: string, checkout?: boolean): Promise<{
28
+ success: boolean;
29
+ error?: string;
30
+ }>;
31
+ getCommitLog(maxCount?: number): Promise<GitCommitInfo[]>;
32
+ setCwd(cwd: string): void;
33
+ }
34
+ //# sourceMappingURL=git-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-service.d.ts","sourceRoot":"","sources":["../src/git-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAYD,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,GAAG,EAAE,MAAM;IAMjB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAWxB,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;IAkBvC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAUvE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAYnG,YAAY,CAAC,QAAQ,GAAE,MAAY,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAgCpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAK1B"}