@commit451/salamander 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +42 -42
  2. package/bin/salamander.js +1 -1
  3. package/dist/commands/runner-selection.d.ts +1 -1
  4. package/dist/commands/runner-selection.d.ts.map +1 -1
  5. package/dist/commands/runner-selection.js +68 -12
  6. package/dist/commands/runner-selection.js.map +1 -1
  7. package/dist/services/auth.d.ts.map +1 -1
  8. package/dist/services/auth.js +80 -50
  9. package/dist/services/auth.js.map +1 -1
  10. package/dist/services/command-listener.d.ts +1 -0
  11. package/dist/services/command-listener.d.ts.map +1 -1
  12. package/dist/services/command-listener.js +30 -7
  13. package/dist/services/command-listener.js.map +1 -1
  14. package/dist/services/crypto.d.ts +52 -0
  15. package/dist/services/crypto.d.ts.map +1 -0
  16. package/dist/services/crypto.js +104 -0
  17. package/dist/services/crypto.js.map +1 -0
  18. package/dist/services/key-manager.d.ts +45 -0
  19. package/dist/services/key-manager.d.ts.map +1 -0
  20. package/dist/services/key-manager.js +123 -0
  21. package/dist/services/key-manager.js.map +1 -0
  22. package/dist/services/multi-device-key-manager.d.ts +56 -0
  23. package/dist/services/multi-device-key-manager.d.ts.map +1 -0
  24. package/dist/services/multi-device-key-manager.js +159 -0
  25. package/dist/services/multi-device-key-manager.js.map +1 -0
  26. package/dist/services/runner.d.ts.map +1 -1
  27. package/dist/services/runner.js +56 -19
  28. package/dist/services/runner.js.map +1 -1
  29. package/dist/utils/storage.d.ts +5 -0
  30. package/dist/utils/storage.d.ts.map +1 -1
  31. package/dist/utils/storage.js +14 -0
  32. package/dist/utils/storage.js.map +1 -1
  33. package/package.json +52 -52
