termify-agent 1.0.3 → 1.0.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/auth.js CHANGED
@@ -4,7 +4,7 @@ import chalk from 'chalk';
4
4
  import { getConfig, setAccessToken, setServerUrl } from './config.js';
5
5
  import { getMachineId, getSystemInfo } from './utils/machine-id.js';
6
6
  import { logger } from './utils/logger.js';
7
- const VERSION = '1.0.0';
7
+ const VERSION = '1.0.5';
8
8
  /**
9
9
  * Attempt to verify a pairing code with the server
10
10
  */
package/dist/config.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import Conf from 'conf';
2
2
  import { getMachineId } from './utils/machine-id.js';
3
- const DEFAULT_SERVER_URL = 'https://api.termify.io';
4
- const DEFAULT_WS_URL = 'wss://api.termify.io/ws/agent';
3
+ const DEFAULT_SERVER_URL = 'https://termify.justdiego.com';
4
+ const DEFAULT_WS_URL = 'wss://termify.justdiego.com/ws/agent';
5
5
  const config = new Conf({
6
6
  projectName: 'termify-agent',
7
7
  defaults: {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAWrD,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AACpD,MAAM,cAAc,GAAG,+BAA+B,CAAC;AAEvD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAc;IACnC,WAAW,EAAE,eAAe;IAC5B,QAAQ,EAAE;QACR,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,YAAY,EAAE;QACzB,SAAS,EAAE,kBAAkB;QAC7B,KAAK,EAAE,cAAc;QACrB,aAAa,EAAE,IAAI;KACpB;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QACtC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QAClC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QAClC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,OAAe;IAC3D,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7B,uCAAuC;IACvC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,OAAO,GAAG,CAAC,WAAW,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAWrD,MAAM,kBAAkB,GAAG,+BAA+B,CAAC;AAC3D,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAE9D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAc;IACnC,WAAW,EAAE,eAAe;IAC5B,QAAQ,EAAE;QACR,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,YAAY,EAAE;QACzB,SAAS,EAAE,kBAAkB;QAC7B,KAAK,EAAE,cAAc;QACrB,aAAa,EAAE,IAAI;KACpB;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QACtC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QAClC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QAClC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,OAAe;IAC3D,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7B,uCAAuC;IACvC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,OAAO,GAAG,CAAC,WAAW,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Get daemon status
3
+ */
4
+ export interface DaemonStatus {
5
+ running: boolean;
6
+ pid: number | null;
7
+ logFile: string;
8
+ errorLogFile: string;
9
+ uptime?: string;
10
+ }
11
+ export declare function getDaemonStatus(): DaemonStatus;
12
+ /**
13
+ * Start agent as daemon (background process)
14
+ */
15
+ export declare function startDaemon(): {
16
+ success: boolean;
17
+ pid?: number;
18
+ error?: string;
19
+ };
20
+ /**
21
+ * Stop daemon
22
+ */
23
+ export declare function stopDaemon(): Promise<{
24
+ success: boolean;
25
+ error?: string;
26
+ }>;
27
+ /**
28
+ * Restart daemon
29
+ */
30
+ export declare function restartDaemon(): Promise<{
31
+ success: boolean;
32
+ pid?: number;
33
+ error?: string;
34
+ }>;
35
+ /**
36
+ * Kill daemon forcefully
37
+ */
38
+ export declare function killDaemon(): {
39
+ success: boolean;
40
+ error?: string;
41
+ };
42
+ /**
43
+ * Get recent logs
44
+ */
45
+ export declare function getRecentLogs(lines?: number): string[];
46
+ /**
47
+ * Clear log files
48
+ */
49
+ export declare function clearLogs(): void;
50
+ /**
51
+ * Print daemon status
52
+ */
53
+ export declare function printDaemonStatus(): void;
54
+ /**
55
+ * Check if running as daemon child
56
+ */
57
+ export declare function isDaemonChild(): boolean;
58
+ /**
59
+ * Get daemon directory path
60
+ */
61
+ export declare function getDaemonDir(): string;
62
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAsEA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,IAAI,YAAY,CAe9C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmDhF;AASD;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmChF;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAcjG;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAgBjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,GAAE,MAAW,GAAG,MAAM,EAAE,CAY1D;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAWhC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAiBxC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
package/dist/daemon.js ADDED
@@ -0,0 +1,267 @@
1
+ import { spawn } from 'child_process';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ import chalk from 'chalk';
6
+ // Directory for storing daemon files (PID, logs)
7
+ const DAEMON_DIR = path.join(os.homedir(), '.termify-agent');
8
+ const PID_FILE = path.join(DAEMON_DIR, 'agent.pid');
9
+ const LOG_FILE = path.join(DAEMON_DIR, 'agent.log');
10
+ const ERROR_LOG_FILE = path.join(DAEMON_DIR, 'agent.error.log');
11
+ /**
12
+ * Ensure daemon directory exists
13
+ */
14
+ function ensureDaemonDir() {
15
+ if (!fs.existsSync(DAEMON_DIR)) {
16
+ fs.mkdirSync(DAEMON_DIR, { recursive: true });
17
+ }
18
+ }
19
+ /**
20
+ * Read PID from file
21
+ */
22
+ function readPidFile() {
23
+ try {
24
+ if (fs.existsSync(PID_FILE)) {
25
+ const pid = parseInt(fs.readFileSync(PID_FILE, 'utf-8').trim(), 10);
26
+ return isNaN(pid) ? null : pid;
27
+ }
28
+ }
29
+ catch {
30
+ // Ignore errors
31
+ }
32
+ return null;
33
+ }
34
+ /**
35
+ * Write PID to file
36
+ */
37
+ function writePidFile(pid) {
38
+ ensureDaemonDir();
39
+ fs.writeFileSync(PID_FILE, pid.toString());
40
+ }
41
+ /**
42
+ * Remove PID file
43
+ */
44
+ function removePidFile() {
45
+ try {
46
+ if (fs.existsSync(PID_FILE)) {
47
+ fs.unlinkSync(PID_FILE);
48
+ }
49
+ }
50
+ catch {
51
+ // Ignore errors
52
+ }
53
+ }
54
+ /**
55
+ * Check if a process with given PID is running
56
+ */
57
+ function isProcessRunning(pid) {
58
+ try {
59
+ // Sending signal 0 doesn't kill the process, just checks if it exists
60
+ process.kill(pid, 0);
61
+ return true;
62
+ }
63
+ catch {
64
+ return false;
65
+ }
66
+ }
67
+ export function getDaemonStatus() {
68
+ const pid = readPidFile();
69
+ const running = pid !== null && isProcessRunning(pid);
70
+ // Clean up stale PID file
71
+ if (pid !== null && !running) {
72
+ removePidFile();
73
+ }
74
+ return {
75
+ running,
76
+ pid: running ? pid : null,
77
+ logFile: LOG_FILE,
78
+ errorLogFile: ERROR_LOG_FILE,
79
+ };
80
+ }
81
+ /**
82
+ * Start agent as daemon (background process)
83
+ */
84
+ export function startDaemon() {
85
+ ensureDaemonDir();
86
+ // Check if already running
87
+ const status = getDaemonStatus();
88
+ if (status.running) {
89
+ return { success: false, error: `Agent is already running (PID: ${status.pid})` };
90
+ }
91
+ // Find the entry point script
92
+ const scriptPath = process.argv[1];
93
+ const nodeExecutable = process.execPath;
94
+ // Open log files
95
+ const logFd = fs.openSync(LOG_FILE, 'a');
96
+ const errorLogFd = fs.openSync(ERROR_LOG_FILE, 'a');
97
+ // Write startup message to log
98
+ const startupMsg = `\n[${new Date().toISOString()}] Starting agent daemon...\n`;
99
+ fs.writeSync(logFd, startupMsg);
100
+ try {
101
+ // Spawn detached process
102
+ const child = spawn(nodeExecutable, [scriptPath, 'start', '--daemon-child'], {
103
+ detached: true,
104
+ stdio: ['ignore', logFd, errorLogFd],
105
+ env: { ...process.env, TERMIFY_DAEMON: '1' },
106
+ });
107
+ if (child.pid) {
108
+ // Unref so parent can exit
109
+ child.unref();
110
+ // Save PID
111
+ writePidFile(child.pid);
112
+ // Close file descriptors in parent
113
+ fs.closeSync(logFd);
114
+ fs.closeSync(errorLogFd);
115
+ return { success: true, pid: child.pid };
116
+ }
117
+ else {
118
+ fs.closeSync(logFd);
119
+ fs.closeSync(errorLogFd);
120
+ return { success: false, error: 'Failed to spawn daemon process' };
121
+ }
122
+ }
123
+ catch (error) {
124
+ fs.closeSync(logFd);
125
+ fs.closeSync(errorLogFd);
126
+ return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
127
+ }
128
+ }
129
+ /**
130
+ * Helper to wait
131
+ */
132
+ function sleep(ms) {
133
+ return new Promise((resolve) => setTimeout(resolve, ms));
134
+ }
135
+ /**
136
+ * Stop daemon
137
+ */
138
+ export async function stopDaemon() {
139
+ const status = getDaemonStatus();
140
+ if (!status.running || !status.pid) {
141
+ return { success: false, error: 'Agent is not running' };
142
+ }
143
+ const pid = status.pid;
144
+ try {
145
+ // Send SIGTERM for graceful shutdown
146
+ process.kill(pid, 'SIGTERM');
147
+ // Wait for process to stop (up to 5 seconds)
148
+ const maxAttempts = 10;
149
+ for (let i = 0; i < maxAttempts; i++) {
150
+ await sleep(500);
151
+ if (!isProcessRunning(pid)) {
152
+ removePidFile();
153
+ return { success: true };
154
+ }
155
+ }
156
+ // Force kill if still running
157
+ try {
158
+ process.kill(pid, 'SIGKILL');
159
+ removePidFile();
160
+ return { success: true };
161
+ }
162
+ catch {
163
+ return { success: false, error: 'Failed to kill process' };
164
+ }
165
+ }
166
+ catch (error) {
167
+ return { success: false, error: error instanceof Error ? error.message : 'Failed to stop daemon' };
168
+ }
169
+ }
170
+ /**
171
+ * Restart daemon
172
+ */
173
+ export async function restartDaemon() {
174
+ const status = getDaemonStatus();
175
+ if (status.running) {
176
+ const stopResult = await stopDaemon();
177
+ if (!stopResult.success && !stopResult.error?.includes('not running')) {
178
+ return { success: false, error: `Failed to stop: ${stopResult.error}` };
179
+ }
180
+ // Wait a moment before starting again
181
+ await new Promise((resolve) => setTimeout(resolve, 1000));
182
+ }
183
+ return startDaemon();
184
+ }
185
+ /**
186
+ * Kill daemon forcefully
187
+ */
188
+ export function killDaemon() {
189
+ const status = getDaemonStatus();
190
+ if (!status.running || !status.pid) {
191
+ removePidFile();
192
+ return { success: true }; // Nothing to kill
193
+ }
194
+ try {
195
+ process.kill(status.pid, 'SIGKILL');
196
+ removePidFile();
197
+ return { success: true };
198
+ }
199
+ catch (error) {
200
+ removePidFile();
201
+ return { success: false, error: error instanceof Error ? error.message : 'Failed to kill process' };
202
+ }
203
+ }
204
+ /**
205
+ * Get recent logs
206
+ */
207
+ export function getRecentLogs(lines = 50) {
208
+ try {
209
+ if (!fs.existsSync(LOG_FILE)) {
210
+ return [];
211
+ }
212
+ const content = fs.readFileSync(LOG_FILE, 'utf-8');
213
+ const allLines = content.split('\n');
214
+ return allLines.slice(-lines);
215
+ }
216
+ catch {
217
+ return [];
218
+ }
219
+ }
220
+ /**
221
+ * Clear log files
222
+ */
223
+ export function clearLogs() {
224
+ try {
225
+ if (fs.existsSync(LOG_FILE)) {
226
+ fs.writeFileSync(LOG_FILE, '');
227
+ }
228
+ if (fs.existsSync(ERROR_LOG_FILE)) {
229
+ fs.writeFileSync(ERROR_LOG_FILE, '');
230
+ }
231
+ }
232
+ catch {
233
+ // Ignore errors
234
+ }
235
+ }
236
+ /**
237
+ * Print daemon status
238
+ */
239
+ export function printDaemonStatus() {
240
+ const status = getDaemonStatus();
241
+ console.log(chalk.bold('\n🔧 Daemon Status\n'));
242
+ if (status.running) {
243
+ console.log(chalk.green('● Agent is running'));
244
+ console.log(chalk.gray(` PID: ${status.pid}`));
245
+ }
246
+ else {
247
+ console.log(chalk.red('○ Agent is not running'));
248
+ }
249
+ console.log();
250
+ console.log(chalk.bold('Log files:'));
251
+ console.log(chalk.gray(` Output: ${status.logFile}`));
252
+ console.log(chalk.gray(` Errors: ${status.errorLogFile}`));
253
+ console.log();
254
+ }
255
+ /**
256
+ * Check if running as daemon child
257
+ */
258
+ export function isDaemonChild() {
259
+ return process.env.TERMIFY_DAEMON === '1';
260
+ }
261
+ /**
262
+ * Get daemon directory path
263
+ */
264
+ export function getDaemonDir() {
265
+ return DAEMON_DIR;
266
+ }
267
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,7 +7,8 @@ import { login, logout } from './auth.js';
7
7
  import { getConfig, isConfigured, getConfigPath } from './config.js';
8
8
  import { setLogLevel, setQuietMode } from './utils/logger.js';
9
9
  import { getSystemInfo } from './utils/machine-id.js';
10
- const VERSION = '1.0.0';
10
+ import { getDaemonStatus, startDaemon, stopDaemon, restartDaemon, killDaemon, getRecentLogs, clearLogs, printDaemonStatus, isDaemonChild, getDaemonDir, } from './daemon.js';
11
+ const VERSION = '1.0.5';
11
12
  const program = new Command();
12
13
  program
13
14
  .name('termify-agent')
@@ -24,20 +25,111 @@ program
24
25
  if (opts.verbose)
25
26
  setLogLevel('debug');
26
27
  });
28
+ /**
29
+ * Helper to start the agent (used by both start and login --start)
30
+ */
31
+ async function runAgent(options) {
32
+ if (!isConfigured()) {
33
+ console.log(chalk.red('Error: Not logged in.'));
34
+ console.log(chalk.gray('Run `termify-agent login` first.'));
35
+ process.exit(1);
36
+ }
37
+ // Start as background daemon
38
+ if (options.daemon && !options.daemonChild) {
39
+ const result = startDaemon();
40
+ if (result.success) {
41
+ console.log(chalk.green(`✓ Agent started in background (PID: ${result.pid})`));
42
+ console.log(chalk.gray(` Logs: ${getDaemonDir()}/agent.log`));
43
+ console.log(chalk.gray(` Use \`termify-agent ps\` to check status`));
44
+ console.log(chalk.gray(` Use \`termify-agent stop\` to stop`));
45
+ }
46
+ else {
47
+ console.log(chalk.red(`✗ Failed to start: ${result.error}`));
48
+ process.exit(1);
49
+ }
50
+ return;
51
+ }
52
+ // Run in foreground (or as daemon child)
53
+ const agent = new Agent();
54
+ const isDaemon = isDaemonChild() || options.daemonChild;
55
+ if (!isDaemon) {
56
+ console.log(chalk.bold('\n🚀 Termify Agent\n'));
57
+ }
58
+ const spinner = isDaemon ? null : ora('Connecting to Termify...').start();
59
+ agent.on('connected', (agentId, agentName) => {
60
+ if (spinner) {
61
+ spinner.succeed(chalk.green(`Connected as ${agentName}`));
62
+ console.log(chalk.gray(` Agent ID: ${agentId}`));
63
+ console.log(chalk.gray(` Terminals: ${agent.terminalCount}`));
64
+ console.log(chalk.gray('\nWaiting for terminal requests... (Ctrl+C to stop)\n'));
65
+ }
66
+ else {
67
+ console.log(`[${new Date().toISOString()}] Connected as ${agentName} (ID: ${agentId})`);
68
+ }
69
+ });
70
+ agent.on('disconnected', (reason) => {
71
+ if (isDaemon) {
72
+ console.log(`[${new Date().toISOString()}] Disconnected: ${reason}. Reconnecting...`);
73
+ }
74
+ else {
75
+ console.log(chalk.yellow(`\nDisconnected: ${reason}`));
76
+ console.log(chalk.gray('Attempting to reconnect...'));
77
+ }
78
+ });
79
+ agent.on('authFailed', (error) => {
80
+ if (spinner) {
81
+ spinner.fail(chalk.red(`Authentication failed: ${error}`));
82
+ }
83
+ else {
84
+ console.error(`[${new Date().toISOString()}] Authentication failed: ${error}`);
85
+ }
86
+ console.log(chalk.gray('\nYour credentials may have expired.'));
87
+ console.log(chalk.gray('Run `termify-agent login` to re-authenticate.'));
88
+ process.exit(1);
89
+ });
90
+ agent.on('stopped', () => {
91
+ if (isDaemon) {
92
+ console.log(`[${new Date().toISOString()}] Agent stopped.`);
93
+ }
94
+ else {
95
+ console.log(chalk.gray('\nAgent stopped.'));
96
+ }
97
+ });
98
+ const started = agent.start({ daemon: isDaemon });
99
+ if (!started) {
100
+ if (spinner) {
101
+ spinner.fail('Failed to start agent');
102
+ }
103
+ else {
104
+ console.error(`[${new Date().toISOString()}] Failed to start agent`);
105
+ }
106
+ process.exit(1);
107
+ }
108
+ }
27
109
  /**
28
110
  * Login command - authenticate with Termify
29
111
  */
30
112
  program
31
113
  .command('login')
32
- .description('Authenticate with Termify')
114
+ .description('Authenticate with Termify and optionally start the agent')
33
115
  .option('-s, --server <url>', 'Termify server URL')
34
116
  .option('-c, --code <code>', 'Pairing code (if you already have one)')
117
+ .option('--start', 'Start the agent after successful login')
118
+ .option('-d, --daemon', 'Start agent in background after login (implies --start)')
35
119
  .action(async (options) => {
36
120
  const success = await login({
37
121
  serverUrl: options.server,
38
122
  pairingCode: options.code,
39
123
  });
40
- process.exit(success ? 0 : 1);
124
+ if (!success) {
125
+ process.exit(1);
126
+ }
127
+ // Auto-start if requested
128
+ if (options.daemon || options.start) {
129
+ console.log(chalk.gray('\nStarting agent...\n'));
130
+ await runAgent({ daemon: options.daemon });
131
+ }
132
+ process.exit(0);
41
133
  });
42
134
  /**
43
135
  * Logout command - clear credentials
@@ -45,7 +137,19 @@ program
45
137
  program
46
138
  .command('logout')
47
139
  .description('Log out and clear stored credentials')
48
- .action(async () => {
140
+ .option('--stop', 'Stop running agent before logging out')
141
+ .action(async (options) => {
142
+ // Stop daemon if running and --stop flag used
143
+ if (options.stop) {
144
+ const status = getDaemonStatus();
145
+ if (status.running) {
146
+ console.log(chalk.gray('Stopping running agent...'));
147
+ const result = await stopDaemon();
148
+ if (result.success) {
149
+ console.log(chalk.green('✓ Agent stopped'));
150
+ }
151
+ }
152
+ }
49
153
  await logout();
50
154
  process.exit(0);
51
155
  });
@@ -55,56 +159,81 @@ program
55
159
  program
56
160
  .command('start')
57
161
  .description('Start the agent and connect to Termify')
58
- .option('-d, --daemon', 'Run as background daemon (not implemented yet)')
162
+ .option('-d, --daemon', 'Run in background (daemon mode)')
163
+ .option('--daemon-child', 'Internal flag for daemon child process')
59
164
  .action(async (options) => {
165
+ await runAgent(options);
166
+ });
167
+ /**
168
+ * Stop command - stop the running daemon
169
+ */
170
+ program
171
+ .command('stop')
172
+ .description('Stop the running agent daemon')
173
+ .action(async () => {
174
+ const status = getDaemonStatus();
175
+ if (!status.running) {
176
+ console.log(chalk.yellow('Agent is not running.'));
177
+ process.exit(0);
178
+ }
179
+ const spinner = ora('Stopping agent...').start();
180
+ const result = await stopDaemon();
181
+ if (result.success) {
182
+ spinner.succeed(chalk.green('Agent stopped'));
183
+ }
184
+ else {
185
+ spinner.fail(chalk.red(`Failed to stop: ${result.error}`));
186
+ process.exit(1);
187
+ }
188
+ });
189
+ /**
190
+ * Restart command - restart the daemon
191
+ */
192
+ program
193
+ .command('restart')
194
+ .description('Restart the agent daemon')
195
+ .action(async () => {
60
196
  if (!isConfigured()) {
61
197
  console.log(chalk.red('Error: Not logged in.'));
62
198
  console.log(chalk.gray('Run `termify-agent login` first.'));
63
199
  process.exit(1);
64
200
  }
65
- if (options.daemon) {
66
- console.log(chalk.yellow('Daemon mode is not yet implemented.'));
67
- console.log(chalk.gray('For now, run the agent in a terminal or use a process manager like pm2.'));
68
- process.exit(1);
201
+ const spinner = ora('Restarting agent...').start();
202
+ const result = await restartDaemon();
203
+ if (result.success) {
204
+ spinner.succeed(chalk.green(`Agent restarted (PID: ${result.pid})`));
205
+ console.log(chalk.gray(` Use \`termify-agent ps\` to check status`));
69
206
  }
70
- const agent = new Agent();
71
- console.log(chalk.bold('\n🚀 Termify Agent\n'));
72
- const spinner = ora('Connecting to Termify...').start();
73
- agent.on('connected', (agentId, agentName) => {
74
- spinner.succeed(chalk.green(`Connected as ${agentName}`));
75
- console.log(chalk.gray(` Agent ID: ${agentId}`));
76
- console.log(chalk.gray(` Terminals: ${agent.terminalCount}`));
77
- console.log(chalk.gray('\nWaiting for terminal requests... (Ctrl+C to stop)\n'));
78
- });
79
- agent.on('disconnected', (reason) => {
80
- console.log(chalk.yellow(`\nDisconnected: ${reason}`));
81
- console.log(chalk.gray('Attempting to reconnect...'));
82
- });
83
- agent.on('authFailed', (error) => {
84
- spinner.fail(chalk.red(`Authentication failed: ${error}`));
85
- console.log(chalk.gray('\nYour credentials may have expired.'));
86
- console.log(chalk.gray('Run `termify-agent login` to re-authenticate.'));
207
+ else {
208
+ spinner.fail(chalk.red(`Failed to restart: ${result.error}`));
87
209
  process.exit(1);
88
- });
89
- agent.on('stopped', () => {
90
- console.log(chalk.gray('\nAgent stopped.'));
91
- });
92
- const started = agent.start({ daemon: options.daemon });
93
- if (!started) {
94
- spinner.fail('Failed to start agent');
210
+ }
211
+ });
212
+ /**
213
+ * Kill command - force kill the daemon
214
+ */
215
+ program
216
+ .command('kill')
217
+ .description('Force kill the agent daemon')
218
+ .action(() => {
219
+ const spinner = ora('Killing agent...').start();
220
+ const result = killDaemon();
221
+ if (result.success) {
222
+ spinner.succeed(chalk.green('Agent killed'));
223
+ }
224
+ else {
225
+ spinner.fail(chalk.red(`Failed to kill: ${result.error}`));
95
226
  process.exit(1);
96
227
  }
97
228
  });
98
229
  /**
99
- * Stop command - placeholder for daemon mode
230
+ * PS command - show running processes
100
231
  */
101
232
  program
102
- .command('stop')
103
- .description('Stop the running agent daemon')
233
+ .command('ps')
234
+ .description('Show agent process status')
104
235
  .action(() => {
105
- console.log(chalk.yellow('Daemon mode is not yet implemented.'));
106
- console.log(chalk.gray('Use Ctrl+C to stop the foreground agent.'));
107
- process.exit(1);
236
+ printDaemonStatus();
108
237
  });
109
238
  /**
110
239
  * Status command - show current status
@@ -115,7 +244,17 @@ program
115
244
  .action(() => {
116
245
  const config = getConfig();
117
246
  const systemInfo = getSystemInfo();
247
+ const daemonStatus = getDaemonStatus();
118
248
  console.log(chalk.bold('\n📊 Termify Agent Status\n'));
249
+ // Daemon status
250
+ if (daemonStatus.running) {
251
+ console.log(chalk.green('● Agent is running'));
252
+ console.log(chalk.gray(` PID: ${daemonStatus.pid}`));
253
+ }
254
+ else {
255
+ console.log(chalk.gray('○ Agent is not running'));
256
+ }
257
+ console.log();
119
258
  // Login status
120
259
  if (isConfigured()) {
121
260
  console.log(chalk.green('✓ Logged in'));
@@ -162,29 +301,135 @@ program
162
301
  console.log(chalk.gray(`\nConfig file: ${getConfigPath()}`));
163
302
  });
164
303
  /**
165
- * Logs command - placeholder
304
+ * Logs command - view agent logs
166
305
  */
167
306
  program
168
307
  .command('logs')
169
308
  .description('View agent logs')
170
- .option('-f, --follow', 'Follow log output')
309
+ .option('-f, --follow', 'Follow log output (tail -f)')
171
310
  .option('-n, --lines <number>', 'Number of lines to show', '50')
172
- .action(() => {
173
- console.log(chalk.yellow('Log viewing is not yet implemented.'));
174
- console.log(chalk.gray('Logs are printed to stdout when running in foreground mode.'));
311
+ .option('--clear', 'Clear all logs')
312
+ .action(async (options) => {
313
+ if (options.clear) {
314
+ clearLogs();
315
+ console.log(chalk.green('✓ Logs cleared'));
316
+ return;
317
+ }
318
+ const lines = parseInt(options.lines, 10) || 50;
319
+ const logLines = getRecentLogs(lines);
320
+ if (logLines.length === 0) {
321
+ console.log(chalk.gray('No logs found.'));
322
+ console.log(chalk.gray(`Log file: ${getDaemonDir()}/agent.log`));
323
+ return;
324
+ }
325
+ console.log(chalk.bold(`\n📜 Last ${Math.min(lines, logLines.length)} log lines\n`));
326
+ console.log(logLines.join('\n'));
327
+ if (options.follow) {
328
+ console.log(chalk.gray('\n--- Following logs (Ctrl+C to stop) ---\n'));
329
+ const fs = await import('fs');
330
+ const path = await import('path');
331
+ const logFile = path.join(getDaemonDir(), 'agent.log');
332
+ if (fs.existsSync(logFile)) {
333
+ const { spawn } = await import('child_process');
334
+ const tail = spawn('tail', ['-f', logFile], { stdio: 'inherit' });
335
+ process.on('SIGINT', () => {
336
+ tail.kill();
337
+ process.exit(0);
338
+ });
339
+ }
340
+ }
175
341
  });
176
- // Show help if no command
177
- if (process.argv.length === 2) {
342
+ /**
343
+ * Help command - show all commands
344
+ */
345
+ program
346
+ .command('help [command]')
347
+ .description('Display help for a specific command')
348
+ .action((command) => {
349
+ if (command) {
350
+ const cmd = program.commands.find((c) => c.name() === command);
351
+ if (cmd) {
352
+ cmd.help();
353
+ }
354
+ else {
355
+ console.log(chalk.red(`Unknown command: ${command}`));
356
+ console.log(chalk.gray('Run `termify-agent help` to see all commands.'));
357
+ }
358
+ }
359
+ else {
360
+ showFullHelp();
361
+ }
362
+ });
363
+ /**
364
+ * Show full help with all commands and examples
365
+ */
366
+ function showFullHelp() {
178
367
  console.log(chalk.bold(`
179
- ╔════════════════════════════════════════════╗
180
-
181
- 🖥️ Termify Agent v${VERSION}
182
-
183
- Connect your local terminal to Termify
184
-
185
- ╚════════════════════════════════════════════╝
368
+ ╔════════════════════════════════════════════════════════════════╗
369
+
370
+ 🖥️ Termify Agent v${VERSION}
371
+
372
+ Connect your local terminal to Termify platform
373
+
374
+ ╚════════════════════════════════════════════════════════════════╝
186
375
  `));
187
- program.help();
376
+ console.log(chalk.bold('USAGE'));
377
+ console.log(chalk.gray(' $ termify-agent <command> [options]\n'));
378
+ console.log(chalk.bold('COMMANDS'));
379
+ console.log(chalk.cyan(' login') + chalk.gray(' Authenticate with Termify'));
380
+ console.log(chalk.cyan(' logout') + chalk.gray(' Log out and clear credentials'));
381
+ console.log(chalk.cyan(' start') + chalk.gray(' Start the agent'));
382
+ console.log(chalk.cyan(' stop') + chalk.gray(' Stop the running agent'));
383
+ console.log(chalk.cyan(' restart') + chalk.gray(' Restart the agent'));
384
+ console.log(chalk.cyan(' kill') + chalk.gray(' Force kill the agent'));
385
+ console.log(chalk.cyan(' ps') + chalk.gray(' Show agent process status'));
386
+ console.log(chalk.cyan(' status') + chalk.gray(' Show agent status and config'));
387
+ console.log(chalk.cyan(' config') + chalk.gray(' Show or modify configuration'));
388
+ console.log(chalk.cyan(' logs') + chalk.gray(' View agent logs'));
389
+ console.log(chalk.cyan(' help') + chalk.gray(' Show this help message'));
390
+ console.log(chalk.bold('\nGLOBAL OPTIONS'));
391
+ console.log(chalk.gray(' -q, --quiet Suppress non-error output'));
392
+ console.log(chalk.gray(' -v, --verbose Enable verbose logging'));
393
+ console.log(chalk.gray(' -V, --version Show version number'));
394
+ console.log(chalk.bold('\nCOMMAND OPTIONS'));
395
+ console.log(chalk.cyan('\n login:'));
396
+ console.log(chalk.gray(' -s, --server <url> Termify server URL'));
397
+ console.log(chalk.gray(' -c, --code <code> Pairing code (if you have one)'));
398
+ console.log(chalk.gray(' --start Start agent after login'));
399
+ console.log(chalk.gray(' -d, --daemon Start agent in background after login'));
400
+ console.log(chalk.cyan('\n logout:'));
401
+ console.log(chalk.gray(' --stop Stop running agent before logging out'));
402
+ console.log(chalk.cyan('\n start:'));
403
+ console.log(chalk.gray(' -d, --daemon Run in background (daemon mode)'));
404
+ console.log(chalk.cyan('\n logs:'));
405
+ console.log(chalk.gray(' -f, --follow Follow log output in real-time'));
406
+ console.log(chalk.gray(' -n, --lines <n> Number of lines to show (default: 50)'));
407
+ console.log(chalk.gray(' --clear Clear all logs'));
408
+ console.log(chalk.cyan('\n config:'));
409
+ console.log(chalk.gray(' --server <url> Set server URL'));
410
+ console.log(chalk.gray(' --show Show current configuration'));
411
+ console.log(chalk.bold('\nEXAMPLES'));
412
+ console.log(chalk.gray(' # Login and start agent in background'));
413
+ console.log(chalk.white(' $ termify-agent login -d\n'));
414
+ console.log(chalk.gray(' # Login with a specific server'));
415
+ console.log(chalk.white(' $ termify-agent login -s https://termify.example.com\n'));
416
+ console.log(chalk.gray(' # Start agent in background'));
417
+ console.log(chalk.white(' $ termify-agent start -d\n'));
418
+ console.log(chalk.gray(' # Check if agent is running'));
419
+ console.log(chalk.white(' $ termify-agent ps\n'));
420
+ console.log(chalk.gray(' # View and follow logs'));
421
+ console.log(chalk.white(' $ termify-agent logs -f\n'));
422
+ console.log(chalk.gray(' # Stop the agent'));
423
+ console.log(chalk.white(' $ termify-agent stop\n'));
424
+ console.log(chalk.bold('FILES'));
425
+ console.log(chalk.gray(` Config: ${getConfigPath()}`));
426
+ console.log(chalk.gray(` Logs: ${getDaemonDir()}/agent.log`));
427
+ console.log(chalk.gray(` PID: ${getDaemonDir()}/agent.pid\n`));
428
+ }
429
+ // Show help if no command
430
+ if (process.argv.length === 2) {
431
+ showFullHelp();
432
+ process.exit(0);
188
433
  }
189
434
  program.parse();
190
435
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termify-agent",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Termify Agent CLI - Connect your local terminal to Termify",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",