@saccolabs/tars 1.8.2 → 1.9.1

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 (49) hide show
  1. package/context/skills/gws-setup/SKILL.md +71 -0
  2. package/dist/auth/workspace-auth-service.d.ts +10 -0
  3. package/dist/auth/workspace-auth-service.js +78 -0
  4. package/dist/auth/workspace-auth-service.js.map +1 -0
  5. package/dist/cli/commands/setup.js +158 -5
  6. package/dist/cli/commands/setup.js.map +1 -1
  7. package/dist/cli/commands/stop.js +3 -0
  8. package/dist/cli/commands/stop.js.map +1 -1
  9. package/dist/supervisor/dashboard-service.d.ts +12 -0
  10. package/dist/supervisor/dashboard-service.js +109 -0
  11. package/dist/supervisor/dashboard-service.js.map +1 -0
  12. package/dist/supervisor/gemini-engine.d.ts +1 -0
  13. package/dist/supervisor/gemini-engine.js +44 -4
  14. package/dist/supervisor/gemini-engine.js.map +1 -1
  15. package/dist/supervisor/main.js +4 -0
  16. package/dist/supervisor/main.js.map +1 -1
  17. package/package.json +2 -1
  18. package/stock_apps/dashboard/DEPLOY.md +30 -0
  19. package/stock_apps/dashboard/README.md +36 -0
  20. package/stock_apps/dashboard/dash.log +134 -0
  21. package/stock_apps/dashboard/eslint.config.mjs +19 -0
  22. package/stock_apps/dashboard/next.config.ts +12 -0
  23. package/stock_apps/dashboard/package-lock.json +8581 -0
  24. package/stock_apps/dashboard/package.json +42 -0
  25. package/stock_apps/dashboard/postcss.config.mjs +5 -0
  26. package/stock_apps/dashboard/public/file.svg +1 -0
  27. package/stock_apps/dashboard/public/globe.svg +1 -0
  28. package/stock_apps/dashboard/public/next.svg +1 -0
  29. package/stock_apps/dashboard/public/tars-logo.png +0 -0
  30. package/stock_apps/dashboard/public/vercel.svg +1 -0
  31. package/stock_apps/dashboard/public/window.svg +1 -0
  32. package/stock_apps/dashboard/server.js +488 -0
  33. package/stock_apps/dashboard/src/app/globals.css +122 -0
  34. package/stock_apps/dashboard/src/app/icon.png +0 -0
  35. package/stock_apps/dashboard/src/app/layout.tsx +35 -0
  36. package/stock_apps/dashboard/src/app/page.tsx +170 -0
  37. package/stock_apps/dashboard/src/components/FileExplorer.tsx +238 -0
  38. package/stock_apps/dashboard/src/components/IntelligencePanel.tsx +322 -0
  39. package/stock_apps/dashboard/src/components/MetricsPanel.tsx +347 -0
  40. package/stock_apps/dashboard/src/components/SystemActions.tsx +168 -0
  41. package/stock_apps/dashboard/src/context/SocketContext.tsx +62 -0
  42. package/stock_apps/dashboard/src/lib/socket.ts +10 -0
  43. package/stock_apps/dashboard/tsconfig.json +27 -0
  44. package/dist/discord/discord-bot.d.ts +0 -37
  45. package/dist/discord/discord-bot.js +0 -210
  46. package/dist/discord/discord-bot.js.map +0 -1
  47. package/dist/discord/message-formatter.d.ts +0 -95
  48. package/dist/discord/message-formatter.js +0 -482
  49. package/dist/discord/message-formatter.js.map +0 -1
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: gws-setup
3
+ description: Guide for setting up and managing the Google Workspace CLI (gws) and its skill recipes.
4
+ ---
5
+
6
+ # Google Workspace CLI (gws) Setup Guide
7
+
8
+ Use this skill when you need to enable Tars to interact with Google Workspace (Gmail, Drive, Calendar, etc.) using the professional-grade `gws` CLI.
9
+
10
+ ## 🚀 1. Installation
11
+
12
+ The `gws` CLI is the engine behind all Google Workspace automation.
13
+
14
+ ```bash
15
+ # Install via the official shell script (macOS/Linux)
16
+ curl -sSL https://github.com/googleworkspace/cli/releases/latest/download/gws-installer.sh | bash
17
+ ```
18
+
19
+ ## 🔑 2. Authentication Setup
20
+
21
+ Tars needs an OAuth client to act on your behalf. You should help the user set this up using the built-in wizard.
22
+
23
+ ```bash
24
+ # Run the interactive setup wizard
25
+ gws auth setup
26
+ ```
27
+
28
+ **Setup instructions to give the user:**
29
+
30
+ 1. **Google Cloud Project**: You'll need a project. If you don't have one, `gws` will help you create it or provide a link.
31
+ 2. **Enable APIs**: The wizard will prompt you to enable the APIs you want to use (e.g., Gmail, Drive).
32
+ 3. **OAuth Client**: The wizard will ask you to create a **Desktop App** OAuth client in the Google Cloud Console and download the `client_secret.json` file.
33
+ 4. **Login**: Once setup is complete, run:
34
+ ```bash
35
+ gws auth login
36
+ ```
37
+
38
+ ## 📚 3. Skill Generation
39
+
40
+ The `gws` CLI can auto-generate documentation (specialized "skills") for every Google Workspace API. This is how Tars learns exactly what commands to run.
41
+
42
+ ```bash
43
+ # Generate all skills and recipes into Tars' skill directory
44
+ gws generate-skills --output-dir ~/.tars/.gemini/skills
45
+ ```
46
+
47
+ **Why do this?**
48
+
49
+ - It creates `SKILL.md` files for Services (Gmail, Drive, etc.).
50
+ - It creates **Recipes** (e.g., `recipe-label-and-archive-emails`).
51
+ - It creates **Personas** (e.g., `persona-exec-assistant`).
52
+ - Once generated, Tars will automatically index these and know how to perform complex tasks.
53
+
54
+ ## 🛠️ Common Admin Commands
55
+
56
+ ```bash
57
+ # Check if you are logged in
58
+ gws auth status
59
+
60
+ # List all available services and helpers
61
+ gws --help
62
+
63
+ # Example: Read your first 5 emails
64
+ gws gmail +triage --limit 5
65
+ ```
66
+
67
+ ## ⚠️ Security
68
+
69
+ - **Never** share the `client_secret.json`.
70
+ - Tars will store its tokens in `~/.tars/.gemini/token_cache.json`.
71
+ - If you need to revoke access, run `gws auth logout`.
@@ -0,0 +1,10 @@
1
+ export declare class WorkspaceOAuthService {
2
+ private readonly homeDir;
3
+ private readonly credspath;
4
+ private readonly clientId;
5
+ private readonly clientSecret;
6
+ private readonly redirectUri;
7
+ constructor(homeDir: string);
8
+ isAuthenticated(): Promise<boolean>;
9
+ login(): Promise<void>;
10
+ }
@@ -0,0 +1,78 @@
1
+ import { OAuth2Client } from 'google-auth-library';
2
+ import fs from 'fs/promises';
3
+ import path from 'path';
4
+ import logger from '../utils/logger.js';
5
+ import inquirer from 'inquirer';
6
+ import chalk from 'chalk';
7
+ export class WorkspaceOAuthService {
8
+ homeDir;
9
+ credspath;
10
+ clientId;
11
+ clientSecret;
12
+ redirectUri = 'http://localhost:32941';
13
+ constructor(homeDir) {
14
+ this.homeDir = homeDir;
15
+ this.credspath = path.join(this.homeDir, '.gemini', 'google-workspace-creds.json');
16
+ this.clientId = process.env.GOOGLE_WORKSPACE_CLIENT_ID || '';
17
+ this.clientSecret = process.env.GOOGLE_WORKSPACE_CLIENT_SECRET || '';
18
+ }
19
+ async isAuthenticated() {
20
+ try {
21
+ await fs.access(this.credspath);
22
+ return true;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ async login() {
29
+ if (!this.clientId || !this.clientSecret) {
30
+ throw new Error('Missing GOOGLE_WORKSPACE_CLIENT_ID or GOOGLE_WORKSPACE_CLIENT_SECRET in environment.');
31
+ }
32
+ const oauth2Client = new OAuth2Client(this.clientId, this.clientSecret, this.redirectUri);
33
+ const scopes = [
34
+ 'https://www.googleapis.com/auth/gmail.modify',
35
+ 'https://www.googleapis.com/auth/drive',
36
+ 'https://www.googleapis.com/auth/calendar',
37
+ 'https://www.googleapis.com/auth/spreadsheets',
38
+ 'https://www.googleapis.com/auth/documents',
39
+ 'https://www.googleapis.com/auth/tasks',
40
+ 'https://www.googleapis.com/auth/userinfo.email',
41
+ 'openid'
42
+ ];
43
+ const url = oauth2Client.generateAuthUrl({
44
+ access_type: 'offline',
45
+ scope: scopes,
46
+ prompt: 'consent'
47
+ });
48
+ console.log(chalk.cyan('\n 1. Open this URL in your browser:'));
49
+ console.log(chalk.white(`\n ${url}\n`));
50
+ console.log(chalk.cyan(' 2. Log in and copy the "code" parameter from the resulting URL.'));
51
+ console.log(chalk.dim(' (The page might fail to load, just look at the address bar for ?code=...)'));
52
+ const { code } = await inquirer.prompt([
53
+ {
54
+ type: 'input',
55
+ name: 'code',
56
+ message: ' Enter the authorization code:',
57
+ validate: (input) => input.length > 10 || 'Please enter a valid code'
58
+ }
59
+ ]);
60
+ try {
61
+ const { tokens } = await oauth2Client.getToken(code);
62
+ const creds = {
63
+ client_id: this.clientId,
64
+ client_secret: this.clientSecret,
65
+ refresh_token: tokens.refresh_token,
66
+ type: 'authorized_user'
67
+ };
68
+ await fs.mkdir(path.dirname(this.credspath), { recursive: true });
69
+ await fs.writeFile(this.credspath, JSON.stringify(creds, null, 2));
70
+ logger.info('✅ Google Workspace credentials saved.');
71
+ }
72
+ catch (error) {
73
+ logger.error(`❌ Failed to exchange code for tokens: ${error.message}`);
74
+ throw error;
75
+ }
76
+ }
77
+ }
78
+ //# sourceMappingURL=workspace-auth-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-auth-service.js","sourceRoot":"","sources":["../../src/auth/workspace-auth-service.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,10 @@ import fsSync from 'fs';
7
7
  import path from 'path';
8
8
  import { Client, GatewayIntentBits } from 'discord.js';
9
9
  import { TarsOAuthService } from '../../auth/oauth-service.js';
10
+ import { WorkspaceOAuthService } from '../../auth/workspace-auth-service.js';
10
11
  import { BrainAuditor } from '../../utils/brain-audit.js';
11
12
  import { getTarsHome } from '../../utils/paths.js';
13
+ import { SecretsManager } from '../../utils/secrets-manager.js';
12
14
  /**
13
15
  * Check if the isolated tars environment is authenticated
14
16
  */
@@ -16,6 +18,39 @@ async function checkTarsAuth(tarsHome) {
16
18
  const oauthService = new TarsOAuthService(tarsHome);
17
19
  return await oauthService.isAuthenticated();
18
20
  }
21
+ /**
22
+ * Helper to setup Workspace Auth
23
+ */
24
+ async function setupWorkspaceAuth(tarsHome, wsService) {
25
+ const secretsManager = new SecretsManager(tarsHome);
26
+ const secrets = secretsManager.load();
27
+ if (!secrets.GOOGLE_WORKSPACE_CLIENT_ID || !secrets.GOOGLE_WORKSPACE_CLIENT_SECRET) {
28
+ console.log(chalk.yellow('\n Workspace integration requires an OAuth Client ID and Secret.'));
29
+ console.log(chalk.dim(' Create one in the Google Cloud Console (Desktop App type).'));
30
+ const answers = await inquirer.prompt([
31
+ {
32
+ type: 'input',
33
+ name: 'clientId',
34
+ message: ' Enter Google Workspace Client ID:',
35
+ default: secrets.GOOGLE_WORKSPACE_CLIENT_ID,
36
+ validate: (i) => i.length > 10 || 'Required'
37
+ },
38
+ {
39
+ type: 'password',
40
+ name: 'clientSecret',
41
+ message: ' Enter Google Workspace Client Secret:',
42
+ default: secrets.GOOGLE_WORKSPACE_CLIENT_SECRET,
43
+ validate: (i) => i.length > 5 || 'Required'
44
+ }
45
+ ]);
46
+ secretsManager.set('GOOGLE_WORKSPACE_CLIENT_ID', answers.clientId);
47
+ secretsManager.set('GOOGLE_WORKSPACE_CLIENT_SECRET', answers.clientSecret);
48
+ // Refresh env for the service
49
+ process.env.GOOGLE_WORKSPACE_CLIENT_ID = answers.clientId;
50
+ process.env.GOOGLE_WORKSPACE_CLIENT_SECRET = answers.clientSecret;
51
+ }
52
+ await wsService.login();
53
+ }
19
54
  /**
20
55
  * tars setup - The Onboarding Wizard
21
56
  */
@@ -35,7 +70,7 @@ export async function setup() {
35
70
  const isAuthed = await checkTarsAuth(tarsHome);
36
71
  spinner.succeed(`Prerequisites met (Node ${nodeVersion})`);
37
72
  // ── Step 1: Google OAuth ───────────────────────────────
38
- console.log(chalk.bold('\nStep 1/5: Google Authentication'));
73
+ console.log(chalk.bold('\nStep 1/7: Google Authentication'));
39
74
  console.log(chalk.dim('────────────────────────────────'));
40
75
  let performAuth = false;
41
76
  if (isAuthed) {
@@ -87,7 +122,7 @@ export async function setup() {
87
122
  console.log(chalk.yellow(' Skipped. Tars will not be able to communicate with Gemini without auth.'));
88
123
  }
89
124
  // ── Step 2: Discord Configuration ─────────────────────
90
- console.log(chalk.bold('\nStep 2/5: Discord Bot Setup'));
125
+ console.log(chalk.bold('\nStep 2/7: Discord Bot Setup'));
91
126
  console.log(chalk.dim('───────────────────────────'));
92
127
  let existingConfig = {};
93
128
  try {
@@ -144,8 +179,10 @@ export async function setup() {
144
179
  }
145
180
  }
146
181
  // ── Step 3: Configuration ─────────────────────────────
147
- console.log(chalk.bold('\nStep 3/5: Identity & Engine'));
182
+ console.log(chalk.bold('\nStep 3/7: Identity & Engine'));
148
183
  console.log(chalk.dim('────────────────────────────'));
184
+ console.log(chalk.dim(' Tars is your personal assistant and sidekick.'));
185
+ console.log(chalk.dim(' Every Google account includes free Gemini inference!'));
149
186
  const config = await inquirer.prompt([
150
187
  {
151
188
  type: 'input',
@@ -191,8 +228,90 @@ export async function setup() {
191
228
  : 30
192
229
  }
193
230
  ]);
194
- // ── Step 4: Installation ──────────────────────────────
195
- console.log(chalk.bold('\nStep 4/5: Installing'));
231
+ // ── Step 4: Google Workspace ──────────────────────────
232
+ console.log(chalk.bold('\nStep 4/7: Google Workspace Integration'));
233
+ console.log(chalk.dim('──────────────────────────────────────'));
234
+ console.log(chalk.dim(' Enables Tars to read verification emails, manage'));
235
+ console.log(chalk.dim(' your calendar, and interact with your files.'));
236
+ const wsService = new WorkspaceOAuthService(tarsHome);
237
+ const isWsAuthed = await wsService.isAuthenticated();
238
+ if (isWsAuthed) {
239
+ console.log(chalk.green(' ✓ Google Workspace already authenticated.'));
240
+ const { reAuthWs } = await inquirer.prompt([
241
+ {
242
+ type: 'confirm',
243
+ name: 'reAuthWs',
244
+ message: 'Do you want to re-authenticate Workspace access?',
245
+ default: false
246
+ }
247
+ ]);
248
+ if (reAuthWs)
249
+ await setupWorkspaceAuth(tarsHome, wsService);
250
+ }
251
+ else {
252
+ const { setupWs } = await inquirer.prompt([
253
+ {
254
+ type: 'confirm',
255
+ name: 'setupWs',
256
+ message: 'Enable Google Workspace integration (Gmail, Drive, Calendar)?',
257
+ default: true
258
+ }
259
+ ]);
260
+ if (setupWs)
261
+ await setupWorkspaceAuth(tarsHome, wsService);
262
+ }
263
+ // ── Step 5: Tars Dashboard ────────────────────────────
264
+ console.log(chalk.bold('\nStep 5/7: Tars Dashboard & Cloudflare'));
265
+ console.log(chalk.dim('─────────────────────────────────────'));
266
+ const secretsManager = new SecretsManager(tarsHome);
267
+ const secrets = secretsManager.load();
268
+ const dashConfig = await inquirer.prompt([
269
+ {
270
+ type: 'confirm',
271
+ name: 'enableDash',
272
+ message: 'Enable Tars Dashboard (Web UI)?',
273
+ default: true
274
+ },
275
+ {
276
+ type: 'input',
277
+ name: 'dashPort',
278
+ message: 'Dashboard Port:',
279
+ default: '3000',
280
+ when: (a) => a.enableDash
281
+ },
282
+ {
283
+ type: 'password',
284
+ name: 'dashPassword',
285
+ message: 'Set Dashboard Password:',
286
+ default: secrets.DASH_PASSWORD || 'tars123',
287
+ when: (a) => a.enableDash
288
+ },
289
+ {
290
+ type: 'confirm',
291
+ name: 'enableTunnel',
292
+ message: 'Expose Dashboard via Cloudflare Tunnel?',
293
+ default: false,
294
+ when: (a) => a.enableDash
295
+ },
296
+ {
297
+ type: 'password',
298
+ name: 'cfToken',
299
+ message: 'Enter Cloudflare Tunnel Token:',
300
+ when: (a) => a.enableTunnel,
301
+ validate: (i) => i.length > 20 || 'Please enter a valid Cloudflare token'
302
+ }
303
+ ]);
304
+ if (dashConfig.enableDash) {
305
+ secretsManager.set('DASH_ENABLED', 'true');
306
+ secretsManager.set('DASH_PORT', dashConfig.dashPort);
307
+ secretsManager.set('DASH_PASSWORD', dashConfig.dashPassword);
308
+ if (dashConfig.enableTunnel) {
309
+ secretsManager.set('CLOUDFLARE_TUNNEL_TOKEN', dashConfig.cfToken);
310
+ }
311
+ console.log(chalk.green(' ✓ Dashboard configuration saved.'));
312
+ }
313
+ // ── Step 6: Installing ──────────────────────────────
314
+ console.log(chalk.bold('\nStep 6/7: Installing'));
196
315
  console.log(chalk.dim('─────────────────────'));
197
316
  // 1. Audit and Heal
198
317
  const auditor = new BrainAuditor(tarsHome);
@@ -202,10 +321,24 @@ export async function setup() {
202
321
  const geminiDir = path.join(tarsHome, '.gemini');
203
322
  await fs.mkdir(path.join(tarsHome, 'data', 'uploads'), { recursive: true });
204
323
  await fs.mkdir(path.join(tarsHome, 'logs'), { recursive: true });
324
+ await fs.mkdir(path.join(tarsHome, 'apps'), { recursive: true });
205
325
  await fs.mkdir(path.join(geminiDir, 'extensions'), { recursive: true });
206
326
  await fs.mkdir(path.join(geminiDir, 'tmp'), { recursive: true });
207
327
  await fs.mkdir(path.join(geminiDir, 'history'), { recursive: true });
208
328
  installSpinner.succeed('Directories created (~/.tars/.gemini/)');
329
+ // ── Legacy Cleanup ──────────────────────────────
330
+ const cleanupSpinner = ora('Checking for legacy components...').start();
331
+ const oldDash = path.join(tarsHome, 'dashboard');
332
+ if (fsSync.existsSync(oldDash)) {
333
+ await fs.rm(oldDash, { recursive: true, force: true });
334
+ cleanupSpinner.text = 'Cleaned up legacy dashboard directory.';
335
+ }
336
+ const oldStandaloneDash = path.resolve(tarsHome, '..', 'apps', 'tars-dash');
337
+ if (fsSync.existsSync(oldStandaloneDash)) {
338
+ await fs.rm(oldStandaloneDash, { recursive: true, force: true });
339
+ cleanupSpinner.text = 'Cleaned up legacy standalone dashboard.';
340
+ }
341
+ cleanupSpinner.succeed('Cleanup complete.');
209
342
  // ── Write Tars configuration ─────────────────────
210
343
  const saveSpinner = ora('Saving configuration...').start();
211
344
  const finalModel = config.geminiModel === 'custom' ? config.customModel : config.geminiModel;
@@ -244,6 +377,26 @@ export async function setup() {
244
377
  }
245
378
  }
246
379
  }
380
+ // Hydrate Dashboard if enabled
381
+ if (dashConfig.enableDash) {
382
+ const dashSrc = path.resolve(path.dirname(new URL(import.meta.url).pathname), '../../../stock_apps/dashboard');
383
+ const dashDest = path.join(tarsHome, 'apps', 'dashboard');
384
+ if (fsSync.existsSync(dashSrc)) {
385
+ const dashSpinner = ora('Installing Tars Dashboard...').start();
386
+ try {
387
+ if (fsSync.existsSync(dashDest)) {
388
+ await fs.rm(dashDest, { recursive: true, force: true });
389
+ }
390
+ await fs.cp(dashSrc, dashDest, { recursive: true });
391
+ dashSpinner.text = 'Hydrating Dashboard dependencies...';
392
+ execSync('npm install --production', { cwd: dashDest, stdio: 'pipe' });
393
+ dashSpinner.succeed('Dashboard ready.');
394
+ }
395
+ catch (err) {
396
+ dashSpinner.warn(`Dashboard installation failed: ${err.message}`);
397
+ }
398
+ }
399
+ }
247
400
  // ── Done ──────────────────────────────────────────────
248
401
  console.log(chalk.green.bold('\n✅ Tars is ready!'));
249
402
  console.log(`\n Start Tars: ${chalk.cyan('tars start')}`);
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,9 @@ export function stop() {
14
14
  }
15
15
  // Use delete instead of stop to completely remove from PM2 list
16
16
  pm2.delete('tars-supervisor', (err) => {
17
+ // Also clean up auxiliary processes
18
+ pm2.delete('tars-dashboard', () => { });
19
+ pm2.delete('tars-tunnel', () => { });
17
20
  pm2.disconnect();
18
21
  if (err) {
19
22
  console.log(chalk.yellow('⚠️ Tars was not managed by PM2.'));
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/cli/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,UAAU,IAAI;IAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAE1D,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,GAAG,EAAE,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC5D,sCAAsC;gBACtC,SAAS,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;gBACV,OAAO;YACX,CAAC;YAED,gEAAgE;YAChE,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE;gBAClC,GAAG,CAAC,UAAU,EAAE,CAAC;gBACjB,IAAI,GAAG,EAAE,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBACvD,CAAC;gBAED,SAAS,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,SAAS;IACd,IAAI,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC9D,2EAA2E;QAC3E,wCAAwC;QACxC,QAAQ,CAAC,0CAA0C,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,2CAA2C;IAC/C,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/cli/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,UAAU,IAAI;IAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAE1D,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,GAAG,EAAE,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC5D,sCAAsC;gBACtC,SAAS,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;gBACV,OAAO;YACX,CAAC;YAED,gEAAgE;YAChE,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE;gBAClC,oCAAoC;gBACpC,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACvC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAEpC,GAAG,CAAC,UAAU,EAAE,CAAC;gBACjB,IAAI,GAAG,EAAE,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBACvD,CAAC;gBAED,SAAS,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,SAAS;IACd,IAAI,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC9D,2EAA2E;QAC3E,wCAAwC;QACxC,QAAQ,CAAC,0CAA0C,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,2CAA2C;IAC/C,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Config } from '../config/config.js';
2
+ export declare class DashboardService {
3
+ private readonly config;
4
+ private readonly dashDir;
5
+ private readonly dashName;
6
+ private readonly tunnelName;
7
+ constructor(config: Config);
8
+ start(): Promise<void>;
9
+ private startDash;
10
+ private startTunnel;
11
+ stop(): void;
12
+ }
@@ -0,0 +1,109 @@
1
+ import pm2 from 'pm2';
2
+ import path from 'path';
3
+ import fs from 'fs';
4
+ import logger from '../utils/logger.js';
5
+ import { fileURLToPath } from 'url';
6
+ import { execSync } from 'child_process';
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = path.dirname(__filename);
9
+ export class DashboardService {
10
+ config;
11
+ dashDir;
12
+ dashName = 'tars-dashboard';
13
+ tunnelName = 'tars-tunnel';
14
+ constructor(config) {
15
+ this.config = config;
16
+ // Dashboard is now located in ~/.tars/apps/dashboard
17
+ this.dashDir = path.join(this.config.homeDir, 'apps', 'dashboard');
18
+ }
19
+ async start() {
20
+ if (!fs.existsSync(this.dashDir)) {
21
+ logger.warn('⚠️ Tars Dashboard directory not found. Skipping dashboard start.');
22
+ return;
23
+ }
24
+ const dashEnabled = process.env.DASH_ENABLED === 'true';
25
+ if (!dashEnabled)
26
+ return;
27
+ return new Promise((resolve) => {
28
+ pm2.connect((err) => {
29
+ if (err) {
30
+ logger.error(`❌ PM2 connection failed for Dashboard: ${err.message}`);
31
+ resolve();
32
+ return;
33
+ }
34
+ this.startDash()
35
+ .then(() => this.startTunnel())
36
+ .finally(() => {
37
+ pm2.disconnect();
38
+ resolve();
39
+ });
40
+ });
41
+ });
42
+ }
43
+ async startDash() {
44
+ return new Promise((resolve) => {
45
+ logger.info('🚀 Starting Tars Dashboard (PM2)...');
46
+ const port = process.env.DASH_PORT || '3000';
47
+ pm2.start({
48
+ script: 'server.js',
49
+ name: this.dashName,
50
+ cwd: this.dashDir,
51
+ env: {
52
+ ...process.env,
53
+ PORT: port,
54
+ NODE_ENV: 'production'
55
+ }
56
+ }, (err) => {
57
+ if (err) {
58
+ logger.error(`❌ Dashboard failed to start: ${err.message}`);
59
+ }
60
+ else {
61
+ logger.info(`✨ Dashboard running on port ${port}`);
62
+ }
63
+ resolve();
64
+ });
65
+ });
66
+ }
67
+ async startTunnel() {
68
+ const cloudflareToken = process.env.CLOUDFLARE_TUNNEL_TOKEN;
69
+ if (!cloudflareToken)
70
+ return;
71
+ // Check if cloudflared is installed
72
+ try {
73
+ execSync('which cloudflared', { stdio: 'ignore' });
74
+ }
75
+ catch (e) {
76
+ logger.warn('⚠️ cloudflared not found in PATH. Skipping tunnel.');
77
+ return;
78
+ }
79
+ return new Promise((resolve) => {
80
+ logger.info('☁️ Starting Cloudflare Tunnel (PM2)...');
81
+ pm2.start({
82
+ script: 'cloudflared',
83
+ args: ['tunnel', '--no-autoupdate', 'run', '--token', cloudflareToken],
84
+ name: this.tunnelName,
85
+ interpreter: 'none'
86
+ }, (err) => {
87
+ if (err) {
88
+ logger.error(`❌ Cloudflare Tunnel failed: ${err.message}`);
89
+ }
90
+ else {
91
+ logger.info('✅ Cloudflare Tunnel active.');
92
+ }
93
+ resolve();
94
+ });
95
+ });
96
+ }
97
+ stop() {
98
+ pm2.connect((err) => {
99
+ if (err)
100
+ return;
101
+ pm2.delete(this.dashName, () => {
102
+ pm2.delete(this.tunnelName, () => {
103
+ pm2.disconnect();
104
+ });
105
+ });
106
+ });
107
+ }
108
+ }
109
+ //# sourceMappingURL=dashboard-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-service.js","sourceRoot":"","sources":["../../src/supervisor/dashboard-service.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,7 @@ export declare class GeminiEngine extends EventEmitter {
29
29
  private coreConfig;
30
30
  private client;
31
31
  private initialized;
32
+ private initializedWithFallback;
32
33
  private currentSessionId;
33
34
  private channelManager?;
34
35
  constructor(tarsConfig: TarsConfig);