@saccolabs/tars 1.5.0 → 1.7.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.
- package/README.md +7 -10
- package/dist/cli/commands/setup.js +135 -111
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/start.d.ts +1 -4
- package/dist/cli/commands/start.js +37 -47
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.js +0 -19
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/index.js +0 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/config/config.d.ts +2 -13
- package/dist/config/config.js +13 -34
- package/dist/config/config.js.map +1 -1
- package/dist/discord/discord-bot.d.ts +37 -0
- package/dist/{channels/discord/discord-channel.js → discord/discord-bot.js} +85 -78
- package/dist/discord/discord-bot.js.map +1 -0
- package/dist/discord/message-formatter.js.map +1 -0
- package/dist/scripts/debug-cli.js +1 -1
- package/dist/scripts/debug-cli.js.map +1 -1
- package/dist/supervisor/cron-service.d.ts +3 -3
- package/dist/supervisor/cron-service.js +4 -4
- package/dist/supervisor/cron-service.js.map +1 -1
- package/dist/supervisor/gemini-engine.d.ts +4 -4
- package/dist/supervisor/gemini-engine.js +9 -9
- package/dist/supervisor/gemini-engine.js.map +1 -1
- package/dist/supervisor/heartbeat-service.js +1 -1
- package/dist/supervisor/heartbeat-service.js.map +1 -1
- package/dist/supervisor/main.js +60 -59
- package/dist/supervisor/main.js.map +1 -1
- package/dist/tools/send-discord-message.d.ts +6 -9
- package/dist/tools/send-discord-message.js +21 -14
- package/dist/tools/send-discord-message.js.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/package.json +1 -5
- package/src/prompts/system.md +0 -4
- package/dist/channels/channel-manager.d.ts +0 -35
- package/dist/channels/channel-manager.js +0 -100
- package/dist/channels/channel-manager.js.map +0 -1
- package/dist/channels/discord/discord-channel.d.ts +0 -41
- package/dist/channels/discord/discord-channel.js.map +0 -1
- package/dist/channels/discord/message-formatter.js.map +0 -1
- package/dist/channels/types.d.ts +0 -36
- package/dist/channels/types.js +0 -2
- package/dist/channels/types.js.map +0 -1
- package/dist/channels/whatsapp/whatsapp-channel.d.ts +0 -39
- package/dist/channels/whatsapp/whatsapp-channel.js +0 -208
- package/dist/channels/whatsapp/whatsapp-channel.js.map +0 -1
- package/dist/tools/send-notification.d.ts +0 -15
- package/dist/tools/send-notification.js +0 -51
- package/dist/tools/send-notification.js.map +0 -1
- /package/dist/{channels/discord → discord}/message-formatter.d.ts +0 -0
- /package/dist/{channels/discord → discord}/message-formatter.js +0 -0
package/dist/config/config.d.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
export interface ChannelConfig {
|
|
2
|
-
enabled: boolean;
|
|
3
|
-
token?: string;
|
|
4
|
-
ownerId?: string;
|
|
5
|
-
ownerNumber?: string;
|
|
6
|
-
sessionPath?: string;
|
|
7
|
-
}
|
|
8
1
|
export declare class Config {
|
|
9
2
|
private static instance;
|
|
10
3
|
readonly homeDir: string;
|
|
@@ -12,20 +5,16 @@ export declare class Config {
|
|
|
12
5
|
readonly sessionFilePath: string;
|
|
13
6
|
readonly configFilePath: string;
|
|
14
7
|
readonly memoryDbPath: string;
|
|
15
|
-
discordToken: string;
|
|
8
|
+
readonly discordToken: string;
|
|
16
9
|
discordOwnerId: string | null;
|
|
17
|
-
readonly channels: Record<string, ChannelConfig>;
|
|
18
|
-
primaryChannel: string;
|
|
19
10
|
readonly geminiModel: string;
|
|
20
11
|
readonly assistantName: string;
|
|
21
|
-
readonly instanceName: string;
|
|
22
|
-
readonly instanceRole: string;
|
|
23
12
|
readonly heartbeatIntervalMs: number;
|
|
24
13
|
readonly systemPromptPath: string;
|
|
25
14
|
private constructor();
|
|
26
15
|
static getInstance(): Config;
|
|
27
16
|
/**
|
|
28
|
-
* Persists runtime changes back to config.json
|
|
17
|
+
* Persists runtime changes (like learned discordOwnerId) back to config.json
|
|
29
18
|
*/
|
|
30
19
|
saveSettings(): void;
|
|
31
20
|
}
|
package/dist/config/config.js
CHANGED
|
@@ -13,17 +13,12 @@ export class Config {
|
|
|
13
13
|
sessionFilePath;
|
|
14
14
|
configFilePath;
|
|
15
15
|
memoryDbPath;
|
|
16
|
-
// Discord
|
|
16
|
+
// Discord
|
|
17
17
|
discordToken;
|
|
18
18
|
discordOwnerId;
|
|
19
|
-
// Multi-Channel
|
|
20
|
-
channels = {};
|
|
21
|
-
primaryChannel = 'discord';
|
|
22
19
|
// Gemini
|
|
23
20
|
geminiModel;
|
|
24
21
|
assistantName;
|
|
25
|
-
instanceName;
|
|
26
|
-
instanceRole;
|
|
27
22
|
heartbeatIntervalMs;
|
|
28
23
|
// System Prompt
|
|
29
24
|
systemPromptPath;
|
|
@@ -35,6 +30,7 @@ export class Config {
|
|
|
35
30
|
const secretsManager = new SecretsManager(this.homeDir);
|
|
36
31
|
const secrets = secretsManager.load();
|
|
37
32
|
for (const [key, value] of Object.entries(secrets)) {
|
|
33
|
+
// Load into process.env so they are available globally
|
|
38
34
|
process.env[key] = value;
|
|
39
35
|
}
|
|
40
36
|
// 2. Load JSON Config if exists
|
|
@@ -48,33 +44,20 @@ export class Config {
|
|
|
48
44
|
logger.warn(`Could not read config file: ${this.configFilePath}`);
|
|
49
45
|
}
|
|
50
46
|
// 3. Set values (Env vars override JSON config)
|
|
51
|
-
this.
|
|
52
|
-
this.instanceName = process.env.TARS_INSTANCE_NAME || 'tars-supervisor';
|
|
53
|
-
this.instanceRole = process.env.TARS_INSTANCE_ROLE || 'General purpose';
|
|
47
|
+
this.discordToken = process.env.DISCORD_TOKEN || jsonConfig.discordToken || '';
|
|
54
48
|
this.geminiModel = process.env.GEMINI_MODEL || jsonConfig.geminiModel || 'auto';
|
|
49
|
+
this.assistantName = process.env.ASSISTANT_NAME || jsonConfig.assistantName || 'Tars';
|
|
50
|
+
this.discordOwnerId = process.env.DISCORD_OWNER_ID || jsonConfig.discordOwnerId || null;
|
|
55
51
|
const hbSec = process.env.HEARTBEAT_INTERVAL_SEC || jsonConfig.heartbeatIntervalSec || '300';
|
|
56
52
|
this.heartbeatIntervalMs = parseInt(String(hbSec), 10) * 1000;
|
|
57
|
-
// 4.
|
|
58
|
-
this.channels = jsonConfig.channels || {};
|
|
59
|
-
this.primaryChannel = jsonConfig.primaryChannel || 'discord';
|
|
60
|
-
// 5. Legacy Mapping & Env Overrides
|
|
61
|
-
this.discordToken = process.env.DISCORD_TOKEN || jsonConfig.discordToken || '';
|
|
62
|
-
this.discordOwnerId = process.env.DISCORD_OWNER_ID || jsonConfig.discordOwnerId || null;
|
|
63
|
-
// Sync legacy to structured config if missing
|
|
64
|
-
if (this.discordToken && !this.channels.discord) {
|
|
65
|
-
this.channels.discord = {
|
|
66
|
-
enabled: true,
|
|
67
|
-
token: this.discordToken,
|
|
68
|
-
ownerId: this.discordOwnerId || undefined
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
// 6. Derived Paths
|
|
53
|
+
// 4. Derived Paths
|
|
72
54
|
this.taskFilePath = path.join(this.homeDir, 'data', 'tasks.json');
|
|
73
55
|
this.sessionFilePath = path.join(this.homeDir, 'data', 'session.json');
|
|
74
56
|
this.systemPromptPath = path.join(this.homeDir, '.gemini', 'system.md');
|
|
75
57
|
this.memoryDbPath = path.join(this.homeDir, 'data', 'knowledge.db');
|
|
76
|
-
if
|
|
77
|
-
|
|
58
|
+
// Note: validation happens in specific services if needed, but we can do a basic check
|
|
59
|
+
if (!this.discordToken) {
|
|
60
|
+
logger.warn('⚠️ No Discord Token found. Please run `tars setup`.');
|
|
78
61
|
}
|
|
79
62
|
}
|
|
80
63
|
static getInstance() {
|
|
@@ -84,7 +67,7 @@ export class Config {
|
|
|
84
67
|
return Config.instance;
|
|
85
68
|
}
|
|
86
69
|
/**
|
|
87
|
-
* Persists runtime changes back to config.json
|
|
70
|
+
* Persists runtime changes (like learned discordOwnerId) back to config.json
|
|
88
71
|
*/
|
|
89
72
|
saveSettings() {
|
|
90
73
|
try {
|
|
@@ -92,14 +75,10 @@ export class Config {
|
|
|
92
75
|
if (fs.existsSync(this.configFilePath)) {
|
|
93
76
|
currentConfig = JSON.parse(fs.readFileSync(this.configFilePath, 'utf-8'));
|
|
94
77
|
}
|
|
95
|
-
//
|
|
96
|
-
if (this.
|
|
97
|
-
|
|
78
|
+
// Update only fields manageable at runtime
|
|
79
|
+
if (this.discordOwnerId) {
|
|
80
|
+
currentConfig.discordOwnerId = this.discordOwnerId;
|
|
98
81
|
}
|
|
99
|
-
// Update fields
|
|
100
|
-
currentConfig.discordOwnerId = this.discordOwnerId;
|
|
101
|
-
currentConfig.channels = this.channels;
|
|
102
|
-
currentConfig.primaryChannel = this.primaryChannel;
|
|
103
82
|
fs.writeFileSync(this.configFilePath, JSON.stringify(currentConfig, null, 2));
|
|
104
83
|
logger.info('💾 Config updated successfully.');
|
|
105
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Config } from '../config/config.js';
|
|
2
|
+
import { Supervisor } from '../supervisor/supervisor.js';
|
|
3
|
+
/**
|
|
4
|
+
* Discord bot wrapper for Tars
|
|
5
|
+
*/
|
|
6
|
+
export declare class DiscordBot {
|
|
7
|
+
private readonly config;
|
|
8
|
+
private readonly client;
|
|
9
|
+
private readonly supervisor;
|
|
10
|
+
private readonly processor;
|
|
11
|
+
private lastChannelId;
|
|
12
|
+
constructor(supervisor: Supervisor, config: Config);
|
|
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): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Setup event handlers
|
|
27
|
+
*/
|
|
28
|
+
private setupEventHandlers;
|
|
29
|
+
/**
|
|
30
|
+
* Handle incoming messages
|
|
31
|
+
*/
|
|
32
|
+
private handleMessage;
|
|
33
|
+
/**
|
|
34
|
+
* Extract prompt and handle prefix
|
|
35
|
+
*/
|
|
36
|
+
private extractPrompt;
|
|
37
|
+
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { Client, GatewayIntentBits, ChannelType, Partials } from 'discord.js';
|
|
2
|
-
import
|
|
3
|
-
import logger from '../../utils/logger.js';
|
|
2
|
+
import logger from '../utils/logger.js';
|
|
4
3
|
import { MessageFormatter } from './message-formatter.js';
|
|
5
|
-
import { AttachmentProcessor } from '
|
|
4
|
+
import { AttachmentProcessor } from '../utils/attachment-processor.js';
|
|
6
5
|
/**
|
|
7
|
-
* Discord
|
|
6
|
+
* Discord bot wrapper for Tars
|
|
8
7
|
*/
|
|
9
|
-
export class
|
|
10
|
-
id = 'discord';
|
|
8
|
+
export class DiscordBot {
|
|
11
9
|
config;
|
|
12
10
|
client;
|
|
11
|
+
supervisor;
|
|
13
12
|
processor;
|
|
14
|
-
|
|
15
|
-
constructor() {
|
|
16
|
-
this.config =
|
|
17
|
-
this.
|
|
13
|
+
lastChannelId = null;
|
|
14
|
+
constructor(supervisor, config) {
|
|
15
|
+
this.config = config;
|
|
16
|
+
this.supervisor = supervisor;
|
|
17
|
+
this.processor = new AttachmentProcessor(config);
|
|
18
18
|
this.client = new Client({
|
|
19
19
|
intents: [
|
|
20
20
|
GatewayIntentBits.Guilds,
|
|
@@ -26,19 +26,10 @@ export class DiscordChannel {
|
|
|
26
26
|
});
|
|
27
27
|
this.setupEventHandlers();
|
|
28
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
29
|
/**
|
|
35
30
|
* Start the Discord bot
|
|
36
31
|
*/
|
|
37
32
|
async start() {
|
|
38
|
-
if (!this.isEnabled) {
|
|
39
|
-
logger.info('Discord channel is disabled.');
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
33
|
await this.client.login(this.config.discordToken);
|
|
43
34
|
}
|
|
44
35
|
/**
|
|
@@ -50,81 +41,72 @@ export class DiscordChannel {
|
|
|
50
41
|
/**
|
|
51
42
|
* Send a proactive notification to the primary contact
|
|
52
43
|
*/
|
|
53
|
-
async notify(content
|
|
44
|
+
async notify(content) {
|
|
54
45
|
if (!this.config.discordOwnerId || !content.trim())
|
|
55
46
|
return;
|
|
56
47
|
try {
|
|
57
48
|
const user = await this.client.users.fetch(this.config.discordOwnerId);
|
|
58
49
|
if (user) {
|
|
59
50
|
const formatted = MessageFormatter.format(content);
|
|
60
|
-
const files = attachments || [];
|
|
61
51
|
if (formatted.length > 8000) {
|
|
62
52
|
const filePath = this.processor.saveResponse(content, 'md');
|
|
63
53
|
await user.send({
|
|
64
54
|
content: `🔔 **Task Notification** (Response too long, see attached):`,
|
|
65
|
-
files: [filePath
|
|
55
|
+
files: [filePath]
|
|
66
56
|
});
|
|
67
57
|
}
|
|
68
58
|
else {
|
|
69
59
|
const chunks = MessageFormatter.split(formatted);
|
|
70
60
|
for (let i = 0; i < chunks.length; i++) {
|
|
71
61
|
const prefix = i === 0 ? `🔔 **Task Notification:**\n` : ``;
|
|
72
|
-
await user.send(
|
|
73
|
-
content: prefix + chunks[i],
|
|
74
|
-
files: i === chunks.length - 1 ? files : []
|
|
75
|
-
});
|
|
62
|
+
await user.send(prefix + chunks[i]);
|
|
76
63
|
}
|
|
77
64
|
}
|
|
78
65
|
}
|
|
79
66
|
}
|
|
80
67
|
catch (e) {
|
|
81
|
-
logger.error(`Failed to send proactive notification
|
|
68
|
+
logger.error(`Failed to send proactive notification: ${e.message}`);
|
|
82
69
|
}
|
|
83
70
|
}
|
|
84
|
-
/**
|
|
85
|
-
* Register message handler
|
|
86
|
-
*/
|
|
87
|
-
onMessage(handler) {
|
|
88
|
-
this.messageHandler = handler;
|
|
89
|
-
}
|
|
90
71
|
/**
|
|
91
72
|
* Setup event handlers
|
|
92
73
|
*/
|
|
93
74
|
setupEventHandlers() {
|
|
94
75
|
this.client.once('clientReady', (c) => {
|
|
95
|
-
logger.info(`🚀
|
|
76
|
+
logger.info(`🚀 ${this.config.assistantName} online as ${c.user.tag}`);
|
|
77
|
+
logger.info(`🧠 Gemini Model: ${this.config.geminiModel}`);
|
|
96
78
|
if (this.config.discordOwnerId) {
|
|
97
|
-
logger.info(`👤 Primary
|
|
79
|
+
logger.info(`👤 Primary Contact ID: ${this.config.discordOwnerId}`);
|
|
98
80
|
}
|
|
99
81
|
else {
|
|
100
|
-
logger.warn(`⚠️ No Primary
|
|
82
|
+
logger.warn(`⚠️ No Primary Contact ID set. Will bind to the first user who sends a message.`);
|
|
101
83
|
}
|
|
102
84
|
});
|
|
103
|
-
this.client.on('messageCreate', this.
|
|
85
|
+
this.client.on('messageCreate', this.handleMessage.bind(this));
|
|
104
86
|
}
|
|
105
87
|
/**
|
|
106
|
-
*
|
|
88
|
+
* Handle incoming messages
|
|
107
89
|
*/
|
|
108
|
-
async
|
|
109
|
-
if (message.author.bot
|
|
90
|
+
async handleMessage(message) {
|
|
91
|
+
if (message.author.bot)
|
|
110
92
|
return;
|
|
111
93
|
const userPrompt = this.extractPrompt(message);
|
|
94
|
+
// If null, message wasn't for us. If empty string, check for attachments.
|
|
112
95
|
if (userPrompt === null)
|
|
113
96
|
return;
|
|
114
97
|
// Auto-Bind on first interaction if not set
|
|
115
|
-
|
|
116
|
-
if (wasAutoBound) {
|
|
98
|
+
if (!this.config.discordOwnerId) {
|
|
117
99
|
this.config.discordOwnerId = message.author.id;
|
|
118
|
-
if (this.config.channels.discord) {
|
|
119
|
-
this.config.channels.discord.ownerId = message.author.id;
|
|
120
|
-
}
|
|
121
100
|
this.config.saveSettings();
|
|
122
|
-
logger.info(`🔒 Automatically bound Primary Contact to
|
|
101
|
+
logger.info(`🔒 Automatically bound Primary Contact to user: ${message.author.id}`);
|
|
102
|
+
await message.reply(`🔒 **System Alert:** I have permanently bound my background notification channel to your account. I will send proactive alerts here.`);
|
|
123
103
|
}
|
|
124
104
|
if (!userPrompt && message.attachments.size === 0)
|
|
125
105
|
return;
|
|
106
|
+
logger.info(`Received request from ${message.author.tag}: "${userPrompt || '[Attachment Only]'}"`);
|
|
126
107
|
// Handle Attachments
|
|
127
108
|
const attachments = [];
|
|
109
|
+
let attachmentContextText = '';
|
|
128
110
|
if (message.attachments.size > 0) {
|
|
129
111
|
for (const [id, attachment] of message.attachments) {
|
|
130
112
|
try {
|
|
@@ -135,46 +117,71 @@ export class DiscordChannel {
|
|
|
135
117
|
mimeType: attachment.contentType
|
|
136
118
|
});
|
|
137
119
|
}
|
|
120
|
+
attachmentContextText += `\n[User attached file (${attachment.contentType}): ${filePath}]`;
|
|
138
121
|
}
|
|
139
122
|
catch (err) {
|
|
140
|
-
logger.error(`Failed to download
|
|
123
|
+
logger.error(`Failed to download attachment: ${err.message}`);
|
|
124
|
+
await message.reply(`⚠️ Failed to download ${attachment.name}: ${err.message}`);
|
|
141
125
|
}
|
|
142
126
|
}
|
|
143
127
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (
|
|
155
|
-
|
|
156
|
-
await message.reply({
|
|
157
|
-
content: `📄 **Response too long** (${formatted.length} chars). See attached file:`,
|
|
158
|
-
files: [filePath, ...(outAttachments || [])]
|
|
159
|
-
});
|
|
128
|
+
const fullPrompt = `${userPrompt}${attachmentContextText}`.trim();
|
|
129
|
+
if (!fullPrompt && attachments.length === 0)
|
|
130
|
+
return;
|
|
131
|
+
let typingInterval = null;
|
|
132
|
+
// Start typing indicator loop (Discord typing status lasts 10s)
|
|
133
|
+
if ('sendTyping' in message.channel) {
|
|
134
|
+
// Initial typing
|
|
135
|
+
await message.channel.sendTyping().catch(() => { });
|
|
136
|
+
// Loop every 9s to keep it active
|
|
137
|
+
typingInterval = setInterval(() => {
|
|
138
|
+
if ('sendTyping' in message.channel) {
|
|
139
|
+
message.channel.sendTyping().catch(() => { });
|
|
160
140
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
141
|
+
}, 9000);
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
let fullResponse = '';
|
|
145
|
+
await this.supervisor.run(fullPrompt, async (event) => {
|
|
146
|
+
if ((event.type === 'text' || event.type === 'message') &&
|
|
147
|
+
event.content &&
|
|
148
|
+
event.role !== 'user') {
|
|
149
|
+
fullResponse += event.content;
|
|
150
|
+
}
|
|
151
|
+
else if (event.type === 'error') {
|
|
152
|
+
await message.reply(`❌ **Error:** ${event.error}`);
|
|
153
|
+
}
|
|
154
|
+
else if (event.type === 'done') {
|
|
155
|
+
if (fullResponse.trim()) {
|
|
156
|
+
const formatted = MessageFormatter.format(fullResponse);
|
|
157
|
+
if (formatted.length > 8000) {
|
|
158
|
+
const filePath = this.processor.saveResponse(fullResponse, 'md');
|
|
159
|
+
await message.reply({
|
|
160
|
+
content: `📄 **Response too long** (${formatted.length} chars). See attached file:`,
|
|
161
|
+
files: [filePath]
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
const chunks = MessageFormatter.split(formatted);
|
|
166
|
+
for (const chunk of chunks) {
|
|
167
|
+
await message.reply(chunk);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
logger.warn('Gemini returned an empty response.');
|
|
168
173
|
}
|
|
169
174
|
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
await message.
|
|
175
|
+
}, undefined, attachments);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
logger.error(`Discord handling error: ${error.message}`);
|
|
179
|
+
await message.reply(`❌ **Supervisor Error:** ${error.message}`);
|
|
180
|
+
}
|
|
181
|
+
finally {
|
|
182
|
+
if (typingInterval)
|
|
183
|
+
clearInterval(typingInterval);
|
|
175
184
|
}
|
|
176
|
-
// Forward to the registered handler (Supervisor via ChannelManager)
|
|
177
|
-
await this.messageHandler(channelMessage);
|
|
178
185
|
}
|
|
179
186
|
/**
|
|
180
187
|
* Extract prompt and handle prefix
|
|
@@ -200,4 +207,4 @@ export class DiscordChannel {
|
|
|
200
207
|
return prompt.trim();
|
|
201
208
|
}
|
|
202
209
|
}
|
|
203
|
-
//# sourceMappingURL=discord-
|
|
210
|
+
//# sourceMappingURL=discord-bot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-bot.js","sourceRoot":"","sources":["../../src/discord/discord-bot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-formatter.js","sourceRoot":"","sources":["../../src/discord/message-formatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,gBAAgB;IACjB,MAAM,CAAU,kBAAkB,GAAG,IAAI,CAAC;IAElD;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,IAAY;QACtB,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,0EAA0E;QAC1E,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEzC,iEAAiE;QACjE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEvC,+CAA+C;QAC/C,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE7C,kDAAkD;QAClD,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE7C,wDAAwD;QACxD,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAE3C,4CAA4C;QAC5C,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE7C,4EAA4E;QAC5E,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAExC,mEAAmE;QACnE,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEzC,wCAAwC;QACxC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEjD,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,UAAU,CAAC,IAAY;QAClC,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,sDAAsD;QACtD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iCAAiC,EAAE,SAAS,CAAC,CAAC;QAEtE,mDAAmD;QACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,+BAA+B,EAAE,WAAW,CAAC,CAAC;QAEtE,0CAA0C;QAC1C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAElD,qCAAqC;QACrC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,8BAA8B,EAAE,SAAS,CAAC,CAAC;QAEnE,iDAAiD;QACjD,8EAA8E;QAC9E,0DAA0D;QAC1D,mEAAmE;QACnE,MAAM,aAAa,GAAG,4BAA4B,CAAC;QACnD,kFAAkF;QAClF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,gBAAgB,aAAa,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QAEvF,2CAA2C;QAC3C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,aAAa,SAAS,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAE9E,mCAAmC;QACnC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE9C,yCAAyC;QACzC,yCAAyC;QACzC,gEAAgE;QAChE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAEnD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,YAAY,CAAC,IAAY;QACpC,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,wDAAwD;QACxD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;QAExD,2DAA2D;QAC3D,qEAAqE;QACrE,0DAA0D;QAC1D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACzE,uDAAuD;YACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACzC,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,sEAAsE;QACtE,MAAM,GAAG,MAAM,CAAC,OAAO,CACnB,yCAAyC,EACzC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACtB,iCAAiC;YACjC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChD,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;QACzC,CAAC,CACJ,CAAC;QAEF,qEAAqE;QACrE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACjF,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACvC,sDAAsD;YACtD,yCAAyC;YACzC,oEAAoE;YACpE,wFAAwF;YACxF,4FAA4F;YAC5F,yDAAyD;YACzD,8EAA8E;YAC9E,mEAAmE;YACnE,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,gBAAgB,CAAC,IAAY;QACxC,OAAO,CACH,IAAI;YACA,4DAA4D;aAC3D,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC;YAC/B,0DAA0D;aACzD,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAC9C,CAAC;IACN,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,gBAAgB,CAAC,IAAY;QACxC,OAAO,CACH,IAAI;YACA,4BAA4B;aAC3B,OAAO,CAAC,uBAAuB,EAAE,KAAK,CAAC;YACxC,kCAAkC;aACjC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAC7C,CAAC;IACN,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,IAAY;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,YAAY,GAAG,IAAI,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnD,kCAAkC;gBAClC,SAAS;YACb,CAAC;iBAAM,IAAI,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5C,YAAY,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACJ,YAAY,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,gBAAgB,CAAC,IAAY;QACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,WAAW,GAAG,uCAAuC,CAAC;QAE5D,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC7C,IAAI,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC/C,OAAO,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;gBAC5C,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,iBAAiB;YACrB,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,WAAW,CAAC,IAAY;QACnC,mDAAmD;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,SAAS,GAAe,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,sDAAsD;YACtD,IAAI,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC;gBAC5C,OAAO,GAAG,IAAI,CAAC;gBACf,SAAS;YACb,CAAC;YAED,+BAA+B;YAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBACzE,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,KAAK,GAAG,IAAI;qBACb,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;gBACD,SAAS;YACb,CAAC;YAED,iCAAiC;YACjC,IAAI,OAAO,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,8BAA8B;gBAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAEpC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAa,EAAE,CAAC;oBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;4BACV,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBAChC,CAAC;6BAAM,CAAC;4BACJ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBACvB,CAAC;oBACL,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC1C,CAAC;gBAED,SAAS,GAAG,EAAE,CAAC;gBACf,OAAO,GAAG,KAAK,CAAC;YACpB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,4CAA4C;QAC5C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEpC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBACV,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACJ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC;gBACL,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,YAAY,CAAC,IAAY;QACpC,iDAAiD;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,IAAY,EAAE,YAAoB,IAAI,CAAC,kBAAkB;QAClE,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvB,MAAM;YACV,CAAC;YAED,8DAA8D;YAC9D,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC;YAExE,mFAAmF;YACnF,0EAA0E;YAC1E,qFAAqF;YAErF,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAE/C,4DAA4D;YAC5D,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,oBAAoB,CAAC;YACvC,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;oBACf,WAAW,GAAG,IAAI,CAAC;oBACnB,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACJ,WAAW,GAAG,KAAK,CAAC;oBACpB,WAAW,GAAG,EAAE,CAAC;gBACrB,CAAC;YACL,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;gBACvC,SAAS;oBACL,KAAK,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7B,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;YAC5D,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,sBAAsB,CAAC,IAAY,EAAE,SAAiB;QACjE,uDAAuD;QACvD,MAAM,aAAa,GAAG,WAAW,CAAC;QAClC,IAAI,KAA6B,CAAC;QAClC,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC;QAE1B,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,IAAI,GAAG,GAAG,SAAS;gBAAE,MAAM;YAC3B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;gBACtB,gBAAgB,GAAG,GAAG,CAAC;gBACvB,MAAM;YACV,CAAC;QACL,CAAC;QAED,IAAI,gBAAgB,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,gBAAgB,CAAC;QAC5B,CAAC;QAED,8CAA8C;QAC9C,MAAM,mBAAmB,GAAG,QAAQ,CAAC;QACrC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;QAErB,OAAO,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACvD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1C,IAAI,GAAG,GAAG,SAAS;gBAAE,MAAM;YAC3B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;gBACtB,WAAW,GAAG,GAAG,CAAC;gBAClB,MAAM;YACV,CAAC;QACL,CAAC;QAED,IAAI,WAAW,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,WAAW,CAAC;QACvB,CAAC;QAED,yDAAyD;QACzD,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,UAAU,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,UAAU,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,oCAAoC;QACpC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,UAAU,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,UAAU,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,6DAA6D;QAC7D,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,UAAU,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,UAAU,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,2BAA2B;QAC3B,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;YAClB,oDAAoD;YACpD,OAAO,UAAU,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,wCAAwC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,IAAY;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpC,0DAA0D;QAC1D,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9C,OAAO,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QAED,4DAA4D;QAC5D,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAE7D,8BAA8B;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhC,uDAAuD;QACvD,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,6CAA6C;YAC7C,MAAM,qBAAqB,GAAG,GAAG,OAAO,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,IAAI,qBAAqB,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1D,MAAM,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACJ,kEAAkE;gBAClE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,kBAAkB,CAAC,IAAY;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAE9D,4CAA4C;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAE7B,4CAA4C;YAC5C,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxD,kDAAkD;gBAClD,MAAM,OAAO,GAAG,IAAI,CAAC;gBACrB,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7B,CAAC;YAED,qDAAqD;YACrD,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,IAAI,CAAC;gBACrB,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7B,CAAC;QACL,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAY;QAC7B,MAAM,QAAQ,GAAyC,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,YAAY,GAAG,SAAS,CAAC;QAC7B,IAAI,cAAc,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC9C,IAAI,WAAW,EAAE,CAAC;gBACd,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBAC1D,QAAQ,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,YAAY;wBACnB,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;qBAC5C,CAAC,CAAC;gBACP,CAAC;gBACD,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC9B,cAAc,GAAG,EAAE,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,YAAY;gBACnB,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;aAC5C,CAAC,CAAC;QACP,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAa,EAAE,IAA6B;QACjE,MAAM,KAAK,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QAE/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC"}
|
|
@@ -6,7 +6,7 @@ async function main() {
|
|
|
6
6
|
console.log(`🏠 Home Dir: ${config.homeDir}`);
|
|
7
7
|
const engine = new GeminiEngine(config);
|
|
8
8
|
// Provide a mocked DiscordBot so the send_discord_message tool is injected
|
|
9
|
-
engine.
|
|
9
|
+
engine.setDiscordBot({
|
|
10
10
|
config: config,
|
|
11
11
|
notify: async (content) => {
|
|
12
12
|
console.log(`\n\n📢 [MOCK DISCORD NOTIFICATION] -> ${content}\n\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-cli.js","sourceRoot":"","sources":["../../src/scripts/debug-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,KAAK,UAAU,IAAI;IACf,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAExC,2EAA2E;IAC3E,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"debug-cli.js","sourceRoot":"","sources":["../../src/scripts/debug-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,KAAK,UAAU,IAAI;IACf,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAExC,2EAA2E;IAC3E,MAAM,CAAC,aAAa,CAAC;QACjB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,KAAK,EAAE,OAAe,EAAE,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,yCAAyC,OAAO,MAAM,CAAC,CAAC;QACxE,CAAC;KACG,CAAC,CAAC;IAEV,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAE1B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,GAAG,CAAC,CAAC;IAE9C,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Supervisor } from './supervisor.js';
|
|
2
2
|
import { Config } from '../config/config.js';
|
|
3
|
-
import {
|
|
3
|
+
import { DiscordBot } from '../discord/discord-bot.js';
|
|
4
4
|
/**
|
|
5
5
|
* CronService - Dedicated operator for scheduled tasks.
|
|
6
6
|
* Runs on a tight interval to ensure precisely timed execution.
|
|
@@ -8,11 +8,11 @@ import { ChannelManager } from '../channels/channel-manager.js';
|
|
|
8
8
|
export declare class CronService {
|
|
9
9
|
private readonly supervisor;
|
|
10
10
|
private readonly config;
|
|
11
|
-
private readonly
|
|
11
|
+
private readonly discordBot;
|
|
12
12
|
private interval;
|
|
13
13
|
private isExecuting;
|
|
14
14
|
private static readonly POLL_INTERVAL_MS;
|
|
15
|
-
constructor(supervisor: Supervisor, config: Config,
|
|
15
|
+
constructor(supervisor: Supervisor, config: Config, discordBot: DiscordBot);
|
|
16
16
|
start(): Promise<void>;
|
|
17
17
|
stop(): void;
|
|
18
18
|
private tick;
|
|
@@ -8,14 +8,14 @@ import { CronExpressionParser } from 'cron-parser';
|
|
|
8
8
|
export class CronService {
|
|
9
9
|
supervisor;
|
|
10
10
|
config;
|
|
11
|
-
|
|
11
|
+
discordBot;
|
|
12
12
|
interval = null;
|
|
13
13
|
isExecuting = false;
|
|
14
14
|
static POLL_INTERVAL_MS = 60 * 1000; // Check every minute
|
|
15
|
-
constructor(supervisor, config,
|
|
15
|
+
constructor(supervisor, config, discordBot) {
|
|
16
16
|
this.supervisor = supervisor;
|
|
17
17
|
this.config = config;
|
|
18
|
-
this.
|
|
18
|
+
this.discordBot = discordBot;
|
|
19
19
|
}
|
|
20
20
|
async start() {
|
|
21
21
|
const tasks = await this.loadTasks();
|
|
@@ -60,7 +60,7 @@ export class CronService {
|
|
|
60
60
|
logger.info(`🚀 [CRON] Running task: ${task.title} (${task.id})`);
|
|
61
61
|
try {
|
|
62
62
|
// Tasks run in their own ephemeral session within the engine
|
|
63
|
-
const contextualPrompt = `[SYSTEM: You are executing a scheduled background task. This is a NON-INTERACTIVE session. You CANNOT speak to the user using the ask_user tool. If you need to alert the user about the result of this task, you MUST use the
|
|
63
|
+
const contextualPrompt = `[SYSTEM: You are executing a scheduled background task. This is a NON-INTERACTIVE session. You CANNOT speak to the user using the ask_user tool. If you need to alert the user about the result of this task, you MUST use the send_discord_message tool. Execute the directive autonomously and output a summary of your actions.]\n\nTask Directive: ${task.prompt}`;
|
|
64
64
|
const result = await this.supervisor.executeTask(contextualPrompt);
|
|
65
65
|
logger.info(`✅ [CRON] Task ${task.id} completed. Result length: ${result.length}`);
|
|
66
66
|
// Important: Reload tasks from disk to check if the AI tool deleted its own task during execution
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron-service.js","sourceRoot":"","sources":["../../src/supervisor/cron-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAG7B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD;;;GAGG;AACH,MAAM,OAAO,WAAW;IAMC;IACA;IACA;IAPb,QAAQ,GAA0B,IAAI,CAAC;IACvC,WAAW,GAAY,KAAK,CAAC;IAC7B,MAAM,CAAU,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,qBAAqB;IAE3E,YACqB,UAAsB,EACtB,MAAc,EACd,
|
|
1
|
+
{"version":3,"file":"cron-service.js","sourceRoot":"","sources":["../../src/supervisor/cron-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import { Config as TarsConfig } from '../config/config.js';
|
|
3
3
|
import { AttachmentContext } from '../types/index.js';
|
|
4
|
-
import {
|
|
4
|
+
import { DiscordBot } from '../discord/discord-bot.js';
|
|
5
5
|
export interface GeminiEngineEvent {
|
|
6
6
|
type: string;
|
|
7
7
|
role?: 'user' | 'assistant' | 'system';
|
|
@@ -29,12 +29,12 @@ export declare class GeminiEngine extends EventEmitter {
|
|
|
29
29
|
private client;
|
|
30
30
|
private initialized;
|
|
31
31
|
private currentSessionId;
|
|
32
|
-
private
|
|
32
|
+
private discordBot?;
|
|
33
33
|
constructor(tarsConfig: TarsConfig);
|
|
34
34
|
/**
|
|
35
|
-
* Provide the
|
|
35
|
+
* Provide the DiscordBot instance to the engine so it can build the proactive message tool
|
|
36
36
|
*/
|
|
37
|
-
|
|
37
|
+
setDiscordBot(discordBot: DiscordBot): void;
|
|
38
38
|
/**
|
|
39
39
|
* Initializes the core Gemini client with proper auth and config.
|
|
40
40
|
*/
|