@saccolabs/tars 1.0.53 → 1.3.2

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 (70) hide show
  1. package/README.md +10 -7
  2. package/dist/channels/channel-manager.d.ts +35 -0
  3. package/dist/channels/channel-manager.js +100 -0
  4. package/dist/channels/channel-manager.js.map +1 -0
  5. package/dist/channels/discord/discord-channel.d.ts +41 -0
  6. package/dist/channels/discord/discord-channel.js +200 -0
  7. package/dist/channels/discord/discord-channel.js.map +1 -0
  8. package/dist/channels/discord/message-formatter.js.map +1 -0
  9. package/dist/channels/types.d.ts +36 -0
  10. package/dist/channels/types.js +2 -0
  11. package/dist/channels/types.js.map +1 -0
  12. package/dist/channels/whatsapp/whatsapp-channel.d.ts +39 -0
  13. package/dist/channels/whatsapp/whatsapp-channel.js +198 -0
  14. package/dist/channels/whatsapp/whatsapp-channel.js.map +1 -0
  15. package/dist/cli/commands/discord.js +20 -5
  16. package/dist/cli/commands/discord.js.map +1 -1
  17. package/dist/cli/commands/export.js +5 -4
  18. package/dist/cli/commands/export.js.map +1 -1
  19. package/dist/cli/commands/import.js +5 -4
  20. package/dist/cli/commands/import.js.map +1 -1
  21. package/dist/cli/commands/quota.d.ts +1 -0
  22. package/dist/cli/commands/quota.js +62 -0
  23. package/dist/cli/commands/quota.js.map +1 -0
  24. package/dist/cli/commands/setup.js +120 -137
  25. package/dist/cli/commands/setup.js.map +1 -1
  26. package/dist/cli/commands/start.d.ts +4 -1
  27. package/dist/cli/commands/start.js +49 -38
  28. package/dist/cli/commands/start.js.map +1 -1
  29. package/dist/cli/commands/uninstall.js +9 -10
  30. package/dist/cli/commands/uninstall.js.map +1 -1
  31. package/dist/cli/index.js +30 -8
  32. package/dist/cli/index.js.map +1 -1
  33. package/dist/config/config.d.ts +14 -2
  34. package/dist/config/config.js +38 -18
  35. package/dist/config/config.js.map +1 -1
  36. package/dist/scripts/debug-cli.js +1 -1
  37. package/dist/scripts/debug-cli.js.map +1 -1
  38. package/dist/supervisor/cron-service.d.ts +3 -3
  39. package/dist/supervisor/cron-service.js +4 -4
  40. package/dist/supervisor/cron-service.js.map +1 -1
  41. package/dist/supervisor/gemini-engine.d.ts +4 -4
  42. package/dist/supervisor/gemini-engine.js +15 -10
  43. package/dist/supervisor/gemini-engine.js.map +1 -1
  44. package/dist/supervisor/heartbeat-service.js +1 -1
  45. package/dist/supervisor/heartbeat-service.js.map +1 -1
  46. package/dist/supervisor/main.js +63 -61
  47. package/dist/supervisor/main.js.map +1 -1
  48. package/dist/tools/get-quota.d.ts +11 -0
  49. package/dist/tools/get-quota.js +84 -0
  50. package/dist/tools/get-quota.js.map +1 -0
  51. package/dist/tools/send-discord-message.d.ts +9 -6
  52. package/dist/tools/send-discord-message.js +14 -21
  53. package/dist/tools/send-discord-message.js.map +1 -1
  54. package/dist/tools/send-notification.d.ts +15 -0
  55. package/dist/tools/send-notification.js +51 -0
  56. package/dist/tools/send-notification.js.map +1 -0
  57. package/dist/types/index.d.ts +1 -0
  58. package/dist/utils/brain-audit.js +2 -2
  59. package/dist/utils/brain-audit.js.map +1 -1
  60. package/dist/utils/paths.d.ts +9 -0
  61. package/dist/utils/paths.js +18 -0
  62. package/dist/utils/paths.js.map +1 -0
  63. package/package.json +11 -7
  64. package/src/prompts/system.md +6 -2
  65. package/dist/discord/discord-bot.d.ts +0 -37
  66. package/dist/discord/discord-bot.js +0 -205
  67. package/dist/discord/discord-bot.js.map +0 -1
  68. package/dist/discord/message-formatter.js.map +0 -1
  69. /package/dist/{discord → channels/discord}/message-formatter.d.ts +0 -0
  70. /package/dist/{discord → channels/discord}/message-formatter.js +0 -0