package/README.md CHANGED
@@ -1,42 +1,42 @@
1
- # Salamander CLI
2
-
3
- Never be AFK.
4
-
5
- See [the site](https://salamander.space/) for usage.
6
-
7
- Command-line interface for Salamander AI runners. This tool allows you to run AI-powered command execution on your local machine and receive commands from the Salamander app.
8
-
9
- ## Installation
10
- You should first install [Claude's CLI](https://docs.anthropic.com/en/docs/claude-code/cli-reference) so that your machine has the needed `claude` command available.
11
-
12
- ```bash
13
- npm install -g @commit451/salamander
14
- ```
15
-
16
- ## Usage
17
-
18
- ### Start the CLI
19
- ```bash
20
- salamander
21
- ```
22
-
23
- ## Development
24
-
25
- ```bash
26
- # Install dependencies
27
- npm install
28
-
29
- # Run in development mode
30
- npm run dev
31
-
32
- # Build the project
33
- npm run build
34
-
35
- # Run the built version
36
- npm start
37
- ```
38
-
39
- ## Publish
40
- ```
41
- npm run pub
42
- ```
1
+ # Salamander CLI
2
+
3
+ Never be AFK.
4
+
5
+ See [the site](https://salamander.space/) for usage.
6
+
7
+ Command-line interface for Salamander AI runners. This tool allows you to run AI-powered command execution on your local machine and receive commands from the Salamander app.
8
+
9
+ ## Installation
10
+ You should first install [Claude's CLI](https://docs.anthropic.com/en/docs/claude-code/cli-reference) so that your machine has the needed `claude` command available.
11
+
12
+ ```bash
13
+ npm install -g @commit451/salamander
14
+ ```
15
+
16
+ ## Usage
17
+
18
+ ### Start the CLI
19
+ ```bash
20
+ salamander
21
+ ```
22
+
23
+ ## Development
24
+
25
+ ```bash
26
+ # Install dependencies
27
+ npm install
28
+
29
+ # Run in development mode
30
+ npm run dev
31
+
32
+ # Build the project
33
+ npm run build
34
+
35
+ # Run the built version
36
+ npm start
37
+ ```
38
+
39
+ ## Publish
40
+ ```
41
+ npm run pub
42
+ ```
package/bin/salamander.js CHANGED
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
  import('../dist/index.js').then(m => m.default()).catch(console.error);
@@ -1,2 +1,2 @@
1
- export declare function runnerSelectionFlow(): Promise<void>;
1
+ export declare function runnerSelectionFlow(checkDefault?: boolean): Promise<void>;
2
2
  //# sourceMappingURL=runner-selection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner-selection.d.ts","sourceRoot":"","sources":["../../src/commands/runner-selection.ts"],"names":[],"mappings":"AAQA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuEzD"}
1
+ {"version":3,"file":"runner-selection.d.ts","sourceRoot":"","sources":["../../src/commands/runner-selection.ts"],"names":[],"mappings":"AASA,wBAAsB,mBAAmB,CAAC,YAAY,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA4HrF"}
@@ -4,10 +4,28 @@ import { RunnerService } from '../services/runner.js';
4
4
  import { CommandListener } from '../services/command-listener.js';
5
5
  import { createRunnerFlow } from './create-runner.js';
6
6
  import { deleteRunnerFlow } from './delete-runner.js';
7
- export async function runnerSelectionFlow() {
7
+ import { loadConfig, saveConfig } from '../utils/storage.js';
8
+ export async function runnerSelectionFlow(checkDefault = true) {
8
9
  console.log(chalk.blue('šŸƒ Runner Selection'));
9
10
  try {
10
11
  const localRunners = await RunnerService.getAllRunners();
12
+ const config = await loadConfig();
13
+ const defaultRunnerId = config?.defaultRunnerId;
14
+ // Auto-start default runner on initial launch
15
+ if (checkDefault && defaultRunnerId) {
16
+ const defaultRunner = localRunners.find(r => r.id === defaultRunnerId);
17
+ if (defaultRunner) {
18
+ console.log(chalk.blue(`⭐ Auto-starting default runner: ${chalk.bold(defaultRunner.name)}`));
19
+ const listener = CommandListener.getInstance();
20
+ await listener.startListening(defaultRunner);
21
+ // User typed 'q', fall through to normal menu
22
+ return runnerSelectionFlow(false);
23
+ }
24
+ else {
25
+ console.log(chalk.yellow('āš ļø Default runner no longer exists. Clearing default setting.'));
26
+ await saveConfig({});
27
+ }
28
+ }
11
29
  if (localRunners.length === 0) {
12
30
  console.log(chalk.yellow('āš ļø No runners found for this machine.'));
13
31
  console.log('You need to create a runner first.');
@@ -20,8 +38,7 @@ export async function runnerSelectionFlow() {
20
38
  });
21
39
  if (shouldCreate === 'create') {
22
40
  await createRunnerFlow();
23
- // After creating a runner, restart the selection process
24
- return runnerSelectionFlow();
41
+ return runnerSelectionFlow(false);
25
42
  }
26
43
  else {
27
44
  console.log(chalk.blue('šŸ‘‹ Goodbye!'));
@@ -31,25 +48,40 @@ export async function runnerSelectionFlow() {
31
48
  console.log(chalk.green(`āœ… Found ${localRunners.length} runner(s) for this machine`));
32
49
  const choices = [
33
50
  ...localRunners.map(runner => ({
34
- name: formatRunnerChoice(runner),
51
+ name: formatRunnerChoice(runner, defaultRunnerId),
35
52
  value: `run:${runner.id}`,
36
53
  description: `Listen for ${runner.runnerType} commands in ${runner.directory}`
37
54
  })),
38
55
  { name: 'āž• Create new runner', value: 'create' },
39
56
  { name: 'šŸ—‘ļø Delete runner', value: 'delete' },
40
- { name: '🚪 Exit', value: 'exit' }
41
57
  ];
58
+ // Add disable default option if a default is set and the runner still exists
59
+ if (defaultRunnerId) {
60
+ const defaultRunner = localRunners.find(r => r.id === defaultRunnerId);
61
+ if (defaultRunner) {
62
+ choices.push({
63
+ name: `🚫 Disable starting default runner (currently: ${defaultRunner.name})`,
64
+ value: 'disable-default'
65
+ });
66
+ }
67
+ }
68
+ choices.push({ name: '🚪 Exit', value: 'exit' });
42
69
  const selection = await select({
43
70
  message: 'Select a runner to start or choose an action:',
44
71
  choices
45
72
  });
46
73
  if (selection === 'create') {
47
74
  await createRunnerFlow();
48
- return runnerSelectionFlow();
75
+ return runnerSelectionFlow(false);
49
76
  }
50
77
  else if (selection === 'delete') {
51
78
  await deleteRunnerFlow();
52
- return runnerSelectionFlow();
79
+ return runnerSelectionFlow(false);
80
+ }
81
+ else if (selection === 'disable-default') {
82
+ await saveConfig({});
83
+ console.log(chalk.green('āœ… Default runner disabled. CLI will show menu on startup.'));
84
+ return runnerSelectionFlow(false);
53
85
  }
54
86
  else if (selection === 'exit') {
55
87
  console.log(chalk.blue('šŸ‘‹ Goodbye!'));
@@ -59,12 +91,34 @@ export async function runnerSelectionFlow() {
59
91
  const runnerId = selection.replace('run:', '');
60
92
  const runner = localRunners.find(r => r.id === runnerId);
61
93
  if (runner) {
62
- const listener = CommandListener.getInstance();
63
- await listener.startListening(runner);
94
+ // Show sub-menu for runner action
95
+ const action = await select({
96
+ message: `What would you like to do with "${runner.name}"?`,
97
+ choices: [
98
+ { name: 'Start runner', value: 'start' },
99
+ { name: 'Start and set as default (auto-start on launch)', value: 'start-default' },
100
+ { name: 'Back to menu', value: 'back' },
101
+ ]
102
+ });
103
+ if (action === 'start') {
104
+ const listener = CommandListener.getInstance();
105
+ await listener.startListening(runner);
106
+ return runnerSelectionFlow(false);
107
+ }
108
+ else if (action === 'start-default') {
109
+ await saveConfig({ defaultRunnerId: runner.id });
110
+ console.log(chalk.green(`⭐ "${runner.name}" set as default runner.`));
111
+ const listener = CommandListener.getInstance();
112
+ await listener.startListening(runner);
113
+ return runnerSelectionFlow(false);
114
+ }
115
+ else {
116
+ return runnerSelectionFlow(false);
117
+ }
64
118
  }
65
119
  else {
66
120
  console.error(chalk.red('āŒ Runner not found'));
67
- return runnerSelectionFlow();
121
+ return runnerSelectionFlow(false);
68
122
  }
69
123
  }
70
124
  }
@@ -72,7 +126,9 @@ export async function runnerSelectionFlow() {
72
126
  process.exit(1);
73
127
  }
74
128
  }
75
- function formatRunnerChoice(runner) {
76
- return `šŸ¤– ${chalk.bold(runner.name)} ${chalk.dim(`(${runner.directory})`)}`;
129
+ function formatRunnerChoice(runner, defaultRunnerId) {
130
+ const isDefault = runner.id === defaultRunnerId;
131
+ const defaultBadge = isDefault ? chalk.yellow(' ⭐') : '';
132
+ return `šŸ¤– ${chalk.bold(runner.name)} ${chalk.dim(`(${runner.directory})`)}${defaultBadge}`;
77
133
  }
78
134
  //# sourceMappingURL=runner-selection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner-selection.js","sourceRoot":"","sources":["../../src/commands/runner-selection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner-selection.js","sourceRoot":"","sources":["../../src/commands/runner-selection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqD,IAAI,EAAC,MAAM,eAAe,CAAC;AAOvF,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAqB;IAC/C,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAkB;IACrD,OAAO,CAAC,MAAM,CAAC,cAAc,CAA8B;IAE3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAEjE,OAAO,CAAC,MAAM,CAAC,wBAAwB;mBAyClB,WAAW;mBAsBX,wBAAwB;WAiDhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCxC,MAAM,KAAK,eAAe,IAAI,OAAO,CAEpC;IAED,MAAM,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,CAE7B;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,GAAG,IAAI,CAEjC;WAEY,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;mBA8BrB,WAAW;CAoCnC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqD,IAAI,EAAC,MAAM,eAAe,CAAC;AAOvF,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAqB;IAC/C,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAkB;IACrD,OAAO,CAAC,MAAM,CAAC,cAAc,CAA8B;IAE3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAEjE,OAAO,CAAC,MAAM,CAAC,wBAAwB;mBAyClB,WAAW;mBAsBX,wBAAwB;WA2DhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCxC,MAAM,KAAK,eAAe,IAAI,OAAO,CAEpC;IAED,MAAM,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,CAE7B;IAED,MAAM,KAAK,MAAM,IAAI,MAAM,GAAG,IAAI,CAEjC;WAEY,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;mBAqBrB,WAAW;CAsEnC"}
@@ -15,42 +15,42 @@ export class AuthService {
15
15
  static WEB_APP_URL = 'https://salamander.space';
16
16
  static generateAuthResponseHTML(isSuccess, title, message) {
17
17
  const headingColor = isSuccess ? '#10b981' : '#f87171';
18
- return `
19
- <!DOCTYPE html>
20
- <html>
21
- <head>
22
- <title>${title}</title>
23
- <style>
24
- body {
25
- background-color: #111827;
26
- color: #f9fafb;
27
- font-family: 'Fira Code', 'JetBrains Mono', monospace;
28
- text-align: center;
29
- padding: 50px;
30
- margin: 0;
31
- }
32
- h1 { color: ${headingColor}; }
33
- .logo {
34
- width: 48px;
35
- height: 48px;
36
- margin: 0 auto 24px;
37
- background: #ff6b35;
38
- border-radius: 8px;
39
- display: flex;
40
- align-items: center;
41
- justify-content: center;
42
- font-size: 24px;
43
- color: white;
44
- font-weight: bold;
45
- }
46
- </style>
47
- </head>
48
- <body>
49
- <div class="logo">S</div>
50
- <h1>${title}</h1>
51
- <p>${message}</p>
52
- </body>
53
- </html>
18
+ return `
19
+ <!DOCTYPE html>
20
+ <html>
21
+ <head>
22
+ <title>${title}</title>
23
+ <style>
24
+ body {
25
+ background-color: #111827;
26
+ color: #f9fafb;
27
+ font-family: 'Fira Code', 'JetBrains Mono', monospace;
28
+ text-align: center;
29
+ padding: 50px;
30
+ margin: 0;
31
+ }
32
+ h1 { color: ${headingColor}; }
33
+ .logo {
34
+ width: 48px;
35
+ height: 48px;
36
+ margin: 0 auto 24px;
37
+ background: #ff6b35;
38
+ border-radius: 8px;
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ font-size: 24px;
43
+ color: white;
44
+ font-weight: bold;
45
+ }
46
+ </style>
47
+ </head>
48
+ <body>
49
+ <div class="logo">S</div>
50
+ <h1>${title}</h1>
51
+ <p>${message}</p>
52
+ </body>
53
+ </html>
54
54
  `;
55
55
  }
56
56
  static async openBrowser(url) {
@@ -70,7 +70,7 @@ export class AuthService {
70
70
  await execAsync(command);
71
71
  }
72
72
  catch (error) {
73
- console.log(chalk.yellow(`āš ļø Could not open browser automatically. Please visit: ${url}`));
73
+ // Browser open failed (e.g. headless environment) - URL is printed separately
74
74
  }
75
75
  }
76
76
  static async startLocalServerForToken() {
@@ -83,6 +83,14 @@ export class AuthService {
83
83
  tokenReject = rej;
84
84
  });
85
85
  server.on('request', (req, res) => {
86
+ // Add CORS headers for cross-origin requests from the web app
87
+ res.setHeader('Access-Control-Allow-Origin', '*');
88
+ res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');
89
+ if (req.method === 'OPTIONS') {
90
+ res.writeHead(204);
91
+ res.end();
92
+ return;
93
+ }
86
94
  if (req.url) {
87
95
  const url = new URL(req.url, 'http://localhost:8080');
88
96
  if (url.pathname === '/auth-callback') {
@@ -168,13 +176,6 @@ export class AuthService {
168
176
  console.log(chalk.green('āœ… Already signed in!'));
169
177
  return true;
170
178
  }
171
- const proceed = await input({
172
- message: 'Press Enter to open sign-in in your browser, or type "q" to quit:',
173
- default: '',
174
- });
175
- if (proceed.toLowerCase() === 'q') {
176
- return false;
177
- }
178
179
  return await this.webAuthFlow();
179
180
  }
180
181
  catch (error) {
@@ -183,22 +184,51 @@ export class AuthService {
183
184
  }
184
185
  static async webAuthFlow() {
185
186
  try {
186
- console.log(chalk.yellow('🌐 Please complete sign-in in your browser...\n'));
187
187
  // Start local server to receive callback
188
188
  const { server, tokenPromise } = await this.startLocalServerForToken();
189
189
  try {
190
190
  // Create the auth URL - use main auth page with callback parameter
191
191
  const redirectUrl = 'http://localhost:8080/auth-callback';
192
192
  const authUrl = `${this.WEB_APP_URL}/#auth?callback=${encodeURIComponent(redirectUrl)}`;
193
- // Open browser
193
+ // Try to open browser (best effort - may fail on headless)
194
194
  await this.openBrowser(authUrl);
195
- console.log('');
196
- // Wait for callback
197
- const customToken = await tokenPromise;
195
+ // Always print the URL so it can be opened on any device
196
+ console.log(chalk.yellow('🌐 Open this URL in any browser to sign in:\n'));
197
+ console.log(` ${chalk.cyan(authUrl)}\n`);
198
+ console.log(chalk.gray(' If signing in from another device, copy the token shown'));
199
+ console.log(chalk.gray(' after authentication and paste it below.\n'));
200
+ // Race between local server callback and manual token paste
201
+ const abortController = new AbortController();
202
+ // When server gets the token, abort the input prompt
203
+ const serverTokenPromise = tokenPromise.then(token => {
204
+ abortController.abort();
205
+ return token;
206
+ });
207
+ // Loop the input prompt so accidental Enter doesn't hang
208
+ const manualTokenPromise = (async () => {
209
+ while (!abortController.signal.aborted) {
210
+ try {
211
+ const token = await input({ message: 'Waiting for sign-in (or paste token here):' }, { signal: abortController.signal });
212
+ if (token && token.trim() !== '') {
213
+ return token.trim();
214
+ }
215
+ }
216
+ catch {
217
+ break;
218
+ }
219
+ }
220
+ // Aborted by server callback - return a never-resolving promise
221
+ // so the race resolves with the server token
222
+ return new Promise(() => { });
223
+ })();
224
+ const customToken = await Promise.race([
225
+ serverTokenPromise,
226
+ manualTokenPromise,
227
+ ]);
198
228
  // Sign in to Firebase Auth using the custom token
199
229
  const userCredential = await signInWithCustomToken(auth, customToken);
200
230
  this.currentUser = userCredential.user;
201
- console.log(chalk.green('āœ… Login successful!'));
231
+ console.log(chalk.green('\nāœ… Login successful!'));
202
232
  return true;
203
233
  }
204
234
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export declare class CommandListener {
4
4
  private activeListeners;
5
5
  private isShuttingDown;
6
6
  private rl;
7
+ private quitResolve;
7
8
  static getInstance(): CommandListener;
8
9
  startListening(runner: Runner): Promise<void>;
9
10
  private setupLocalCommandPrompt;
@@ -1 +1 @@
1
- {"version":3,"file":"command-listener.d.ts","sourceRoot":"","sources":["../../src/services/command-listener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAO1C,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IACvD,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,EAAE,CAAmC;IAE7C,MAAM,CAAC,WAAW,IAAI,eAAe;IAO/B,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+InD,OAAO,CAAC,uBAAuB;IAsDzB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAkBjC"}
1
+ {"version":3,"file":"command-listener.d.ts","sourceRoot":"","sources":["../../src/services/command-listener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAO1C,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IACvD,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,WAAW,CAA6B;IAEhD,MAAM,CAAC,WAAW,IAAI,eAAe;IAO/B,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuJnD,OAAO,CAAC,uBAAuB;IAuEzB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAkBjC"}
@@ -10,6 +10,7 @@ export class CommandListener {
10
10
  activeListeners = new Map();
11
11
  isShuttingDown = false;
12
12
  rl = null;
13
+ quitResolve = null;
13
14
  static getInstance() {
14
15
  if (!CommandListener.instance) {
15
16
  CommandListener.instance = new CommandListener();
@@ -17,6 +18,8 @@ export class CommandListener {
17
18
  return CommandListener.instance;
18
19
  }
19
20
  async startListening(runner) {
21
+ // Reset state for reuse after returning from menu
22
+ this.isShuttingDown = false;
20
23
  if (this.activeListeners.has(runner.id)) {
21
24
  console.log(chalk.yellow(`Already listening to runner "${runner.name}"`));
22
25
  return;
@@ -58,7 +61,7 @@ export class CommandListener {
58
61
  console.log(chalk.yellow(' This bypasses normal permission checks for file access and operations'));
59
62
  console.log(chalk.yellow(' Be careful about what directories you run this in and what commands you execute'));
60
63
  console.log('');
61
- console.log(chalk.gray(` Press Ctrl+C to stop`));
64
+ console.log(chalk.gray(` Type 'q' to return to menu, or press Ctrl+C to exit`));
62
65
  console.log(chalk.gray(` Keep in mind, if your machine goes to sleep, it won't process commands`));
63
66
  // Set up non-blocking readline for local commands
64
67
  this.setupLocalCommandPrompt(runner.id, encryptionCode);
@@ -133,6 +136,10 @@ export class CommandListener {
133
136
  // Also handle uncaught exceptions
134
137
  process.on('uncaughtException', cleanup);
135
138
  process.on('unhandledRejection', cleanup);
139
+ // Wait until user types 'q' to return to menu
140
+ return new Promise((resolve) => {
141
+ this.quitResolve = resolve;
142
+ });
136
143
  }
137
144
  setupLocalCommandPrompt(runnerId, encryptionCode) {
138
145
  if (this.isShuttingDown)
@@ -144,20 +151,36 @@ export class CommandListener {
144
151
  output: process.stdout,
145
152
  prompt: chalk.green('> ')
146
153
  });
147
- console.log(chalk.cyan('\nšŸ’¬ You can enter a command here (or press Ctrl+C to exit):'));
154
+ console.log(chalk.cyan("\nšŸ’¬ Enter a command, type 'q' to return to menu, or Ctrl+C to exit:"));
148
155
  this.rl.prompt();
149
156
  // Listen for line events (non-blocking)
150
157
  this.rl.on('line', async (userInput) => {
151
158
  if (this.isShuttingDown)
152
159
  return;
160
+ const trimmedInput = userInput.trim();
161
+ // Handle quit command to return to menu
162
+ if (trimmedInput === 'q') {
163
+ console.log(chalk.blue('\nReturning to menu...'));
164
+ this.isShuttingDown = true;
165
+ await this.stopListening(runnerId);
166
+ // Clean up process handlers before returning to menu
167
+ process.removeAllListeners('SIGINT');
168
+ process.removeAllListeners('SIGTERM');
169
+ process.removeAllListeners('uncaughtException');
170
+ process.removeAllListeners('unhandledRejection');
171
+ if (this.quitResolve) {
172
+ this.quitResolve();
173
+ this.quitResolve = null;
174
+ }
175
+ return;
176
+ }
153
177
  // If user provided input, send it as a command
154
- if (userInput && userInput.trim().length > 0) {
155
- const command = userInput.trim();
156
- console.log(chalk.cyan(`šŸ“¤ Sending command: ${command}`));
178
+ if (trimmedInput.length > 0) {
179
+ console.log(chalk.cyan(`šŸ“¤ Sending command: ${trimmedInput}`));
157
180
  try {
158
181
  // Encrypt the command
159
- const encryptResult = EncryptionService.encrypt(command, encryptionCode);
160
- const encryptedCommand = encryptResult.success ? encryptResult.encrypted : command;
182
+ const encryptResult = EncryptionService.encrypt(trimmedInput, encryptionCode);
183
+ const encryptedCommand = encryptResult.success ? encryptResult.encrypted : trimmedInput;
161
184
  // Create a user message in Firestore
162
185
  await RunnerService.createMessage(runnerId, {
163
186
  content: encryptedCommand,
@@ -1 +1 @@
1
- {"version":3,"file":"command-listener.js","sourceRoot":"","sources":["../../src/services/command-listener.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-listener.js","sourceRoot":"","sources":["../../src/services/command-listener.ts"],"names":[],"mappings":"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"}