opencode-channels 0.1.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 +187 -0
- package/bin/cli.js +24 -0
- package/bin/cli.ts +62 -0
- package/dist/bot/auto-binding.d.ts +6 -0
- package/dist/bot/auto-binding.d.ts.map +1 -0
- package/dist/bot/auto-binding.js +81 -0
- package/dist/bot/auto-binding.js.map +1 -0
- package/dist/bot/commands/agents.d.ts +9 -0
- package/dist/bot/commands/agents.d.ts.map +1 -0
- package/dist/bot/commands/agents.js +53 -0
- package/dist/bot/commands/agents.js.map +1 -0
- package/dist/bot/commands/base.d.ts +4 -0
- package/dist/bot/commands/base.d.ts.map +1 -0
- package/dist/bot/commands/base.js +241 -0
- package/dist/bot/commands/base.js.map +1 -0
- package/dist/bot/commands/dynamic.d.ts +8 -0
- package/dist/bot/commands/dynamic.d.ts.map +1 -0
- package/dist/bot/commands/dynamic.js +82 -0
- package/dist/bot/commands/dynamic.js.map +1 -0
- package/dist/bot/commands/index.d.ts +15 -0
- package/dist/bot/commands/index.d.ts.map +1 -0
- package/dist/bot/commands/index.js +25 -0
- package/dist/bot/commands/index.js.map +1 -0
- package/dist/bot/commands/models.d.ts +7 -0
- package/dist/bot/commands/models.d.ts.map +1 -0
- package/dist/bot/commands/models.js +60 -0
- package/dist/bot/commands/models.js.map +1 -0
- package/dist/bot/commands/sdk-commands.d.ts +5 -0
- package/dist/bot/commands/sdk-commands.d.ts.map +1 -0
- package/dist/bot/commands/sdk-commands.js +135 -0
- package/dist/bot/commands/sdk-commands.js.map +1 -0
- package/dist/bot/handlers/callback.d.ts +3 -0
- package/dist/bot/handlers/callback.d.ts.map +1 -0
- package/dist/bot/handlers/callback.js +52 -0
- package/dist/bot/handlers/callback.js.map +1 -0
- package/dist/bot/handlers/file.d.ts +3 -0
- package/dist/bot/handlers/file.d.ts.map +1 -0
- package/dist/bot/handlers/file.js +121 -0
- package/dist/bot/handlers/file.js.map +1 -0
- package/dist/bot/handlers/group.d.ts +3 -0
- package/dist/bot/handlers/group.d.ts.map +1 -0
- package/dist/bot/handlers/group.js +41 -0
- package/dist/bot/handlers/group.js.map +1 -0
- package/dist/bot/handlers/index.d.ts +4 -0
- package/dist/bot/handlers/index.d.ts.map +1 -0
- package/dist/bot/handlers/index.js +13 -0
- package/dist/bot/handlers/index.js.map +1 -0
- package/dist/bot/handlers/message.d.ts +15 -0
- package/dist/bot/handlers/message.d.ts.map +1 -0
- package/dist/bot/handlers/message.js +183 -0
- package/dist/bot/handlers/message.js.map +1 -0
- package/dist/bot/handlers/topic.d.ts +3 -0
- package/dist/bot/handlers/topic.d.ts.map +1 -0
- package/dist/bot/handlers/topic.js +43 -0
- package/dist/bot/handlers/topic.js.map +1 -0
- package/dist/bot/index.d.ts +5 -0
- package/dist/bot/index.d.ts.map +1 -0
- package/dist/bot/index.js +66 -0
- package/dist/bot/index.js.map +1 -0
- package/dist/cli/daemon.d.ts +6 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/daemon.js +255 -0
- package/dist/cli/daemon.js.map +1 -0
- package/dist/cli/init.d.ts +19 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +235 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/logs.d.ts +6 -0
- package/dist/cli/logs.d.ts.map +1 -0
- package/dist/cli/logs.js +42 -0
- package/dist/cli/logs.js.map +1 -0
- package/dist/cli/start.d.ts +4 -0
- package/dist/cli/start.d.ts.map +1 -0
- package/dist/cli/start.js +254 -0
- package/dist/cli/start.js.map +1 -0
- package/dist/plugin/index.d.ts +4 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +73 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/server/api.d.ts +3 -0
- package/dist/server/api.d.ts.map +1 -0
- package/dist/server/api.js +30 -0
- package/dist/server/api.js.map +1 -0
- package/dist/server/events.d.ts +18 -0
- package/dist/server/events.d.ts.map +1 -0
- package/dist/server/events.js +131 -0
- package/dist/server/events.js.map +1 -0
- package/dist/server/filters.d.ts +19 -0
- package/dist/server/filters.d.ts.map +1 -0
- package/dist/server/filters.js +149 -0
- package/dist/server/filters.js.map +1 -0
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +10 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/sdk.d.ts +36 -0
- package/dist/server/sdk.d.ts.map +1 -0
- package/dist/server/sdk.js +485 -0
- package/dist/server/sdk.js.map +1 -0
- package/dist/shared/config.d.ts +34 -0
- package/dist/shared/config.d.ts.map +1 -0
- package/dist/shared/config.js +163 -0
- package/dist/shared/config.js.map +1 -0
- package/dist/shared/logger.d.ts +5 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +114 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/mapping.d.ts +90 -0
- package/dist/shared/mapping.d.ts.map +1 -0
- package/dist/shared/mapping.js +234 -0
- package/dist/shared/mapping.js.map +1 -0
- package/dist/shared/message-queue.d.ts +64 -0
- package/dist/shared/message-queue.d.ts.map +1 -0
- package/dist/shared/message-queue.js +138 -0
- package/dist/shared/message-queue.js.map +1 -0
- package/dist/shared/types.d.ts +284 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +7 -0
- package/dist/shared/types.js.map +1 -0
- package/index.js +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 消息队列管理模块
|
|
3
|
+
*
|
|
4
|
+
* 负责管理正在发送中的消息(in-flight messages),用于在进程重启后恢复未完成的消息发送。
|
|
5
|
+
* 使用 JSON 文件存储队列数据,提供同步 API 进行增删改查操作。
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 正在发送中的消息
|
|
9
|
+
*/
|
|
10
|
+
export interface InFlightMessage {
|
|
11
|
+
/** 唯一 ID (格式: chatId:topicId:timestamp) */
|
|
12
|
+
id: string;
|
|
13
|
+
/** Telegram 群组 ID */
|
|
14
|
+
chatId: number;
|
|
15
|
+
/** Telegram 主题 ID */
|
|
16
|
+
topicId: number;
|
|
17
|
+
/** OpenCode 会话 ID */
|
|
18
|
+
sessionId: string;
|
|
19
|
+
/** 原始用户消息 */
|
|
20
|
+
message: string;
|
|
21
|
+
/** 项目路径 */
|
|
22
|
+
projectPath: string;
|
|
23
|
+
/** Agent 名称(可选) */
|
|
24
|
+
agent?: string;
|
|
25
|
+
/** Model 名称(可选) */
|
|
26
|
+
model?: string;
|
|
27
|
+
/** 创建时间 (ISO 8601) */
|
|
28
|
+
createdAt: string;
|
|
29
|
+
/** Telegram 状态消息 ID(用于清理,可选) */
|
|
30
|
+
statusMessageId?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 添加正在发送中的消息
|
|
34
|
+
*
|
|
35
|
+
* @param msg - 消息数据(不包含 id 和 createdAt)
|
|
36
|
+
* @returns 添加的完整消息对象
|
|
37
|
+
*/
|
|
38
|
+
export declare function addInflightMessage(msg: Omit<InFlightMessage, 'id' | 'createdAt'>): InFlightMessage;
|
|
39
|
+
/**
|
|
40
|
+
* 移除正在发送中的消息
|
|
41
|
+
*
|
|
42
|
+
* @param id - 消息 ID
|
|
43
|
+
*/
|
|
44
|
+
export declare function removeInflightMessage(id: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* 获取所有正在发送中的消息
|
|
47
|
+
*
|
|
48
|
+
* @returns 消息列表
|
|
49
|
+
*/
|
|
50
|
+
export declare function getInflightMessages(): InFlightMessage[];
|
|
51
|
+
/**
|
|
52
|
+
* 根据会话 ID 获取正在发送中的消息
|
|
53
|
+
*
|
|
54
|
+
* @param sessionId - OpenCode 会话 ID
|
|
55
|
+
* @returns 该会话的消息列表
|
|
56
|
+
*/
|
|
57
|
+
export declare function getInflightBySession(sessionId: string): InFlightMessage[];
|
|
58
|
+
/**
|
|
59
|
+
* 清除过期的消息
|
|
60
|
+
*
|
|
61
|
+
* @param maxAgeMs - 最大年龄(毫秒),默认 30 分钟
|
|
62
|
+
*/
|
|
63
|
+
export declare function clearStaleMessages(maxAgeMs?: number): void;
|
|
64
|
+
//# sourceMappingURL=message-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-queue.d.ts","sourceRoot":"","sources":["../../src/shared/message-queue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAmED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,WAAW,CAAC,GAC7C,eAAe,CAsBjB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAUtD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE,CAGzE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,GAAE,MAAuB,GAAG,IAAI,CAgB1E"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 消息队列管理模块
|
|
3
|
+
*
|
|
4
|
+
* 负责管理正在发送中的消息(in-flight messages),用于在进程重启后恢复未完成的消息发送。
|
|
5
|
+
* 使用 JSON 文件存储队列数据,提供同步 API 进行增删改查操作。
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import * as os from 'node:os';
|
|
10
|
+
/**
|
|
11
|
+
* 队列文件路径
|
|
12
|
+
*/
|
|
13
|
+
const QUEUE_FILE_PATH = path.join(os.homedir(), '.config', 'opencode', 'inflight-messages.json');
|
|
14
|
+
/**
|
|
15
|
+
* 从文件加载队列数据
|
|
16
|
+
*
|
|
17
|
+
* @returns 队列数据对象
|
|
18
|
+
* @throws 如果文件格式错误
|
|
19
|
+
*/
|
|
20
|
+
function loadQueue() {
|
|
21
|
+
try {
|
|
22
|
+
// 如果文件不存在,返回空队列
|
|
23
|
+
if (!fs.existsSync(QUEUE_FILE_PATH)) {
|
|
24
|
+
return { messages: [] };
|
|
25
|
+
}
|
|
26
|
+
// 读取并解析 JSON 文件
|
|
27
|
+
const content = fs.readFileSync(QUEUE_FILE_PATH, 'utf-8');
|
|
28
|
+
const data = JSON.parse(content);
|
|
29
|
+
// 验证数据格式
|
|
30
|
+
if (!data.messages || !Array.isArray(data.messages)) {
|
|
31
|
+
throw new Error('Invalid queue data: messages must be an array');
|
|
32
|
+
}
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error instanceof SyntaxError) {
|
|
37
|
+
throw new Error(`Failed to parse queue file: ${error.message}`);
|
|
38
|
+
}
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 保存队列数据到文件
|
|
44
|
+
*
|
|
45
|
+
* @param data - 队列数据对象
|
|
46
|
+
*/
|
|
47
|
+
function saveQueue(data) {
|
|
48
|
+
// 确保配置目录存在
|
|
49
|
+
const configDir = path.dirname(QUEUE_FILE_PATH);
|
|
50
|
+
if (!fs.existsSync(configDir)) {
|
|
51
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
52
|
+
}
|
|
53
|
+
// 序列化为 JSON(格式化,缩进 2 空格)
|
|
54
|
+
const content = JSON.stringify(data, null, 2);
|
|
55
|
+
// 写入文件
|
|
56
|
+
fs.writeFileSync(QUEUE_FILE_PATH, content, 'utf-8');
|
|
57
|
+
// 设置文件权限为 600(仅所有者可读写)
|
|
58
|
+
fs.chmodSync(QUEUE_FILE_PATH, 0o600);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 添加正在发送中的消息
|
|
62
|
+
*
|
|
63
|
+
* @param msg - 消息数据(不包含 id 和 createdAt)
|
|
64
|
+
* @returns 添加的完整消息对象
|
|
65
|
+
*/
|
|
66
|
+
export function addInflightMessage(msg) {
|
|
67
|
+
const queue = loadQueue();
|
|
68
|
+
// 生成唯一 ID
|
|
69
|
+
const timestamp = Date.now();
|
|
70
|
+
const id = `${msg.chatId}:${msg.topicId}:${timestamp}`;
|
|
71
|
+
// 创建完整消息对象
|
|
72
|
+
const message = {
|
|
73
|
+
...msg,
|
|
74
|
+
id,
|
|
75
|
+
createdAt: new Date().toISOString(),
|
|
76
|
+
};
|
|
77
|
+
// 添加到队列
|
|
78
|
+
queue.messages.push(message);
|
|
79
|
+
// 保存到文件
|
|
80
|
+
saveQueue(queue);
|
|
81
|
+
console.log(`[Queue] 添加消息到队列: ${id}`);
|
|
82
|
+
return message;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 移除正在发送中的消息
|
|
86
|
+
*
|
|
87
|
+
* @param id - 消息 ID
|
|
88
|
+
*/
|
|
89
|
+
export function removeInflightMessage(id) {
|
|
90
|
+
const queue = loadQueue();
|
|
91
|
+
// 查找并移除消息
|
|
92
|
+
const index = queue.messages.findIndex(m => m.id === id);
|
|
93
|
+
if (index !== -1) {
|
|
94
|
+
queue.messages.splice(index, 1);
|
|
95
|
+
saveQueue(queue);
|
|
96
|
+
console.log(`[Queue] 从队列移除消息: ${id}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 获取所有正在发送中的消息
|
|
101
|
+
*
|
|
102
|
+
* @returns 消息列表
|
|
103
|
+
*/
|
|
104
|
+
export function getInflightMessages() {
|
|
105
|
+
const queue = loadQueue();
|
|
106
|
+
return queue.messages;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 根据会话 ID 获取正在发送中的消息
|
|
110
|
+
*
|
|
111
|
+
* @param sessionId - OpenCode 会话 ID
|
|
112
|
+
* @returns 该会话的消息列表
|
|
113
|
+
*/
|
|
114
|
+
export function getInflightBySession(sessionId) {
|
|
115
|
+
const queue = loadQueue();
|
|
116
|
+
return queue.messages.filter(m => m.sessionId === sessionId);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* 清除过期的消息
|
|
120
|
+
*
|
|
121
|
+
* @param maxAgeMs - 最大年龄(毫秒),默认 30 分钟
|
|
122
|
+
*/
|
|
123
|
+
export function clearStaleMessages(maxAgeMs = 30 * 60 * 1000) {
|
|
124
|
+
const queue = loadQueue();
|
|
125
|
+
const now = Date.now();
|
|
126
|
+
// 过滤出未过期的消息
|
|
127
|
+
const before = queue.messages.length;
|
|
128
|
+
queue.messages = queue.messages.filter(m => {
|
|
129
|
+
const age = now - new Date(m.createdAt).getTime();
|
|
130
|
+
return age < maxAgeMs;
|
|
131
|
+
});
|
|
132
|
+
const removed = before - queue.messages.length;
|
|
133
|
+
if (removed > 0) {
|
|
134
|
+
saveQueue(queue);
|
|
135
|
+
console.log(`[Queue] 清除 ${removed} 条过期消息`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=message-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-queue.js","sourceRoot":"","sources":["../../src/shared/message-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode Channels 类型定义
|
|
3
|
+
*
|
|
4
|
+
* 定义整个项目的核心类型系统,包括配置、映射、事件和 API 类型
|
|
5
|
+
*/
|
|
6
|
+
import type { Context } from 'grammy';
|
|
7
|
+
import type { CommandsFlavor } from '@grammyjs/commands';
|
|
8
|
+
/**
|
|
9
|
+
* Telegram 配置
|
|
10
|
+
*/
|
|
11
|
+
export interface TelegramConfig {
|
|
12
|
+
/** 是否启用 Telegram */
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
/** Telegram Bot Token */
|
|
15
|
+
token: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 渠道配置
|
|
19
|
+
*/
|
|
20
|
+
export interface ChannelsConfig {
|
|
21
|
+
telegram: TelegramConfig;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Server 配置
|
|
25
|
+
*/
|
|
26
|
+
export interface ServerConfig {
|
|
27
|
+
/** Server 端口 */
|
|
28
|
+
port: number;
|
|
29
|
+
/** Server 地址 */
|
|
30
|
+
host: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 通知配置
|
|
34
|
+
*/
|
|
35
|
+
export interface NotificationConfig {
|
|
36
|
+
/** 转发权限请求 (permission.asked) */
|
|
37
|
+
onPermission: boolean;
|
|
38
|
+
/** 任务完成通知 (session.idle) */
|
|
39
|
+
onComplete: boolean;
|
|
40
|
+
/** 错误警告 (session.error) */
|
|
41
|
+
onError: boolean;
|
|
42
|
+
/** 空闲状态通知 (session.idle) */
|
|
43
|
+
onIdle: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 完整配置对象
|
|
47
|
+
*/
|
|
48
|
+
export interface Config {
|
|
49
|
+
/** 工作空间目录(创建新项目的根目录) */
|
|
50
|
+
workspace: string;
|
|
51
|
+
/** 渠道配置 */
|
|
52
|
+
channels: ChannelsConfig;
|
|
53
|
+
/** Server 配置 */
|
|
54
|
+
server: ServerConfig;
|
|
55
|
+
/** 通知配置 */
|
|
56
|
+
notifications: NotificationConfig;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 群组映射:Telegram 群组 → OpenCode 项目
|
|
60
|
+
*/
|
|
61
|
+
export interface GroupMapping {
|
|
62
|
+
/** Telegram 群组 ID */
|
|
63
|
+
chatId: number;
|
|
64
|
+
/** 项目路径 */
|
|
65
|
+
projectPath: string;
|
|
66
|
+
/** 群组设置(可选) */
|
|
67
|
+
settings?: GroupSettings;
|
|
68
|
+
/** 创建时间 (ISO 8601) */
|
|
69
|
+
createdAt: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 主题映射:Telegram 主题 → OpenCode 会话
|
|
73
|
+
*/
|
|
74
|
+
export interface TopicMapping {
|
|
75
|
+
/** Telegram 群组 ID */
|
|
76
|
+
chatId: number;
|
|
77
|
+
/** Telegram 主题 ID */
|
|
78
|
+
topicId: number;
|
|
79
|
+
/** OpenCode 会话 ID */
|
|
80
|
+
sessionId: string;
|
|
81
|
+
/** 创建时间 (ISO 8601) */
|
|
82
|
+
createdAt: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 映射数据存储结构
|
|
86
|
+
*/
|
|
87
|
+
export interface MappingData {
|
|
88
|
+
/** 群组映射列表 */
|
|
89
|
+
groups: GroupMapping[];
|
|
90
|
+
/** 主题映射列表 */
|
|
91
|
+
topics: TopicMapping[];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 群组设置
|
|
95
|
+
*/
|
|
96
|
+
export interface GroupSettings {
|
|
97
|
+
/** 默认 Agent */
|
|
98
|
+
agent?: string;
|
|
99
|
+
/** 默认 Model (provider/model) */
|
|
100
|
+
model?: string;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 待重试消息
|
|
104
|
+
*/
|
|
105
|
+
export interface PendingRetry {
|
|
106
|
+
chatId: number;
|
|
107
|
+
topicId: number;
|
|
108
|
+
sessionId: string;
|
|
109
|
+
message: string;
|
|
110
|
+
projectPath?: string;
|
|
111
|
+
agent?: string;
|
|
112
|
+
model?: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* OpenCode 事件类型
|
|
116
|
+
*/
|
|
117
|
+
export type EventType = "permission.updated" | "permission.asked" | "session.idle" | "session.error" | "question.asked";
|
|
118
|
+
/**
|
|
119
|
+
* 事件属性
|
|
120
|
+
*/
|
|
121
|
+
export interface EventProperties {
|
|
122
|
+
/** 会话 ID(可选) */
|
|
123
|
+
sessionID?: string;
|
|
124
|
+
/** 其他动态属性 */
|
|
125
|
+
[key: string]: unknown;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* OpenCode 事件对象
|
|
129
|
+
*/
|
|
130
|
+
export interface OpenCodeEvent {
|
|
131
|
+
/** 事件类型 */
|
|
132
|
+
type: EventType;
|
|
133
|
+
/** 事件属性 */
|
|
134
|
+
properties: EventProperties;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* API 请求:接收事件
|
|
138
|
+
*/
|
|
139
|
+
export interface APIRequest {
|
|
140
|
+
/** 事件类型 */
|
|
141
|
+
type: EventType;
|
|
142
|
+
/** 事件属性 */
|
|
143
|
+
properties: EventProperties;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* API 响应:通用成功响应
|
|
147
|
+
*/
|
|
148
|
+
export interface APIResponse {
|
|
149
|
+
/** 是否成功 */
|
|
150
|
+
success: boolean;
|
|
151
|
+
/** 错误消息(可选) */
|
|
152
|
+
error?: string;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Telegram 状态信息
|
|
156
|
+
*/
|
|
157
|
+
export interface TelegramStatus {
|
|
158
|
+
/** 是否已连接 */
|
|
159
|
+
connected: boolean;
|
|
160
|
+
/** Bot 用户名 */
|
|
161
|
+
bot: string;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* 映射统计信息
|
|
165
|
+
*/
|
|
166
|
+
export interface MappingStats {
|
|
167
|
+
/** 群组映射数量 */
|
|
168
|
+
groups: number;
|
|
169
|
+
/** 主题映射数量 */
|
|
170
|
+
topics: number;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* API 响应:服务状态
|
|
174
|
+
*/
|
|
175
|
+
export interface StatusResponse {
|
|
176
|
+
/** 服务是否运行 */
|
|
177
|
+
running: boolean;
|
|
178
|
+
/** Telegram 状态 */
|
|
179
|
+
telegram: TelegramStatus;
|
|
180
|
+
/** 映射统计 */
|
|
181
|
+
mappings: MappingStats;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* SDK Agent 信息
|
|
185
|
+
*/
|
|
186
|
+
export interface AgentInfo {
|
|
187
|
+
name: string;
|
|
188
|
+
description?: string;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* SDK Model 信息
|
|
192
|
+
*/
|
|
193
|
+
export interface ModelInfo {
|
|
194
|
+
id: string;
|
|
195
|
+
name: string;
|
|
196
|
+
family?: string;
|
|
197
|
+
release_date?: string;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* SDK Provider 信息
|
|
201
|
+
*/
|
|
202
|
+
export interface ProviderInfo {
|
|
203
|
+
id: string;
|
|
204
|
+
name: string;
|
|
205
|
+
models: ModelInfo[];
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* 会话信息
|
|
209
|
+
*/
|
|
210
|
+
export interface SessionInfo {
|
|
211
|
+
sessionId: string;
|
|
212
|
+
agent?: string;
|
|
213
|
+
modelId?: string;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Bot Context 类型
|
|
217
|
+
*/
|
|
218
|
+
export interface BotContext extends Context, CommandsFlavor<Context> {
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* API 请求:添加群组映射
|
|
222
|
+
*/
|
|
223
|
+
export interface AddGroupMappingRequest {
|
|
224
|
+
/** Telegram 群组 ID */
|
|
225
|
+
chatId: number;
|
|
226
|
+
/** 项目路径 */
|
|
227
|
+
projectPath: string;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* SDK Command 信息(从 OpenCode Server 获取)
|
|
231
|
+
*/
|
|
232
|
+
export interface CommandInfo {
|
|
233
|
+
/** 指令名 */
|
|
234
|
+
name: string;
|
|
235
|
+
/** 描述 */
|
|
236
|
+
description?: string;
|
|
237
|
+
/** 指定 agent */
|
|
238
|
+
agent?: string;
|
|
239
|
+
/** 指定 model */
|
|
240
|
+
model?: string;
|
|
241
|
+
/** 来源类型 */
|
|
242
|
+
source?: 'command' | 'mcp' | 'skill';
|
|
243
|
+
/** 指令模板 */
|
|
244
|
+
template: string;
|
|
245
|
+
/** 是否是子任务 */
|
|
246
|
+
subtask?: boolean;
|
|
247
|
+
/** 提示信息 */
|
|
248
|
+
hints: string[];
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* 注册的 Telegram 指令(内部使用)
|
|
252
|
+
*/
|
|
253
|
+
export interface RegisteredCommand {
|
|
254
|
+
/** Telegram 指令名(带前缀,如 "cmd_commit") */
|
|
255
|
+
telegramCmd: string;
|
|
256
|
+
/** SDK 原始指令名(如 "commit") */
|
|
257
|
+
sdkName: string;
|
|
258
|
+
/** 来源类型 */
|
|
259
|
+
source: 'command' | 'mcp' | 'skill';
|
|
260
|
+
/** 描述 */
|
|
261
|
+
description?: string;
|
|
262
|
+
/** 指令模板 */
|
|
263
|
+
template: string;
|
|
264
|
+
/** 是否需要参数(模板中包含参数占位符) */
|
|
265
|
+
needsArgs: boolean;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* 等待用户输入参数的指令状态
|
|
269
|
+
*/
|
|
270
|
+
export interface PendingCommand {
|
|
271
|
+
/** 群组 ID */
|
|
272
|
+
chatId: number;
|
|
273
|
+
/** 主题 ID */
|
|
274
|
+
topicId: number;
|
|
275
|
+
/** 用户 ID */
|
|
276
|
+
userId: number;
|
|
277
|
+
/** SDK 指令名 */
|
|
278
|
+
commandName: string;
|
|
279
|
+
/** 来源类型 */
|
|
280
|
+
source: 'command' | 'mcp' | 'skill';
|
|
281
|
+
/** 创建时间戳 */
|
|
282
|
+
timestamp: number;
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
package/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './src/plugin/index.ts';
|
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "opencode-channels",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "OpenCode Channels - Multi-channel integration for OpenCode AI",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"opencode-channels": "./bin/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"exports": {
|
|
10
|
+
".": "./index.js",
|
|
11
|
+
"./plugin": "./dist/plugin/index.js"
|
|
12
|
+
},
|
|
13
|
+
"opencode": {
|
|
14
|
+
"plugin": "./dist/plugin/index.js"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"prepublishOnly": "npm run build",
|
|
19
|
+
"dev": "bun run bin/cli.ts",
|
|
20
|
+
"dev:init": "bun run bin/cli.ts init",
|
|
21
|
+
"dev:start": "bun run bin/cli.ts start",
|
|
22
|
+
"dev:daemon": "bun run bin/cli.ts daemon",
|
|
23
|
+
"dev:status": "bun run bin/cli.ts status",
|
|
24
|
+
"dev:logs": "bun run bin/cli.ts logs",
|
|
25
|
+
"dev:log": "bun run bin/cli.ts log",
|
|
26
|
+
"dev:log:follow": "bun run bin/cli.ts log --follow",
|
|
27
|
+
"dev:log:clear": "bun run bin/cli.ts log --clear",
|
|
28
|
+
"dev:restart": "bun run bin/cli.ts restart",
|
|
29
|
+
"dev:stop": "bun run bin/cli.ts stop",
|
|
30
|
+
"dev:opencode-server": "bun run scripts/start-opencode-server.ts",
|
|
31
|
+
"test": "bun test",
|
|
32
|
+
"test:watch": "bun test --watch",
|
|
33
|
+
"test:coverage": "bun test --coverage"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"opencode",
|
|
37
|
+
"ai",
|
|
38
|
+
"telegram",
|
|
39
|
+
"bot",
|
|
40
|
+
"cli"
|
|
41
|
+
],
|
|
42
|
+
"author": "emmgame168@gmail.com",
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@hono/node-server": "^1.19.9",
|
|
46
|
+
"@opencode-ai/sdk": "^1.2.6",
|
|
47
|
+
"commander": "^12.1.0",
|
|
48
|
+
"grammy": "^1.32.0",
|
|
49
|
+
"hono": "^4.7.11",
|
|
50
|
+
"inquirer": "^12.3.0",
|
|
51
|
+
"luxon": "^3.7.2",
|
|
52
|
+
"pm2": "^5.4.3"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@opencode-ai/plugin": "^1.2.6",
|
|
56
|
+
"@types/luxon": "^3.7.1",
|
|
57
|
+
"@types/node": "^22.10.5",
|
|
58
|
+
"bun-types": "^1.2.4",
|
|
59
|
+
"typescript": "^5.7.3"
|
|
60
|
+
},
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": ">=18.0.0"
|
|
63
|
+
},
|
|
64
|
+
"files": [
|
|
65
|
+
"bin/",
|
|
66
|
+
"dist/",
|
|
67
|
+
"index.js",
|
|
68
|
+
"README.md",
|
|
69
|
+
"LICENSE"
|
|
70
|
+
]
|
|
71
|
+
}
|