@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
package/README.md CHANGED
@@ -66,7 +66,7 @@ npm install -g @saccolabs/tars
66
66
 
67
67
  ### Initial Setup
68
68
 
69
- Run the setup wizard to authorize Gemini and connect your Discord bot:
69
+ Run the setup wizard to authorize Gemini and connect your communication channels (Discord, WhatsApp, or both):
70
70
 
71
71
  ```bash
72
72
  tars setup
@@ -87,9 +87,11 @@ tars setup
87
87
 
88
88
  ### Interaction
89
89
 
90
- Tars communicates primarily through a private Discord channel. It supports file uploads, long-running task management, and complex multi-step instructions.
90
+ Tars communicates through a multi-channel architecture. You can interact via **Discord**, **WhatsApp**, or both simultaneously. It supports file uploads, long-running task management, and complex multi-step instructions.
91
91
 
92
- > **!tars** "Analyze the logs in /var/log/syslog and summarize any critical errors."
92
+ > **Discord**: `!tars Analyze the logs in /var/log/syslog and summarize any critical errors.`
93
+ >
94
+ > **WhatsApp**: Just send a message directly — no prefix needed.
93
95
 
94
96
  ---
95
97
 
@@ -97,10 +99,11 @@ Tars communicates primarily through a private Discord channel. It supports file
97
99
 
98
100
  Tars utilizes a Supervisor-Orchestrator model:
99
101
 
100
- 1. **Supervisor**: Manages persistent sessions and Discord communication.
101
- 2. **Subagents**: Specialized expert agents invoked dynamically for specific technical domains.
102
- 3. **Heartbeat**: Cron-based engine for autonomous execution and cleanup.
103
- 4. **Extensions**: MCP servers that provide tool-level capabilities to the intelligence core.
102
+ 1. **Supervisor**: Manages persistent sessions and multi-channel communication.
103
+ 2. **Channel Manager**: Orchestrates communication across Discord and WhatsApp with automatic notification routing.
104
+ 3. **Subagents**: Specialized expert agents invoked dynamically for specific technical domains.
105
+ 4. **Heartbeat**: Cron-based engine for autonomous execution and cleanup.
106
+ 5. **Extensions**: MCP servers that provide tool-level capabilities to the intelligence core.
104
107
 
105
108
  ---
106
109
 
@@ -0,0 +1,35 @@
1
+ import { CommunicationChannel, ChannelMessage } from './types.js';
2
+ /**
3
+ * Orchestrates all communication channels (Discord, WhatsApp, etc.)
4
+ */
5
+ export declare class ChannelManager {
6
+ private readonly channels;
7
+ private readonly config;
8
+ private messageHandler?;
9
+ private lastActiveChannelId?;
10
+ constructor();
11
+ /**
12
+ * Initialize enabled channels based on configuration
13
+ */
14
+ private initializeChannels;
15
+ /**
16
+ * Start all enabled channels
17
+ */
18
+ start(): Promise<void>;
19
+ /**
20
+ * Stop all channels
21
+ */
22
+ stop(): Promise<void>;
23
+ /**
24
+ * Register a global handler for messages from any channel
25
+ */
26
+ onMessage(handler: (message: ChannelMessage) => Promise<void>): void;
27
+ /**
28
+ * Send a proactive notification
29
+ */
30
+ notify(content: string, attachments?: string[]): Promise<void>;
31
+ /**
32
+ * Get a specific channel by ID
33
+ */
34
+ getChannel(id: string): CommunicationChannel | undefined;
35
+ }
@@ -0,0 +1,100 @@
1
+ import { DiscordChannel } from './discord/discord-channel.js';
2
+ import { WhatsAppChannel } from './whatsapp/whatsapp-channel.js';
3
+ import logger from '../utils/logger.js';
4
+ import { Config } from '../config/config.js';
5
+ /**
6
+ * Orchestrates all communication channels (Discord, WhatsApp, etc.)
7
+ */
8
+ export class ChannelManager {
9
+ channels = new Map();
10
+ config;
11
+ messageHandler;
12
+ lastActiveChannelId;
13
+ constructor() {
14
+ this.config = Config.getInstance();
15
+ this.initializeChannels();
16
+ }
17
+ /**
18
+ * Initialize enabled channels based on configuration
19
+ */
20
+ initializeChannels() {
21
+ // 1. Initialize Discord
22
+ const discord = new DiscordChannel();
23
+ if (discord.isEnabled) {
24
+ this.channels.set(discord.id, discord);
25
+ }
26
+ // 2. Initialize WhatsApp
27
+ const whatsapp = new WhatsAppChannel();
28
+ if (whatsapp.isEnabled) {
29
+ this.channels.set(whatsapp.id, whatsapp);
30
+ }
31
+ }
32
+ /**
33
+ * Start all enabled channels
34
+ */
35
+ async start() {
36
+ if (this.channels.size === 0) {
37
+ logger.warn('⚠️ No communication channels enabled. Tars will be unreachable.');
38
+ return;
39
+ }
40
+ logger.info(`🚀 Starting ${this.channels.size} communication channel(s)...`);
41
+ for (const channel of this.channels.values()) {
42
+ try {
43
+ channel.onMessage(async (message) => {
44
+ this.lastActiveChannelId = channel.id;
45
+ if (this.messageHandler) {
46
+ await this.messageHandler(message);
47
+ }
48
+ });
49
+ await channel.start();
50
+ }
51
+ catch (error) {
52
+ logger.error(`Failed to start channel ${channel.id}: ${error.message}`);
53
+ }
54
+ }
55
+ }
56
+ /**
57
+ * Stop all channels
58
+ */
59
+ async stop() {
60
+ logger.info('Stopping all communication channels...');
61
+ for (const channel of this.channels.values()) {
62
+ await channel
63
+ .stop()
64
+ .catch((e) => logger.error(`Error stopping ${channel.id}: ${e.message}`));
65
+ }
66
+ }
67
+ /**
68
+ * Register a global handler for messages from any channel
69
+ */
70
+ onMessage(handler) {
71
+ this.messageHandler = handler;
72
+ }
73
+ /**
74
+ * Send a proactive notification
75
+ */
76
+ async notify(content, attachments) {
77
+ const primaryChannelId = this.lastActiveChannelId || this.config.primaryChannel || 'discord';
78
+ const channel = this.channels.get(primaryChannelId);
79
+ if (channel) {
80
+ await channel.notify(content, attachments);
81
+ }
82
+ else {
83
+ // Fallback to the first available channel if primary is not found
84
+ const fallback = Array.from(this.channels.values())[0];
85
+ if (fallback) {
86
+ await fallback.notify(content, attachments);
87
+ }
88
+ else {
89
+ logger.warn(`No active channels available for notification.`);
90
+ }
91
+ }
92
+ }
93
+ /**
94
+ * Get a specific channel by ID
95
+ */
96
+ getChannel(id) {
97
+ return this.channels.get(id);
98
+ }
99
+ }
100
+ //# sourceMappingURL=channel-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-manager.js","sourceRoot":"","sources":["../../src/channels/channel-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { CommunicationChannel, ChannelMessage } from '../types.js';
2
+ /**
3
+ * Discord Channel Implementation for Tars
4
+ */
5
+ export declare class DiscordChannel implements CommunicationChannel {
6
+ readonly id = "discord";
7
+ private readonly config;
8
+ private readonly client;
9
+ private readonly processor;
10
+ private messageHandler?;
11
+ constructor();
12
+ get isEnabled(): boolean;
13
+ /**
14
+ * Start the Discord bot
15
+ */
16
+ start(): Promise<void>;
17
+ /**
18
+ * Stop the Discord bot
19
+ */
20
+ stop(): Promise<void>;
21
+ /**
22
+ * Send a proactive notification to the primary contact
23
+ */
24
+ notify(content: string, attachments?: string[]): Promise<void>;
25
+ /**
26
+ * Register message handler
27
+ */
28
+ onMessage(handler: (message: ChannelMessage) => Promise<void>): void;
29
+ /**
30
+ * Setup event handlers
31
+ */
32
+ private setupEventHandlers;
33
+ /**
34
+ * Internal handler for Discord-specific messages
35
+ */
36
+ private handleIncomingMessage;
37
+ /**
38
+ * Extract prompt and handle prefix
39
+ */
40
+ private extractPrompt;
41
+ }
@@ -0,0 +1,200 @@
1
+ import { Client, GatewayIntentBits, ChannelType, Partials } from 'discord.js';
2
+ import { Config } from '../../config/config.js';
3
+ import logger from '../../utils/logger.js';
4
+ import { MessageFormatter } from './message-formatter.js';
5
+ import { AttachmentProcessor } from '../../utils/attachment-processor.js';
6
+ /**
7
+ * Discord Channel Implementation for Tars
8
+ */
9
+ export class DiscordChannel {
10
+ id = 'discord';
11
+ config;
12
+ client;
13
+ processor;
14
+ messageHandler;
15
+ constructor() {
16
+ this.config = Config.getInstance();
17
+ this.processor = new AttachmentProcessor(this.config);
18
+ this.client = new Client({
19
+ intents: [
20
+ GatewayIntentBits.Guilds,
21
+ GatewayIntentBits.GuildMessages,
22
+ GatewayIntentBits.MessageContent,
23
+ GatewayIntentBits.DirectMessages
24
+ ],
25
+ partials: [Partials.Channel, Partials.Message]
26
+ });
27
+ this.setupEventHandlers();
28
+ }
29
+ get isEnabled() {
30
+ // For backward compatibility, if no explicit channels are configured but discordToken exists, it's enabled.
31
+ // Once WhatsApp is added, we'll use structured config.
32
+ return !!this.config.discordToken;
33
+ }
34
+ /**
35
+ * Start the Discord bot
36
+ */
37
+ async start() {
38
+ if (!this.isEnabled) {
39
+ logger.info('Discord channel is disabled.');
40
+ return;
41
+ }
42
+ await this.client.login(this.config.discordToken);
43
+ }
44
+ /**
45
+ * Stop the Discord bot
46
+ */
47
+ async stop() {
48
+ this.client.destroy();
49
+ }
50
+ /**
51
+ * Send a proactive notification to the primary contact
52
+ */
53
+ async notify(content, attachments) {
54
+ if (!this.config.discordOwnerId || !content.trim())
55
+ return;
56
+ try {
57
+ const user = await this.client.users.fetch(this.config.discordOwnerId);
58
+ if (user) {
59
+ const formatted = MessageFormatter.format(content);
60
+ const files = attachments || [];
61
+ if (formatted.length > 8000) {
62
+ const filePath = this.processor.saveResponse(content, 'md');
63
+ await user.send({
64
+ content: `🔔 **Task Notification** (Response too long, see attached):`,
65
+ files: [filePath, ...files]
66
+ });
67
+ }
68
+ else {
69
+ const chunks = MessageFormatter.split(formatted);
70
+ for (let i = 0; i < chunks.length; i++) {
71
+ const prefix = i === 0 ? `🔔 **Task Notification:**\n` : ``;
72
+ await user.send({
73
+ content: prefix + chunks[i],
74
+ files: i === chunks.length - 1 ? files : []
75
+ });
76
+ }
77
+ }
78
+ }
79
+ }
80
+ catch (e) {
81
+ logger.error(`Failed to send proactive notification via Discord: ${e.message}`);
82
+ }
83
+ }
84
+ /**
85
+ * Register message handler
86
+ */
87
+ onMessage(handler) {
88
+ this.messageHandler = handler;
89
+ }
90
+ /**
91
+ * Setup event handlers
92
+ */
93
+ setupEventHandlers() {
94
+ this.client.once('clientReady', (c) => {
95
+ logger.info(`🚀 Discord channel online as ${c.user.tag}`);
96
+ if (this.config.discordOwnerId) {
97
+ logger.info(`👤 Primary Discord Contact ID: ${this.config.discordOwnerId}`);
98
+ }
99
+ else {
100
+ logger.warn(`⚠️ No Primary Discord Contact ID set. Will bind to the first user who sends a message.`);
101
+ }
102
+ });
103
+ this.client.on('messageCreate', this.handleIncomingMessage.bind(this));
104
+ }
105
+ /**
106
+ * Internal handler for Discord-specific messages
107
+ */
108
+ async handleIncomingMessage(message) {
109
+ if (message.author.bot || !this.messageHandler)
110
+ return;
111
+ const userPrompt = this.extractPrompt(message);
112
+ if (userPrompt === null)
113
+ return;
114
+ // Auto-Bind on first interaction if not set
115
+ const wasAutoBound = !this.config.discordOwnerId;
116
+ if (wasAutoBound) {
117
+ this.config.discordOwnerId = message.author.id;
118
+ this.config.saveSettings();
119
+ logger.info(`🔒 Automatically bound Primary Contact to Discord user: ${message.author.id}`);
120
+ }
121
+ if (!userPrompt && message.attachments.size === 0)
122
+ return;
123
+ // Handle Attachments
124
+ const attachments = [];
125
+ if (message.attachments.size > 0) {
126
+ for (const [id, attachment] of message.attachments) {
127
+ try {
128
+ const filePath = await this.processor.download(attachment);
129
+ if (attachment.contentType) {
130
+ attachments.push({
131
+ path: filePath,
132
+ mimeType: attachment.contentType
133
+ });
134
+ }
135
+ }
136
+ catch (err) {
137
+ logger.error(`Failed to download Discord attachment: ${err.message}`);
138
+ }
139
+ }
140
+ }
141
+ // Map to common ChannelMessage
142
+ const channelMessage = {
143
+ content: userPrompt,
144
+ senderId: message.author.id,
145
+ senderName: message.author.username,
146
+ channelId: message.channelId,
147
+ attachments,
148
+ metadata: { wasAutoBound },
149
+ reply: async (response, outAttachments) => {
150
+ const formatted = MessageFormatter.format(response);
151
+ if (formatted.length > 8000) {
152
+ const filePath = this.processor.saveResponse(response, 'md');
153
+ await message.reply({
154
+ content: `📄 **Response too long** (${formatted.length} chars). See attached file:`,
155
+ files: [filePath, ...(outAttachments || [])]
156
+ });
157
+ }
158
+ else {
159
+ const chunks = MessageFormatter.split(formatted);
160
+ for (let i = 0; i < chunks.length; i++) {
161
+ await message.reply({
162
+ content: chunks[i],
163
+ files: i === chunks.length - 1 ? outAttachments || [] : []
164
+ });
165
+ }
166
+ }
167
+ }
168
+ };
169
+ // Show typing indicator
170
+ if ('sendTyping' in message.channel) {
171
+ await message.channel.sendTyping().catch(() => { });
172
+ }
173
+ // Forward to the registered handler (Supervisor via ChannelManager)
174
+ await this.messageHandler(channelMessage);
175
+ }
176
+ /**
177
+ * Extract prompt and handle prefix
178
+ */
179
+ extractPrompt(message) {
180
+ const isDM = message.channel.type === ChannelType.DM;
181
+ const isMentioned = this.client.user && message.mentions.has(this.client.user);
182
+ const customPrefix = `!${this.config.assistantName.toLowerCase()}`;
183
+ const hasCustomCommand = message.content.toLowerCase().startsWith(customPrefix);
184
+ const hasLegacyCommand = message.content.toLowerCase().startsWith('!tars');
185
+ if (!isDM && !isMentioned && !hasCustomCommand && !hasLegacyCommand)
186
+ return null;
187
+ let prompt = message.content;
188
+ if (hasCustomCommand) {
189
+ prompt = prompt.substring(customPrefix.length);
190
+ }
191
+ else if (hasLegacyCommand) {
192
+ prompt = prompt.substring(6); // length of '!tars'
193
+ }
194
+ if (isMentioned && this.client.user) {
195
+ prompt = prompt.replace(new RegExp(`<@!?${this.client.user.id}>`, 'g'), '');
196
+ }
197
+ return prompt.trim();
198
+ }
199
+ }
200
+ //# sourceMappingURL=discord-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord-channel.js","sourceRoot":"","sources":["../../../src/channels/discord/discord-channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-formatter.js","sourceRoot":"","sources":["../../../src/channels/discord/message-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { AttachmentContext } from '../types/index.js';
2
+ /**
3
+ * Common message structure across all channels
4
+ */
5
+ export interface ChannelMessage {
6
+ content: string;
7
+ senderId: string;
8
+ senderName: string;
9
+ channelId: string;
10
+ attachments?: AttachmentContext[];
11
+ metadata?: Record<string, any>;
12
+ reply: (content: string, attachments?: string[]) => Promise<void>;
13
+ }
14
+ /**
15
+ * Interface for communication platforms (Discord, WhatsApp, etc.)
16
+ */
17
+ export interface CommunicationChannel {
18
+ readonly id: string;
19
+ readonly isEnabled: boolean;
20
+ /**
21
+ * Initialize and connect to the platform
22
+ */
23
+ start(): Promise<void>;
24
+ /**
25
+ * Disconnect from the platform
26
+ */
27
+ stop(): Promise<void>;
28
+ /**
29
+ * Send a proactive notification to the user
30
+ */
31
+ notify(content: string, attachments?: string[]): Promise<void>;
32
+ /**
33
+ * Register a callback for incoming messages
34
+ */
35
+ onMessage(handler: (message: ChannelMessage) => Promise<void>): void;
36
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/channels/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import { CommunicationChannel, ChannelMessage } from '../types.js';
2
+ /**
3
+ * WhatsApp Channel Implementation using Baileys
4
+ */
5
+ export declare class WhatsAppChannel implements CommunicationChannel {
6
+ readonly id = "whatsapp";
7
+ private readonly config;
8
+ private readonly processor;
9
+ private sock;
10
+ private messageHandler?;
11
+ private isConnected;
12
+ constructor();
13
+ get isEnabled(): boolean;
14
+ /**
15
+ * Start the WhatsApp connection
16
+ */
17
+ start(): Promise<void>;
18
+ /**
19
+ * Stop the WhatsApp connection
20
+ */
21
+ stop(): Promise<void>;
22
+ /**
23
+ * Send a proactive notification
24
+ */
25
+ notify(content: string, attachments?: string[]): Promise<void>;
26
+ /**
27
+ * Register message handler
28
+ */
29
+ onMessage(handler: (message: ChannelMessage) => Promise<void>): void;
30
+ /**
31
+ * Internal handler for incoming WhatsApp messages
32
+ */
33
+ private handleIncomingMessage;
34
+ /**
35
+ * Helper to send message with optional attachments
36
+ */
37
+ private sendMessageWithAttachments;
38
+ private getMimeType;
39
+ }