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 +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +62 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +267 -0
- package/dist/daemon.js.map +1 -0
- package/dist/index.js +299 -54
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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.
|
|
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://
|
|
4
|
-
const DEFAULT_WS_URL = 'wss://
|
|
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: {
|
package/dist/config.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/daemon.d.ts
ADDED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
.
|
|
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
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
71
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
*
|
|
230
|
+
* PS command - show running processes
|
|
100
231
|
*/
|
|
101
232
|
program
|
|
102
|
-
.command('
|
|
103
|
-
.description('
|
|
233
|
+
.command('ps')
|
|
234
|
+
.description('Show agent process status')
|
|
104
235
|
.action(() => {
|
|
105
|
-
|
|
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 -
|
|
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
|
-
.
|
|
173
|
-
|
|
174
|
-
|
|
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
|
-
|
|
177
|
-
|
|
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
|
-
║
|
|
182
|
-
║
|
|
183
|
-
║
|
|
184
|
-
║
|
|
185
|
-
|
|
368
|
+
╔════════════════════════════════════════════════════════════════╗
|
|
369
|
+
║ ║
|
|
370
|
+
║ 🖥️ Termify Agent v${VERSION} ║
|
|
371
|
+
║ ║
|
|
372
|
+
║ Connect your local terminal to Termify platform ║
|
|
373
|
+
║ ║
|
|
374
|
+
╚════════════════════════════════════════════════════════════════╝
|
|
186
375
|
`));
|
|
187
|
-
|
|
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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"}
|