@@ -4,7 +4,7 @@ import { SessionManager } from './session-manager.js';
4
4
  import { Supervisor } from './supervisor.js';
5
5
  import { HeartbeatService } from './heartbeat-service.js';
6
6
  import { CronService } from './cron-service.js';
7
- import { DiscordBot } from '../discord/discord-bot.js';
7
+ import { ChannelManager } from '../channels/channel-manager.js';
8
8
  import logger from '../utils/logger.js';
9
9
  import fs from 'fs';
10
10
  import path from 'path';
@@ -42,13 +42,15 @@ function installSystemPrompt(config) {
42
42
  // Ensure target directory exists
43
43
  const targetDir = path.dirname(config.systemPromptPath);
44
44
  fs.mkdirSync(targetDir, { recursive: true });
45
+ // Read the template and process placeholders
46
+ let promptContent = fs.readFileSync(srcPrompt, 'utf-8');
47
+ promptContent = promptContent.replace(/{{ASSISTANT_NAME}}/g, config.assistantName);
48
+ promptContent = promptContent.replace(/{{INSTANCE_NAME}}/g, config.instanceName);
49
+ promptContent = promptContent.replace(/{{INSTANCE_ROLE}}/g, config.instanceRole);
45
50
  // Always overwrite to ensure latest prompt is deployed
46
- fs.copyFileSync(srcPrompt, config.systemPromptPath);
51
+ fs.writeFileSync(config.systemPromptPath, promptContent);
47
52
  logger.info(`📝 System prompt installed: ${config.systemPromptPath}`);
48
53
  }
49
- /**
50
- * Install built-in skills into the Tars runtime directory.
51
- */
52
54
  /**
53
55
  * Install and sync built-in skills into the Tars runtime directory.
54
56
  * Safely updates built-in skills while preserving user-created ones.
@@ -95,7 +97,6 @@ function installSkills(config) {
95
97
  if (!fs.statSync(srcSkillPath).isDirectory())
96
98
  continue;
97
99
  // Remove existing destination (to ensure clean update - e.g. deleting old files)
98
- // This assumes built-in skills are managed entirely by the repo
99
100
  if (fs.existsSync(destSkillPath)) {
100
101
  fs.rmSync(destSkillPath, { recursive: true, force: true });
101
102
  }
@@ -157,7 +158,6 @@ function installAgents(config) {
157
158
  }
158
159
  /**
159
160
  * Automatically install/link extensions and enable them.
160
- * Verifies symlinks are valid and re-links if broken.
161
161
  */
