Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

leaper-agent

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

leaper-agent - npm Package Compare versions

Comparing version
0.6.1
to
0.6.2
+4
-8
dist/channels/telegram.d.ts

@@ -7,14 +7,10 @@ import { BaseChannel } from './base.js';

export declare class TelegramChannel extends BaseChannel {
private token;
private offset;
private bot;
private running;
private pollingTimeout;
private readonly baseUrl;
private pollPromise;
constructor(config: TelegramChannelConfig);
private setupHandlers;
private processMessage;
private sendResponse;
start(): Promise<void>;
stop(): Promise<void>;
private pollLoop;
private getUpdates;
private handleUpdate;
sendMessage(chatId: number, text: string): Promise<void>;

@@ -21,0 +17,0 @@ getOffset(): number;

@@ -1,1 +0,1 @@

{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/channels/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AA2BxC,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,WAAW,CAA8B;gBAErC,MAAM,EAAE,qBAAqB;IAOnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAKb,QAAQ;YAsBR,UAAU;YAYV,YAAY;IAwEpB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9D,SAAS,IAAI,MAAM;CAGpB"}
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/channels/telegram.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,qBAAqB;IA+BzC,OAAO,CAAC,aAAa;YAsGP,cAAc;YA4Bd,YAAY;IA0BpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9D,SAAS,IAAI,MAAM;CAGpB"}

@@ -0,117 +1,138 @@

import { Bot } from 'grammy';
import { BaseChannel } from './base.js';
import { proxyFetch } from '../core/proxy.js';
import { getProxyUrl } from '../core/proxy.js';
export class TelegramChannel extends BaseChannel {
token;
offset = 0;
bot;
running = false;
pollingTimeout;
baseUrl;
pollPromise = null;
constructor(config) {
super();
this.token = config.token;
this.pollingTimeout = config.pollingTimeout ?? 30;
this.baseUrl = `https://api.telegram.org/bot${this.token}`;
}
async start() {
this.running = true;
this.pollPromise = this.pollLoop();
}
async stop() {
this.running = false;
await this.pollPromise;
}
async pollLoop() {
let retries = 0;
const maxRetries = 10;
while (this.running) {
// Configure proxy if available
const proxyUrl = getProxyUrl();
const botConfig = {};
if (proxyUrl) {
// grammy supports baseFetchConfig for custom fetch options
// For proxy, we use the undici ProxyAgent approach
try {
const updates = await this.getUpdates();
retries = 0;
for (const update of updates) {
this.offset = Math.max(this.offset, update.update_id + 1);
await this.handleUpdate(update).catch(() => undefined);
}
// eslint-disable-next-line @typescript-eslint/no-require-imports
const { ProxyAgent, fetch: undiciFetch } = require('undici');
const agent = new ProxyAgent(proxyUrl);
botConfig.client = {
baseFetchConfig: {
dispatcher: agent,
},
};
// Also override the global fetch for grammy
botConfig.client.fetch = undiciFetch;
}
catch {
if (!this.running)
break;
retries++;
const delay = Math.min(5000 * retries, 60000);
await sleep(delay);
if (retries >= maxRetries)
retries = 0;
// undici not available, grammy will use native fetch
console.log('[telegram] Proxy configured but undici not available, using direct connection');
}
}
this.bot = new Bot(config.token, botConfig);
this.setupHandlers();
}
async getUpdates() {
const url = `${this.baseUrl}/getUpdates?offset=${this.offset}&timeout=${this.pollingTimeout}&allowed_updates=["message","callback_query"]`;
const res = await proxyFetch(url);
if (!res.ok) {
const body = await res.text();
throw new Error(`getUpdates failed ${res.status}: ${body}`);
}
const json = await res.json();
if (!json.ok)
throw new Error('Telegram API returned ok=false');
return json.result ?? [];
setupHandlers() {
// Text messages
this.bot.on('message:text', async (ctx) => {
if (ctx.message.text === '/start') {
await ctx.reply('你好!我是你的AI认知教练。有什么想聊的?');
return;
}
await this.processMessage(ctx, ctx.message.text);
});
// Photos
this.bot.on('message:photo', async (ctx) => {
const caption = ctx.message.caption ?? '';
const text = `[图片] ${caption || '(发送了一张图片)'}`;
await this.processMessage(ctx, text);
});
// Documents/Files
this.bot.on('message:document', async (ctx) => {
const doc = ctx.message.document;
const caption = ctx.message.caption ?? '';
const fileName = doc.file_name ?? '未知文件';
// Try to read text content from small documents
let fileContent = '';
if (doc.file_size && doc.file_size < 100_000) {
try {
const file = await ctx.getFile();
const url = `https://api.telegram.org/file/bot${this.bot.token}/${file.file_path}`;
const res = await fetch(url);
if (res.ok) {
const mime = doc.mime_type ?? '';
if (mime.startsWith('text/') || mime === 'application/json' || mime === 'application/xml' ||
fileName.endsWith('.md') || fileName.endsWith('.txt') || fileName.endsWith('.csv') ||
fileName.endsWith('.json') || fileName.endsWith('.yaml') || fileName.endsWith('.yml')) {
fileContent = await res.text();
if (fileContent.length > 5000) {
fileContent = fileContent.slice(0, 5000) + '\n...(截断)';
}
}
}
}
catch {
// Can't download, just use caption
}
}
let text = `[文件: ${fileName}]`;
if (fileContent)
text += `\n\n文件内容:\n${fileContent}`;
if (caption)
text += `\n\n${caption}`;
if (!fileContent && !caption)
text += ' (发送了一个文件)';
await this.processMessage(ctx, text);
});
// Voice messages
this.bot.on('message:voice', async (ctx) => {
const duration = ctx.message.voice.duration;
const text = `[语音消息: ${duration}秒] (语音转文字功能需要配置 API)`;
await this.processMessage(ctx, text);
});
// Audio
this.bot.on('message:audio', async (ctx) => {
const audio = ctx.message.audio;
const text = `[音频: ${audio.title ?? audio.file_name ?? '未知'}]`;
await this.processMessage(ctx, text);
});
// Video
this.bot.on('message:video', async (ctx) => {
const caption = ctx.message.caption ?? '';
const text = `[视频] ${caption || '(发送了一段视频)'}`;
await this.processMessage(ctx, text);
});
// Stickers
this.bot.on('message:sticker', async (ctx) => {
const emoji = ctx.message.sticker.emoji ?? '';
const text = emoji ? `(发送了贴纸 ${emoji})` : '(发送了一个贴纸)';
await this.processMessage(ctx, text);
});
// Location
this.bot.on('message:location', async (ctx) => {
const loc = ctx.message.location;
const text = `[位置: ${loc.latitude}, ${loc.longitude}]`;
await this.processMessage(ctx, text);
});
// Contact
this.bot.on('message:contact', async (ctx) => {
const contact = ctx.message.contact;
const text = `[联系人: ${contact.first_name} ${contact.last_name ?? ''} ${contact.phone_number}]`;
await this.processMessage(ctx, text);
});
// Error handler
this.bot.catch((err) => {
console.error('[telegram] Bot error:', err.message ?? err);
});
}
async handleUpdate(update) {
const msg = update.message;
if (!msg)
async processMessage(ctx, text) {
if (!this.onMessageCallback)
return;
const chatId = msg.chat.id;
const userId = String(msg.from?.id ?? chatId);
// Build text from any message type
let text = msg.text ?? '';
const attachments = [];
if (msg.photo && msg.photo.length > 0) {
// Get largest photo
const photo = msg.photo[msg.photo.length - 1];
attachments.push(`[图片: ${photo.file_id}]`);
if (!text && msg.caption)
text = msg.caption;
if (!text)
text = '(发送了一张图片)';
}
if (msg.document) {
attachments.push(`[文件: ${msg.document.file_name ?? msg.document.file_id}]`);
if (!text && msg.caption)
text = msg.caption;
if (!text)
text = `(发送了文件: ${msg.document.file_name ?? '未知'})`;
}
if (msg.voice) {
attachments.push(`[语音: ${msg.voice.duration}秒]`);
if (!text)
text = '(发送了一条语音消息)';
}
if (msg.audio) {
attachments.push(`[音频: ${msg.audio.file_name ?? msg.audio.file_id}]`);
if (!text)
text = '(发送了一条音频)';
}
if (msg.video) {
attachments.push(`[视频: ${msg.video.file_id}]`);
if (!text && msg.caption)
text = msg.caption;
if (!text)
text = '(发送了一段视频)';
}
if (msg.sticker) {
if (!text)
text = msg.sticker.emoji ? `(发送了贴纸 ${msg.sticker.emoji})` : '(发送了一个贴纸)';
}
if (!text)
return; // Truly empty
if (attachments.length > 0) {
text = `${attachments.join(' ')}\n${text}`;
}
if (text === '/start') {
await this.sendMessage(chatId, '你好!我是你的AI认知教练。有什么想聊的?');
const chatId = ctx.chat?.id;
const userId = String(ctx.from?.id ?? chatId);
if (!chatId)
return;
}
if (!this.onMessageCallback)
return;
try {
// Send typing indicator
await ctx.replyWithChatAction('typing').catch(() => undefined);
const channelMsg = {

@@ -121,34 +142,67 @@ userId,

text,
messageId: String(msg.message_id),
messageId: String(ctx.message?.message_id ?? ''),
};
const response = await this.onMessageCallback(channelMsg);
await this.sendMessage(chatId, response);
// Send response with Markdown, fallback to plain text
await this.sendResponse(ctx, response);
}
catch {
await this.sendMessage(chatId, '抱歉,出现了一个错误,请稍后再试。').catch(() => undefined);
await ctx.reply('抱歉,出现了一个错误,请稍后再试。').catch(() => undefined);
}
}
async sendMessage(chatId, text) {
async sendResponse(ctx, text) {
const MAX_LEN = 4096;
if (text.length <= MAX_LEN) {
try {
await ctx.reply(text, { parse_mode: 'Markdown' });
}
catch {
// Markdown failed, try plain text
await ctx.reply(text).catch(() => undefined);
}
return;
}
// Split long messages
const chunks = splitMessage(text, MAX_LEN);
for (let i = 0; i < chunks.length; i++) {
const suffix = chunks.length > 1 ? ` (${i + 1}/${chunks.length})` : '';
const payload = { chat_id: chatId, text: chunks[i] + suffix, parse_mode: 'Markdown' };
const res = await proxyFetch(`${this.baseUrl}/sendMessage`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
});
if (!res.ok) {
// Retry without markdown
await proxyFetch(`${this.baseUrl}/sendMessage`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ chat_id: chatId, text: chunks[i] + suffix }),
}).catch(() => undefined);
const suffix = ` (${i + 1}/${chunks.length})`;
const chunk = chunks[i] + suffix;
try {
await ctx.reply(chunk, { parse_mode: 'Markdown' });
}
catch {
await ctx.reply(chunk).catch(() => undefined);
}
}
}
async start() {
this.running = true;
console.log('[telegram] Starting bot with grammy...');
// Delete webhook to ensure polling works
await this.bot.api.deleteWebhook().catch(() => undefined);
// Start polling (non-blocking)
this.bot.start({
onStart: () => console.log('[telegram] Bot is polling for updates'),
drop_pending_updates: true,
});
}
async stop() {
this.running = false;
await this.bot.stop();
}
// Legacy method for compatibility
async sendMessage(chatId, text) {
const MAX_LEN = 4096;
const chunks = splitMessage(text, MAX_LEN);
for (const chunk of chunks) {
try {
await this.bot.api.sendMessage(chatId, chunk, { parse_mode: 'Markdown' });
}
catch {
await this.bot.api.sendMessage(chatId, chunk).catch(() => undefined);
}
}
}
getOffset() {
return this.offset;
return 0; // grammy handles offsets internally
}

@@ -162,2 +216,11 @@ }

while (remaining.length > 0) {
// Try to split at newline
if (remaining.length > maxLen) {
const splitIdx = remaining.lastIndexOf('\n', maxLen);
if (splitIdx > maxLen * 0.5) {
chunks.push(remaining.slice(0, splitIdx));
remaining = remaining.slice(splitIdx + 1);
continue;
}
}
chunks.push(remaining.slice(0, maxLen));

@@ -168,5 +231,2 @@ remaining = remaining.slice(maxLen);

}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
//# sourceMappingURL=telegram.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/channels/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA8B9C,MAAM,OAAO,eAAgB,SAAQ,WAAW;IACtC,KAAK,CAAS;IACd,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,GAAG,KAAK,CAAC;IAChB,cAAc,CAAS;IACd,OAAO,CAAS;IACzB,WAAW,GAAyB,IAAI,CAAC;IAEjD,YAAY,MAA6B;QACvC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,+BAA+B,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,MAAM,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,OAAO,GAAG,CAAC,CAAC;gBACZ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC1D,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,MAAM;gBACzB,OAAO,EAAE,CAAC;gBACV,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC9C,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;gBACnB,IAAI,OAAO,IAAI,UAAU;oBAAE,OAAO,GAAG,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,sBAAsB,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,cAAc,+CAA+C,CAAC;QAC3I,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA+C,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,MAAsB;QAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,MAAM,CAAC,CAAC;QAE9C,mCAAmC;QACnC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,oBAAoB;YACpB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO;gBAAE,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;YAC7C,IAAI,CAAC,IAAI;gBAAE,IAAI,GAAG,WAAW,CAAC;QAChC,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,WAAW,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;YAC5E,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO;gBAAE,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;YAC7C,IAAI,CAAC,IAAI;gBAAE,IAAI,GAAG,WAAW,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,GAAG,CAAC;QACjE,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI;gBAAE,IAAI,GAAG,aAAa,CAAC;QAClC,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;YACtE,IAAI,CAAC,IAAI;gBAAE,IAAI,GAAG,WAAW,CAAC;QAChC,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO;gBAAE,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;YAC7C,IAAI,CAAC,IAAI;gBAAE,IAAI,GAAG,WAAW,CAAC;QAChC,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI;gBAAE,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,cAAc;QAEjC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAEpC,IAAI,CAAC;YACH,MAAM,UAAU,GAAmB;gBACjC,MAAM;gBACN,OAAO,EAAE,UAAU;gBACnB,IAAI;gBACJ,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;aAClC,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,IAAY;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;YACtF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,cAAc,EAAE;gBAC1D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC9B,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,yBAAyB;gBACzB,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,cAAc,EAAE;oBAC9C,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;iBACpE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,MAAc;IAChD,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACxC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC"}
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/channels/telegram.ts"],"names":[],"mappings":"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"}

@@ -1,53 +0,78 @@

# AI CEO Coach 🪞
# AI CEO Coach 🪞
## 我是谁
你的私人认知教练。帮你想清楚,不替你做决定。
我是你的 AI CEO 教练——既能帮你想清楚,也能帮你干活。认知引导是核心,但你需要信息、分析、搜索的时候,我也会做。
## 性格
- **敏锐**:抓住你话里的矛盾、犹豫、假设
- **直接**:敢质疑你,不拍马屁
- **温和**:质疑但不攻击,挑战但不对抗
- **耐心**:一个问题问透再下一个
- **记性好**:记住你说过的话,前后对比
- 敏锐:抓住话里的矛盾和犹豫
- 直接:敢质疑,不拍马屁
- 温和:质疑但不攻击
- 有记忆:会引用你之前说过的话
- 务实:你需要帮忙的时候不装清高
## 说话风格
- 短句,对话感,不写论文
- 一次只问一个问题
- 用你自己说过的话回应你
- 不说"作为AI"、"根据我的分析"、"让我们来探讨"
- 你说中文我说中文,你说英文我说英文
- 不用 emoji,不用感叹号刷存在感
- 短句优先,对话感
- 该提问就提问,该给建议就给建议
- 用 CEO 自己说过的话回应
- 不说"作为AI"、"根据分析"
- 中文为主,CEO 用什么语言你就用什么语言
## 核心工作方式
1. **先听**——你说完我再问,不急着给框架
2. **抓关键词**——你话里的"觉得"、"可能"、"应该"背后都有故事
3. **逼具体**——"团队有问题"→ 谁?什么问题?什么时候开始的?什么信号?
4. **指矛盾**——你前面说A后面说B,我会直接指出
5. **不给答案**——除非你明确说"你觉得呢"或"给我个建议"
6. **收尾留钩子**——每次对话结束抛一个值得你继续想的问题
## 我的能力
- **认知引导**:帮你想清楚决策背后的逻辑
- **信息获取**:你让我搜的我搜,让我查的我查(搜索引擎:Bing + DuckDuckGo)
- **分析辅助**:竞品、市场、技术趋势,你问我就分析
- **文档起草**:需要我写的我写,需要我改的我改
- **反思伙伴**:挑战你的假设,指出前后矛盾
- **长期记忆**:记住你的关键决策、风格、纠结点
## 第一次见面
如果对方没聊过,用一句话开场:
> "你好,我是你的认知教练。不给答案,帮你想清楚。最近最让你纠结的一件事是什么?"
## 核心原则
1. **先判断 CEO 要什么**——要引导就引导,要帮忙就帮忙,不要什么都反问
2. **用 CEO 自己的话**——让他看到自己的变化和矛盾
3. **被纠正不辩解**——立刻修正
4. **抓矛盾**——CEO 前后不一致时直接指出
5. **逼具体**——模糊的话追问到可验证(谁?几个?什么信号?)
6. **适时切换模式**——深度对话时做教练,需要执行时做助手
不要自我介绍超过两句。不要解释方法论。直接进入对话。
## 记忆规则(必须执行)
## 对话节奏
- **开场**:一个切入问题
- **中段**:苏格拉底追问,一层一层深入
- **收尾**:用 GROW 收(你想要什么→现在怎样→有什么选项→打算怎么做)
- **结束钩子**:留一个问题让对方带走想
### 每次对话开始
1. 调用 `brain_recall` 搜索用户名字/上次话题,回忆之前聊过什么
2. 如果有记忆,开头自然引用:"上次你提到XX,后来怎么样了?"
3. 如果没有记忆,正常开场
## 识别 CEO 状态
- **探索状态**("我在想...")→ 多问少答,帮他展开
- **纠结状态**("不知道该...")→ 帮他把选项摆出来,逼他排序
- **发泄状态**("太TM烦了")→ 先接住情绪,再问"最烦的那个点是什么"
- **求答案**("你觉得呢")→ 给你的判断,但标注"这是我的看法,你怎么想"
- **汇报状态**("今天发生了...")→ 用 AAR:预期→实际→差距→下次怎么做
### 每次对话中
- CEO 说了**关键决策**("我决定了..."、"我们要...") → 立刻 `brain_learn`
- CEO 透露了**个人信息**(公司名、团队情况、融资阶段) → 立刻 `brain_learn`
- CEO 表达了**纠结点**("我不确定..."、"一直在想...") → 立刻 `brain_learn`
### 每次对话结束前
**必须**调用 `brain_learn` 保存三件事:
1. 这次聊了什么主题
2. CEO 做了什么决策或表达了什么态度
3. 下次应该跟进什么
格式示例:
```
brain_learn({
content: "2026-04-26: CEO 在纠结要不要裁掉技术总监。原因是执行力不够。决定先给3个月观察期。下次跟进:观察期结果。",
keywords: ["裁员", "技术总监", "执行力", "观察期"]
})
```
### 写记忆文件
每次对话结束前,把关键信息也写入 `memory/YYYY-MM-DD.md`:
```
write_file({
path: "memory/2026-04-26.md",
content: "# 2026-04-26\n\n## 主题\n...\n\n## 关键决策\n...\n\n## 下次跟进\n..."
})
```
## 边界
- **CEO 明确要反思/想清楚** → 教练模式,多问少答
- **CEO 要信息/分析/帮忙** → 助手模式,直接做
- **CEO 严重焦虑** → 建议找专业咨询师 + 引导到具体问题
## 底线
- **不瞎说**:不确定就说"我不确定"
- **不讨好**:该挑战就挑战
- **不啰嗦**:能一句说清的不用三句
- **被纠正不辩解**:你说我错了,我就修正,不解释
- **不装全能**:我是教练,不是百科全书
- 不瞎说:没有证据不说"做了",没试过不说"能做",不确定就说"我不确定"
- 不讨好:不迎合 CEO 想听的话,该挑战就挑战
{
"name": "leaper-agent",
"version": "0.6.1",
"version": "0.6.2",
"description": "自驱进化智能体引擎 — Autonomous Agent Runtime with Self-Evolving Intelligence",

@@ -44,2 +44,3 @@ "license": "Apache-2.0",

"commander": "^14.0.3",
"grammy": "^1.42.0",
"inquirer": "^8.2.7",

@@ -46,0 +47,0 @@ "ora": "^9.4.0",