162
162
  function installExtensions(config) {
163
163
  const repoExtensionsDir = path.join(__dirname, '..', '..', 'extensions');
@@ -203,20 +203,18 @@ function installExtensions(config) {
203
203
  catch (e) { }
204
204
  if (needsLink) {
205
205
  try {
206
- // Remove existing file/link if present to prevent EEXIST or to replace link with copy
207
206
  if (fs.existsSync(finalDestPath) ||
208
207
  (fs.existsSync(finalDestPath) && fs.lstatSync(finalDestPath).isSymbolicLink())) {
209
208
  fs.rmSync(finalDestPath, { recursive: true, force: true });
210
209
  }
211
- // Copy instead of symlink to ensure it stays within the workspace
212
- fs.cpSync(srcPath, finalDestPath, { recursive: true });
210
+ fs.symlinkSync(srcPath, finalDestPath);
213
211
  logger.info(`🔌 Integrated extension: ${finalExtName}`);
214
212
  }
215
213
  catch (error) {
216
214
  logger.error(`❌ Failed to integrate extension ${finalExtName}: ${error}`);
217
215
  }
218
216
  }
219
- // Hydration check (Heal missing dependencies on startup)
217
+ // Hydration check
220
218
  const nmPath = path.join(finalDestPath, 'node_modules');
221
219
  if (!fs.existsSync(nmPath)) {
222
220
  logger.info(`💧 Hydrating extension: ${finalExtName}...`);
@@ -244,7 +242,7 @@ function installExtensions(config) {
244
242
  }
245
243
  }
246
244
  }
247
- // 3. Scan installation directory for ALL extensions (including manually added ones)
245
+ // Update enablement
248
246
  const allInstalledExtensions = fs.readdirSync(targetExtensionsDir);
249
247
  for (const extName of allInstalledExtensions) {
250
248
  const extPath = path.join(targetExtensionsDir, extName);
@@ -252,9 +250,7 @@ function installExtensions(config) {
252
250
  continue;
253
251
  if (!fs.statSync(extPath).isDirectory())
254
252
  continue;
255
- // Resolve real path (critical for symlinks to satisfy Gemini workspace safety)
256
253
  const realPath = fs.realpathSync(extPath);
257
- // Ensure enabled with permissive overrides
258
254
  if (!enablement[extName]) {
259
255
  enablement[extName] = { overrides: [] };
260
256
  }
@@ -262,7 +258,6 @@ function installExtensions(config) {
262
258
  overrides.add(path.join(config.homeDir, '*'));
263
259
  overrides.add(path.join(realPath, '*'));
264
260
  enablement[extName].overrides = Array.from(overrides);
265
- logger.debug(`🔧 Configured safety overrides for ${extName}: ${enablement[extName].overrides.join(', ')}`);
266
261
  }
267
262
  fs.writeFileSync(enablementFile, JSON.stringify(enablement, null, 2));
268
263
  }
@@ -279,12 +274,9 @@ function installDefaultSettings(config) {
279
274
  fs.copyFileSync(settingsTemplate, targetSettings);
280
275
  logger.info(`⚙️ Default settings installed: ${targetSettings}`);
281
276
  }
282
- else {
283
- logger.warn('⚠️ Could not locate settings.json-template');
284
- }
285
277
  }
286
278
  /**
287
- * Ensure existing settings.json has required settings (like experimental and agents)
279
+ * Ensure existing settings.json has required settings
288
280
  */
289
281
  function patchSettings(config) {
290
282
  const targetSettings = path.join(config.homeDir, '.gemini', 'settings.json');
@@ -297,39 +289,12 @@ function patchSettings(config) {
297
289
  let modified = false;
298
290
  if (fs.existsSync(settingsTemplate)) {
299
291
  const template = JSON.parse(fs.readFileSync(settingsTemplate, 'utf-8'));
300
- // Shallow merge for each top-level section
301
292
  const sections = ['experimental', 'agents', 'model', 'general'];
302
293
  for (const section of sections) {
303
294
  if (template[section] && !settings[section]) {
304
295
  settings[section] = template[section];
305
296
  modified = true;
306
297
  }
307
- else if (template[section]) {
308
- for (const [key, value] of Object.entries(template[section])) {
309
- if (settings[section][key] === undefined) {
310
- settings[section][key] = value;
311
- modified = true;
312
- }
313
- }
314
- }
315
- }
316
- // Force-update compressionThreshold if it was set too aggressively
317
- if (settings.model?.compressionThreshold !== undefined &&
318
- settings.model.compressionThreshold < 0.5) {
319
- settings.model.compressionThreshold = 0.5;
320
- modified = true;
321
- logger.info('⚙️ Updated compressionThreshold to 0.5 (was too aggressive)');
322
- }
323
- }
324
- else {
325
- // Fallback
326
- if (!settings.experimental) {
327
- settings.experimental = {};
328
- modified = true;
329
- }
330
- if (settings.experimental.enableAgents !== true) {
331
- settings.experimental.enableAgents = true;
332
- modified = true;
333
298
  }
334
299
  }
335
300
  if (modified) {
@@ -351,33 +316,75 @@ async function main() {
351
316
  const config = Config.getInstance();
352
317
  const auditor = new BrainAuditor(config.homeDir);
353
318
  await auditor.audit({ silent: true });
354
- // 2. Install system prompt, skills, extensions and settings
319
+ // 2. Install components
355
320
  installSystemPrompt(config);
356
321
  installSkills(config);
357
322
  installAgents(config);
358
323
  installExtensions(config);
359
324
  installDefaultSettings(config);
360
325
  patchSettings(config);
361
- // 3. Initialize Core Services (without initializing engine yet)
326
+ // 3. Initialize Core Services
362
327
  const gemini = new GeminiEngine(config);
363
328
  const sessionManager = new SessionManager(config.sessionFilePath);
364
329
  const supervisor = new Supervisor(gemini, sessionManager);
365
- // 4. Initialize Interface (Discord)
366
- const discordBot = new DiscordBot(supervisor, config);
367
- // 5. Inject Interface into Engine and Initialize Core
368
- gemini.setDiscordBot(discordBot);
330
+ // 4. Initialize Multi-Channel Interface
331
+ const channelManager = new ChannelManager();
332
+ // 5. Inject Interface into Engine
333
+ gemini.setChannelManager(channelManager);
369
334
  await gemini.initialize();
370
- // 5. Initialize Background Services
335
+ // 6. Connect Routing
336
+ channelManager.onMessage(async (message) => {
337
+ let responseBuffer = '';
338
+ let replyCount = 0;
339
+ const flush = async () => {
340
+ const text = responseBuffer.trim();
341
+ if (!text)
342
+ return;
343
+ let finalContent = text;
344
+ // Prepend the binding alert to the first message if we just auto-bound
345
+ if (replyCount === 0 && message.metadata?.wasAutoBound) {
346
+ finalContent = `🔒 **System Alert:** I have permanently bound my background notification channel to your Discord account.\n\n${finalContent}`;
347
+ }
348
+ await message.reply(finalContent);
349
+ responseBuffer = '';
350
+ replyCount++;
351
+ };
352
+ try {
353
+ await supervisor.run(message.content, async (event) => {
354
+ if (event.type === 'text' && event.content && event.role !== 'user') {
355
+ responseBuffer += event.content;
356
+ }
357
+ else if (event.type === 'tool_call') {
358
+ // If the model had something to say before calling a tool, send it now
359
+ // so the user knows what's happening.
360
+ await flush();
361
+ }
362
+ else if (event.type === 'error') {
363
+ await flush();
364
+ await message.reply(`❌ **Error:** ${event.error}`);
365
+ }
366
+ else if (event.type === 'done') {
367
+ await flush();
368
+ }
369
+ }, undefined, message.attachments);
370
+ }
371
+ catch (error) {
372
+ logger.error(`Routing error: ${error.message}`);
373
+ await message.reply(`❌ **Supervisor Error:** ${error.message}`);
374
+ }
375
+ });
376
+ // 7. Initialize Background Services
371
377
  const heartbeat = new HeartbeatService(supervisor, config, sessionManager);
372
- const cron = new CronService(supervisor, config, discordBot);
373
- // Start Services
374
- await discordBot.start();
378
+ const cron = new CronService(supervisor, config, channelManager);
379
+ // Start everything
380
+ await channelManager.start();
375
381
  await heartbeat.start();
376
382
  await cron.start();
377
383
  logger.info('✨ Tars successfully initialized and running.');
378
384
  // Graceful shutdown
379
385
  process.on('SIGINT', async () => {
380
386
  logger.info('🛑 Shutting down...');
387
+ await channelManager.stop();
381
388
  heartbeat.stop();
382
389
  cron.stop();
383
390
  process.exit(0);
@@ -388,13 +395,8 @@ async function main() {
388
395
  process.exit(1);
389
396
  }
390
397
  }
391
- // 6. Run Main
392
- // Strict Safety Check: The supervisor must be explicitly activated via environment variable.
393
- // This prevents accidental execution via "node dist/supervisor/main.js" which can spawn zombie processes.
394
398
  if (process.env.TARS_SUPERVISOR_MODE !== 'true') {
395
399
  logger.error('❌ TARS_SUPERVISOR_MODE=true is required to start the supervisor.');
396
- logger.error(' This safety check prevents accidental multiple instances.');
397
- logger.error('👉 Use "tars start" or "npm run dev" instead.');
398
400
  process.exit(1);
399
401
  }
400
402
  main();
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/supervisor/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/supervisor/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { BaseDeclarativeTool, ToolInvocation, ToolResult, Config as CoreConfig } from '@google/gemini-cli-core';
2
+ import type { MessageBus } from '@google/gemini-cli-core/dist/src/confirmation-bus/message-bus.js';
3
+ interface GetQuotaParams {
4
+ modelId?: string;
5
+ }
6
+ export declare class GetQuotaTool extends BaseDeclarativeTool<GetQuotaParams, ToolResult> {
7
+ private coreConfig;
8
+ constructor(coreConfig: CoreConfig);
9
+ protected createInvocation(params: GetQuotaParams, _messageBus: MessageBus): ToolInvocation<GetQuotaParams, ToolResult>;
10
+ }
11
+ export {};
@@ -0,0 +1,84 @@
1
+ import { BaseDeclarativeTool, BaseToolInvocation, Kind } from '@google/gemini-cli-core';
2
+ class GetQuotaInvocation extends BaseToolInvocation {
3
+ coreConfig;
4
+ constructor(params, coreConfig) {
5
+ super(params, null, 'get_model_quota', 'Get Model Quota');
6
+ this.coreConfig = coreConfig;
7
+ }
8
+ getDescription() {
9
+ return `Retrieving current rate limit and quota information for ${this.params.modelId || 'all active models'}.`;
10
+ }
11
+ async execute(signal) {
12
+ try {
13
+ const quota = await this.coreConfig.refreshUserQuota();
14
+ if (!quota || !quota.buckets) {
15
+ return {
16
+ llmContent: [
17
+ {
18
+ text: '⚠️ No quota information available. This may be because the current authentication method does not support quota tracking (e.g. legacy auth) or the Code Assist server is not reachable.'
19
+ }
20
+ ],
21
+ returnDisplay: 'No quota info available.'
22
+ };
23
+ }
24
+ const activeModel = this.coreConfig.getActiveModel();
25
+ const buckets = quota.buckets;
26
+ let resultText = '### Current Model Quotas\n\n';
27
+ // Filter buckets if a specific modelId was requested, otherwise show all relevant ones
28
+ const relevantBuckets = this.params.modelId
29
+ ? buckets.filter((b) => b.modelId?.includes(this.params.modelId))
30
+ : buckets.filter((b) => b.modelId && (b.modelId === activeModel || b.modelId.includes('gemini')));
31
+ if (relevantBuckets.length === 0) {
32
+ resultText += `No buckets found matching "${this.params.modelId || 'Gemini models'}".\n`;
33
+ }
34
+ else {
35
+ for (const bucket of relevantBuckets) {
36
+ const is_active = bucket.modelId === activeModel ? ' (Active)' : '';
37
+ const remaining = bucket.remainingFraction != null
38
+ ? `${(bucket.remainingFraction * 100).toFixed(1)}%`
39
+ : 'Unknown';
40
+ resultText += `- **${bucket.modelId}**${is_active}\n`;
41
+ resultText += ` - **Remaining**: ${remaining}\n`;
42
+ if (bucket.resetTime) {
43
+ resultText += ` - **Resets At**: ${bucket.resetTime}\n`;
44
+ }
45
+ if (bucket.tokenType) {
46
+ resultText += ` - **Type**: ${bucket.tokenType}\n`;
47
+ }
48
+ resultText += '\n';
49
+ }
50
+ }
51
+ return {
52
+ llmContent: [{ text: resultText }],
53
+ returnDisplay: `Quota retrieved: ${relevantBuckets.length} buckets found.`
54
+ };
55
+ }
56
+ catch (error) {
57
+ return {
58
+ llmContent: [{ text: `❌ Failed to retrieve quota: ${error.message}` }],
59
+ returnDisplay: `Error: ${error.message}`
60
+ };
61
+ }
62
+ }
63
+ }
64
+ export class GetQuotaTool extends BaseDeclarativeTool {
65
+ coreConfig;
66
+ constructor(coreConfig) {
67
+ super('get_model_quota', 'Get Model Quota', 'Retrieve the current rate limit, remaining quota, and reset times for the Gemini models being used. Use this to check if you are approaching limits or if capacity issues are expected.', Kind.Read, {
68
+ type: 'object',
69
+ properties: {
70
+ modelId: {
71
+ type: 'string',
72
+ description: 'Optional: Filter for a specific model ID (e.g. "gemini-2.5-flash"). If omitted, returns all relevant Gemini quotas.'
73
+ }
74
+ }
75
+ }, null, true, // isOutputMarkdown
76
+ false // canUpdateOutput
77
+ );
78
+ this.coreConfig = coreConfig;
79
+ }
80
+ createInvocation(params, _messageBus) {
81
+ return new GetQuotaInvocation(params, this.coreConfig);
82
+ }
83
+ }
84
+ //# sourceMappingURL=get-quota.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-quota.js","sourceRoot":"","sources":["../../src/tools/get-quota.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,15 @@
1
1
  import { BaseDeclarativeTool, ToolInvocation, ToolResult } from '@google/gemini-cli-core';
2
2
  import type { MessageBus } from '@google/gemini-cli-core/dist/src/confirmation-bus/message-bus.js';
3
- import { DiscordBot } from '../discord/discord-bot.js';
4
- interface SendDiscordMessageParams {
3
+ import { ChannelManager } from '../channels/channel-manager.js';
4
+ interface NotifyParams {
5
5
  message: string;
6
6
  }
7
- export declare class SendDiscordMessageTool extends BaseDeclarativeTool<SendDiscordMessageParams, ToolResult> {
8
- private discordBot;
9
- constructor(discordBot: DiscordBot);
10
- protected createInvocation(params: SendDiscordMessageParams, _messageBus: MessageBus): ToolInvocation<SendDiscordMessageParams, ToolResult>;
7
+ /**
8
+ * Tool to send proactive messages back to the user on Discord (Deprecated: use send_notification)
9
+ */
10
+ export declare class SendDiscordMessageTool extends BaseDeclarativeTool<NotifyParams, ToolResult> {
11
+ private readonly channelManager;
12
+ constructor(channelManager: ChannelManager);
13
+ protected createInvocation(params: NotifyParams, _messageBus: MessageBus): ToolInvocation<NotifyParams, ToolResult>;
11
14
  }
12
15
  export {};
@@ -1,42 +1,35 @@
1
1
  import { BaseDeclarativeTool, BaseToolInvocation, Kind } from '@google/gemini-cli-core';
2
2
  class SendDiscordMessageInvocation extends BaseToolInvocation {
3
- discordBot;
4
- constructor(params, discordBot) {
3
+ channelManager;
4
+ constructor(params, channelManager) {
5
5
  super(params, null, 'send_discord_message', 'Send Discord Message');
6
- this.discordBot = discordBot;
6
+ this.channelManager = channelManager;
7
7
  }
8
8
  getDescription() {
9
- return `Sending a proactive Discord message to the user: "${this.params.message}"`;
9
+ return `Sending Discord notification (Deprecated): ${this.params.message.substring(0, 50)}${this.params.message.length > 50 ? '...' : ''}`;
10
10
  }
11
11
  async execute(signal) {
12
12
  try {
13
- if (!this.discordBot.config?.discordOwnerId) {
14
- return {
15
- llmContent: [
16
- {
17
- text: '❌ Soft Error: Could not reach Discord. Owner ID not yet captured. The user must send a direct message to the bot first before proactive notifications can be sent.'
18
- }
19
- ],
20
- returnDisplay: 'Failed: Owner ID not yet captured.'
21
- };
22
- }
23
- await this.discordBot.notify(this.params.message);
13
+ await this.channelManager.notify(this.params.message);
24
14
  return {
25
15
  llmContent: [{ text: '✅ Message successfully queued for delivery to the user.' }],
26
- returnDisplay: 'Success: Message sent.'
16
+ returnDisplay: 'Notification sent successfully.'
27
17
  };
28
18
  }
29
19
  catch (error) {
30
20
  return {
31
- llmContent: [{ text: `❌ Failed to send message: ${error.message}` }],
21
+ llmContent: [{ text: `❌ Failed to send notification: ${error.message}` }],
32
22
  returnDisplay: `Error: ${error.message}`
33
23
  };
34
24
  }
35
25
  }
36
26
  }
27
+ /**
28
+ * Tool to send proactive messages back to the user on Discord (Deprecated: use send_notification)
29
+ */
37
30
  export class SendDiscordMessageTool extends BaseDeclarativeTool {
38
- discordBot;
39
- constructor(discordBot) {
31
+ channelManager;
32
+ constructor(channelManager) {
40
33
  super('send_discord_message', 'Send Discord Message', 'Send a proactive message or notification back to the user on Discord. Use this tool during background tasks to report results, alert the user to issues, or ask questions that you want them to see when they return.', Kind.Communicate, {
41
34
  type: 'object',
42
35
  properties: {
@@ -49,10 +42,10 @@ export class SendDiscordMessageTool extends BaseDeclarativeTool {
49
42
  }, null, true, // isOutputMarkdown
50
43
  false // canUpdateOutput
51
44
  );
52
- this.discordBot = discordBot;
45
+ this.channelManager = channelManager;
53
46
  }
54
47
  createInvocation(params, _messageBus) {
55
- return new SendDiscordMessageInvocation(params, this.discordBot);
48
+ return new SendDiscordMessageInvocation(params, this.channelManager);
56
49
  }
57
50
  }
58
51
  //# sourceMappingURL=send-discord-message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"send-discord-message.js","sourceRoot":"","sources":["../../src/tools/send-discord-message.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAEnB,kBAAkB,EAElB,IAAI,EACP,MAAM,yBAAyB,CAAC;AAQjC,MAAM,4BAA6B,SAAQ,kBAG1C;IAGe;IAFZ,YACI,MAAgC,EACxB,UAAsB;QAE9B,KAAK,CACD,MAAM,EACN,IAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,CACzB,CAAC;QAPM,eAAU,GAAV,UAAU,CAAY;IAQlC,CAAC;IAED,cAAc;QACV,OAAO,qDAAqD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAmB;QAC7B,IAAI,CAAC;YACD,IAAI,CAAE,IAAI,CAAC,UAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;gBACnD,OAAO;oBACH,UAAU,EAAE;wBACR;4BACI,IAAI,EAAE,oKAAoK;yBAC7K;qBACJ;oBACD,aAAa,EAAE,oCAAoC;iBACtD,CAAC;YACN,CAAC;YAED,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO;gBACH,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,yDAAyD,EAAE,CAAC;gBACjF,aAAa,EAAE,wBAAwB;aAC1C,CAAC;QACN,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO;gBACH,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,6BAA6B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpE,aAAa,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE;aAC3C,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAED,MAAM,OAAO,sBAAuB,SAAQ,mBAG3C;IACuB;IAApB,YAAoB,UAAsB;QACtC,KAAK,CACD,sBAAsB,EACtB,sBAAsB,EACtB,uNAAuN,EACvN,IAAI,CAAC,WAAW,EAChB;YACI,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,OAAO,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sDAAsD;iBACtE;aACJ;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACxB,EACD,IAA6B,EAC7B,IAAI,EAAE,mBAAmB;QACzB,KAAK,CAAC,kBAAkB;SAC3B,CAAC;QAnBc,eAAU,GAAV,UAAU,CAAY;IAoB1C,CAAC;IAES,gBAAgB,CACtB,MAAgC,EAChC,WAAuB;QAEvB,OAAO,IAAI,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACrE,CAAC;CACJ"}
1
+ {"version":3,"file":"send-discord-message.js","sourceRoot":"","sources":["../../src/tools/send-discord-message.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAEnB,kBAAkB,EAElB,IAAI,EACP,MAAM,yBAAyB,CAAC;AAQjC,MAAM,4BAA6B,SAAQ,kBAA4C;IAGvE;IAFZ,YACI,MAAoB,EACZ,cAA8B;QAEtC,KAAK,CACD,MAAM,EACN,IAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,CACzB,CAAC;QAPM,mBAAc,GAAd,cAAc,CAAgB;IAQ1C,CAAC;IAED,cAAc;QACV,OAAO,8CAA8C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/I,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAmB;QAC7B,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO;gBACH,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,yDAAyD,EAAE,CAAC;gBACjF,aAAa,EAAE,iCAAiC;aACnD,CAAC;QACN,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO;gBACH,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,kCAAkC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzE,aAAa,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE;aAC3C,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,mBAA6C;IACxD;IAA7B,YAA6B,cAA8B;QACvD,KAAK,CACD,sBAAsB,EACtB,sBAAsB,EACtB,uNAAuN,EACvN,IAAI,CAAC,WAAW,EAChB;YACI,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,OAAO,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sDAAsD;iBACtE;aACJ;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACxB,EACD,IAA6B,EAC7B,IAAI,EAAE,mBAAmB;QACzB,KAAK,CAAC,kBAAkB;SAC3B,CAAC;QAnBuB,mBAAc,GAAd,cAAc,CAAgB;IAoB3D,CAAC;IAES,gBAAgB,CACtB,MAAoB,EACpB,WAAuB;QAEvB,OAAO,IAAI,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACzE,CAAC;CACJ"}
@@ -0,0 +1,15 @@
1
+ import { BaseDeclarativeTool, ToolInvocation, ToolResult } from '@google/gemini-cli-core';
2
+ import type { MessageBus } from '@google/gemini-cli-core/dist/src/confirmation-bus/message-bus.js';
3
+ import { ChannelManager } from '../channels/channel-manager.js';
4
+ interface NotifyParams {
5
+ message: string;
6
+ }
7
+ /**
8
+ * Tool to send proactive notifications to the user via enabled channels
9
+ */
10
+ export declare class SendNotificationTool extends BaseDeclarativeTool<NotifyParams, ToolResult> {
11
+ private readonly channelManager;
12
+ constructor(channelManager: ChannelManager);
13
+ protected createInvocation(params: NotifyParams, _messageBus: MessageBus): ToolInvocation<NotifyParams, ToolResult>;
14
+ }
15
+ export {};
@@ -0,0 +1,51 @@
1
+ import { BaseDeclarativeTool, BaseToolInvocation, Kind } from '@google/gemini-cli-core';
2
+ class SendNotificationInvocation extends BaseToolInvocation {
3
+ channelManager;
4
+ constructor(params, channelManager) {
5
+ super(params, null, 'send_notification', 'Send Notification');
6
+ this.channelManager = channelManager;
7
+ }
8
+ getDescription() {
9
+ return `Sending proactive notification: ${this.params.message.substring(0, 50)}${this.params.message.length > 50 ? '...' : ''}`;
10
+ }
11
+ async execute(signal) {
12
+ try {
13
+ await this.channelManager.notify(this.params.message);
14
+ return {
15
+ llmContent: [{ text: '✅ Message successfully queued for delivery to the user.' }],
16
+ returnDisplay: 'Notification sent successfully.'
17
+ };
18
+ }
19
+ catch (error) {
20
+ return {
21
+ llmContent: [{ text: `❌ Failed to send notification: ${error.message}` }],
22
+ returnDisplay: `Error: ${error.message}`
23
+ };
24
+ }
25
+ }
26
+ }
27
+ /**
28
+ * Tool to send proactive notifications to the user via enabled channels
29
+ */
30
+ export class SendNotificationTool extends BaseDeclarativeTool {
31
+ channelManager;
32
+ constructor(channelManager) {
33
+ super('send_notification', 'Send Notification', 'Send a proactive message or notification back to the user. Use this tool during background tasks to report results, alert the user to issues, or ask questions that you want them to see when they return.', Kind.Communicate, {
34
+ type: 'object',
35
+ properties: {
36
+ message: {
37
+ type: 'string',
38
+ description: 'The text content of the message to send to the user.'
39
+ }
40
+ },
41
+ required: ['message']
42
+ }, null, true, // isOutputMarkdown
43
+ false // canUpdateOutput
44
+ );
45
+ this.channelManager = channelManager;
46
+ }
47
+ createInvocation(params, _messageBus) {
48
+ return new SendNotificationInvocation(params, this.channelManager);
49
+ }
50
+ }
51
+ //# sourceMappingURL=send-notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-notification.js","sourceRoot":"","sources":["../../src/tools/send-notification.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAEnB,kBAAkB,EAElB,IAAI,EACP,MAAM,yBAAyB,CAAC;AAQjC,MAAM,0BAA2B,SAAQ,kBAA4C;IAGrE;IAFZ,YACI,MAAoB,EACZ,cAA8B;QAEtC,KAAK,CAAC,MAAM,EAAE,IAA6B,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;QAF/E,mBAAc,GAAd,cAAc,CAAgB;IAG1C,CAAC;IAED,cAAc;QACV,OAAO,mCAAmC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpI,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAmB;QAC7B,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO;gBACH,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,yDAAyD,EAAE,CAAC;gBACjF,aAAa,EAAE,iCAAiC;aACnD,CAAC;QACN,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO;gBACH,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,kCAAkC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzE,aAAa,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE;aAC3C,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,mBAA6C;IACtD;IAA7B,YAA6B,cAA8B;QACvD,KAAK,CACD,mBAAmB,EACnB,mBAAmB,EACnB,4MAA4M,EAC5M,IAAI,CAAC,WAAW,EAChB;YACI,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,OAAO,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sDAAsD;iBACtE;aACJ;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACxB,EACD,IAA6B,EAC7B,IAAI,EAAE,mBAAmB;QACzB,KAAK,CAAC,kBAAkB;SAC3B,CAAC;QAnBuB,mBAAc,GAAd,cAAc,CAAgB;IAoB3D,CAAC;IAES,gBAAgB,CACtB,MAAoB,EACpB,WAAuB;QAEvB,OAAO,IAAI,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACvE,CAAC;CACJ"}
@@ -34,6 +34,7 @@ export interface GeminiEvent {
34
34
  toolId?: string;
35
35
  imagePath?: string;
36
36
  error?: string;
37
+ role?: 'user' | 'assistant' | 'system';
37
38
  usageStats?: UsageStats;
38
39
  sessionId?: string;
39
40
  status?: string;
@@ -1,8 +1,8 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
- import os from 'os';
4
3
  import logger from './logger.js';
5
4
  import chalk from 'chalk';
5
+ import { getTarsHome } from './paths.js';
6
6
  /**
7
7
  * BrainAuditor - Ensures the stability and structural integrity of the Tars workspace (~/.tars).
8
8
  * Use this during setup, import, or supervisor startup to heal old or broken configurations.
@@ -10,7 +10,7 @@ import chalk from 'chalk';
10
10
  export class BrainAuditor {
11
11
  tarsHome;
12
12
  constructor(tarsHome) {
13
- this.tarsHome = tarsHome || path.join(os.homedir(), '.tars');
13
+ this.tarsHome = tarsHome || getTarsHome();
14
14
  }
15
15
  /**
16
16
  * Run a full audit and repair cycle.