@openclaw-china/channels 0.1.1
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/clawdbot.plugin.json +12 -0
- package/dist/index.d.ts +96 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/moltbot.plugin.json +12 -0
- package/package.json +61 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export { DEFAULT_ACCOUNT_ID as DINGTALK_DEFAULT_ACCOUNT_ID, DingtalkConfig, DingtalkSendResult, ResolvedDingtalkAccount, dingtalkPlugin, getDingtalkRuntime, sendMessageDingtalk, setDingtalkRuntime } from '@moltbot-china/dingtalk';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @moltbot-china/channels
|
|
5
|
+
* 统一渠道包入口
|
|
6
|
+
*
|
|
7
|
+
* 导出所有渠道插件,提供统一注册函数
|
|
8
|
+
*
|
|
9
|
+
* Requirements: Unified Package Entry, Unified Distribution
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 渠道配置接口
|
|
14
|
+
*/
|
|
15
|
+
interface ChannelConfig {
|
|
16
|
+
/** 是否启用该渠道 */
|
|
17
|
+
enabled?: boolean;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Moltbot 配置接口(符合官方约定)
|
|
22
|
+
* 配置路径: channels.<id>.enabled
|
|
23
|
+
*/
|
|
24
|
+
interface MoltbotConfig {
|
|
25
|
+
channels?: {
|
|
26
|
+
dingtalk?: ChannelConfig;
|
|
27
|
+
feishu?: ChannelConfig;
|
|
28
|
+
wecom?: ChannelConfig;
|
|
29
|
+
qq?: ChannelConfig;
|
|
30
|
+
[key: string]: ChannelConfig | undefined;
|
|
31
|
+
};
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Moltbot 插件 API 接口
|
|
36
|
+
*/
|
|
37
|
+
interface MoltbotPluginApi {
|
|
38
|
+
registerChannel: (opts: {
|
|
39
|
+
plugin: unknown;
|
|
40
|
+
}) => void;
|
|
41
|
+
runtime?: unknown;
|
|
42
|
+
config?: MoltbotConfig;
|
|
43
|
+
[key: string]: unknown;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 支持的渠道列表
|
|
47
|
+
*/
|
|
48
|
+
declare const SUPPORTED_CHANNELS: readonly ["dingtalk"];
|
|
49
|
+
type SupportedChannel = (typeof SUPPORTED_CHANNELS)[number];
|
|
50
|
+
/**
|
|
51
|
+
* 根据 Moltbot 配置注册启用的渠道
|
|
52
|
+
*
|
|
53
|
+
* 符合 Moltbot 官方约定:从 cfg.channels.<id>.enabled 读取配置
|
|
54
|
+
*
|
|
55
|
+
* @param api Moltbot 插件 API
|
|
56
|
+
* @param cfg Moltbot 配置(可选,默认从 api.config 读取)
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* // moltbot.json 配置
|
|
61
|
+
* {
|
|
62
|
+
* "channels": {
|
|
63
|
+
* "dingtalk": {
|
|
64
|
+
* "enabled": true,
|
|
65
|
+
* "clientId": "...",
|
|
66
|
+
* "clientSecret": "..."
|
|
67
|
+
* }
|
|
68
|
+
* }
|
|
69
|
+
* }
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
declare function registerChannelsByConfig(api: MoltbotPluginApi, cfg?: MoltbotConfig): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* 统一渠道插件定义
|
|
75
|
+
*
|
|
76
|
+
* 包含所有支持的渠道,通过配置启用
|
|
77
|
+
* 配置路径符合 Moltbot 官方约定: channels.<id>
|
|
78
|
+
*/
|
|
79
|
+
declare const channelsPlugin: {
|
|
80
|
+
id: string;
|
|
81
|
+
name: string;
|
|
82
|
+
description: string;
|
|
83
|
+
configSchema: {
|
|
84
|
+
type: string;
|
|
85
|
+
additionalProperties: boolean;
|
|
86
|
+
properties: {};
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* 注册所有启用的渠道
|
|
90
|
+
*
|
|
91
|
+
* 从 api.config.channels.<id>.enabled 读取配置
|
|
92
|
+
*/
|
|
93
|
+
register(api: MoltbotPluginApi): Promise<void>;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export { type ChannelConfig, type MoltbotConfig, type MoltbotPluginApi, SUPPORTED_CHANNELS, type SupportedChannel, channelsPlugin as default, registerChannelsByConfig };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export { DEFAULT_ACCOUNT_ID as DINGTALK_DEFAULT_ACCOUNT_ID, dingtalkPlugin, getDingtalkRuntime, sendMessageDingtalk, setDingtalkRuntime } from '@moltbot-china/dingtalk';
|
|
2
|
+
|
|
3
|
+
// src/index.ts
|
|
4
|
+
var SUPPORTED_CHANNELS = ["dingtalk"];
|
|
5
|
+
function getChannelPlugin(channelId) {
|
|
6
|
+
switch (channelId) {
|
|
7
|
+
case "dingtalk":
|
|
8
|
+
return import('@moltbot-china/dingtalk').then((m) => m.default);
|
|
9
|
+
// TODO: 后续添加其他渠道
|
|
10
|
+
// case "feishu":
|
|
11
|
+
// return import("@moltbot-china/feishu").then((m) => m.default);
|
|
12
|
+
default:
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
async function registerChannelsByConfig(api, cfg) {
|
|
17
|
+
const config = cfg ?? api.config;
|
|
18
|
+
const channelsConfig = config?.channels;
|
|
19
|
+
if (!channelsConfig) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
for (const channelId of SUPPORTED_CHANNELS) {
|
|
23
|
+
const channelConfig = channelsConfig[channelId];
|
|
24
|
+
if (!channelConfig?.enabled) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const plugin = await getChannelPlugin(channelId);
|
|
28
|
+
if (plugin && typeof plugin.register === "function") {
|
|
29
|
+
plugin.register(api);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
var channelsPlugin = {
|
|
34
|
+
id: "channels",
|
|
35
|
+
name: "Moltbot China Channels",
|
|
36
|
+
description: "\u7EDF\u4E00\u6E20\u9053\u5305\uFF0C\u652F\u6301\u9489\u9489\u3001\u98DE\u4E66\u3001\u4F01\u4E1A\u5FAE\u4FE1\u3001QQ",
|
|
37
|
+
configSchema: {
|
|
38
|
+
type: "object",
|
|
39
|
+
additionalProperties: false,
|
|
40
|
+
properties: {}
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* 注册所有启用的渠道
|
|
44
|
+
*
|
|
45
|
+
* 从 api.config.channels.<id>.enabled 读取配置
|
|
46
|
+
*/
|
|
47
|
+
async register(api) {
|
|
48
|
+
await registerChannelsByConfig(api);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
var index_default = channelsPlugin;
|
|
52
|
+
|
|
53
|
+
export { SUPPORTED_CHANNELS, index_default as default, registerChannelsByConfig };
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
55
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AAkEO,IAAM,kBAAA,GAAqB,CAAC,UAAU;AAQ7C,SAAS,iBAAiB,SAAA,EAA6B;AACrD,EAAA,QAAQ,SAAA;AAAW,IACjB,KAAK,UAAA;AAEH,MAAA,OAAO,OAAO,yBAAyB,CAAA,CAAE,KAAK,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA,IAIhE;AACE,MAAA,OAAO,IAAA;AAAA;AAEb;AAwBA,eAAsB,wBAAA,CACpB,KACA,GAAA,EACe;AAEf,EAAA,MAAM,MAAA,GAAS,OAAO,GAAA,CAAI,MAAA;AAC1B,EAAA,MAAM,iBAAiB,MAAA,EAAQ,QAAA;AAE/B,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,aAAa,kBAAA,EAAoB;AAE1C,IAAA,MAAM,aAAA,GAAgB,eAAe,SAAS,CAAA;AAG9C,IAAA,IAAI,CAAC,eAAe,OAAA,EAAS;AAC3B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,MAAM,gBAAA,CAAiB,SAAS,CAAA;AAC/C,IAAA,IAAI,MAAA,IAAU,OAAO,MAAA,CAAO,QAAA,KAAa,UAAA,EAAY;AACnD,MAAA,MAAA,CAAO,SAAS,GAAG,CAAA;AAAA,IACrB;AAAA,EACF;AACF;AAQA,IAAM,cAAA,GAAiB;AAAA,EACrB,EAAA,EAAI,UAAA;AAAA,EACJ,IAAA,EAAM,wBAAA;AAAA,EACN,WAAA,EAAa,sHAAA;AAAA,EAEb,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,QAAA;AAAA,IACN,oBAAA,EAAsB,KAAA;AAAA,IACtB,YAAY;AAAC,GACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,SAAS,GAAA,EAAuB;AACpC,IAAA,MAAM,yBAAyB,GAAG,CAAA;AAAA,EACpC;AACF,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"index.js","sourcesContent":["/**\n * @moltbot-china/channels\n * 统一渠道包入口\n *\n * 导出所有渠道插件,提供统一注册函数\n *\n * Requirements: Unified Package Entry, Unified Distribution\n */\n\n// 导出 DingTalk 插件\nexport {\n dingtalkPlugin,\n DEFAULT_ACCOUNT_ID as DINGTALK_DEFAULT_ACCOUNT_ID,\n sendMessageDingtalk,\n setDingtalkRuntime,\n getDingtalkRuntime,\n} from \"@moltbot-china/dingtalk\";\n\nexport type {\n DingtalkConfig,\n ResolvedDingtalkAccount,\n DingtalkSendResult,\n} from \"@moltbot-china/dingtalk\";\n\n// TODO: 后续添加其他渠道\n// export { feishuPlugin } from \"@moltbot-china/feishu\";\n// export { wecomPlugin } from \"@moltbot-china/wecom\";\n// export { qqPlugin } from \"@moltbot-china/qq\";\n\n/**\n * 渠道配置接口\n */\nexport interface ChannelConfig {\n /** 是否启用该渠道 */\n enabled?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * Moltbot 配置接口(符合官方约定)\n * 配置路径: channels.<id>.enabled\n */\nexport interface MoltbotConfig {\n channels?: {\n dingtalk?: ChannelConfig;\n feishu?: ChannelConfig;\n wecom?: ChannelConfig;\n qq?: ChannelConfig;\n [key: string]: ChannelConfig | undefined;\n };\n [key: string]: unknown;\n}\n\n/**\n * Moltbot 插件 API 接口\n */\nexport interface MoltbotPluginApi {\n registerChannel: (opts: { plugin: unknown }) => void;\n runtime?: unknown;\n config?: MoltbotConfig;\n [key: string]: unknown;\n}\n\n/**\n * 支持的渠道列表\n */\nexport const SUPPORTED_CHANNELS = [\"dingtalk\"] as const;\n// TODO: 后续添加 \"feishu\", \"wecom\", \"qq\"\n\nexport type SupportedChannel = (typeof SUPPORTED_CHANNELS)[number];\n\n/**\n * 获取渠道插件\n */\nfunction getChannelPlugin(channelId: SupportedChannel) {\n switch (channelId) {\n case \"dingtalk\":\n // 动态导入以避免循环依赖\n return import(\"@moltbot-china/dingtalk\").then((m) => m.default);\n // TODO: 后续添加其他渠道\n // case \"feishu\":\n // return import(\"@moltbot-china/feishu\").then((m) => m.default);\n default:\n return null;\n }\n}\n\n/**\n * 根据 Moltbot 配置注册启用的渠道\n *\n * 符合 Moltbot 官方约定:从 cfg.channels.<id>.enabled 读取配置\n *\n * @param api Moltbot 插件 API\n * @param cfg Moltbot 配置(可选,默认从 api.config 读取)\n *\n * @example\n * ```ts\n * // moltbot.json 配置\n * {\n * \"channels\": {\n * \"dingtalk\": {\n * \"enabled\": true,\n * \"clientId\": \"...\",\n * \"clientSecret\": \"...\"\n * }\n * }\n * }\n * ```\n */\nexport async function registerChannelsByConfig(\n api: MoltbotPluginApi,\n cfg?: MoltbotConfig\n): Promise<void> {\n // 从 api.config 或传入的 cfg 获取配置\n const config = cfg ?? api.config;\n const channelsConfig = config?.channels;\n\n if (!channelsConfig) {\n return;\n }\n\n for (const channelId of SUPPORTED_CHANNELS) {\n // 符合官方约定:从 channels.<id>.enabled 读取\n const channelConfig = channelsConfig[channelId];\n\n // 跳过未启用的渠道\n if (!channelConfig?.enabled) {\n continue;\n }\n\n const plugin = await getChannelPlugin(channelId);\n if (plugin && typeof plugin.register === \"function\") {\n plugin.register(api);\n }\n }\n}\n\n/**\n * 统一渠道插件定义\n *\n * 包含所有支持的渠道,通过配置启用\n * 配置路径符合 Moltbot 官方约定: channels.<id>\n */\nconst channelsPlugin = {\n id: \"channels\",\n name: \"Moltbot China Channels\",\n description: \"统一渠道包,支持钉钉、飞书、企业微信、QQ\",\n\n configSchema: {\n type: \"object\",\n additionalProperties: false,\n properties: {},\n },\n\n /**\n * 注册所有启用的渠道\n *\n * 从 api.config.channels.<id>.enabled 读取配置\n */\n async register(api: MoltbotPluginApi) {\n await registerChannelsByConfig(api);\n },\n};\n\nexport default channelsPlugin;\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@openclaw-china/channels",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Unified package for all Moltbot China channel plugins",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"moltbot.plugin.json",
|
|
10
|
+
"clawdbot.plugin.json"
|
|
11
|
+
],
|
|
12
|
+
"main": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"default": "./dist/index.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"moltbot": {
|
|
21
|
+
"extensions": [
|
|
22
|
+
"./dist/index.js"
|
|
23
|
+
],
|
|
24
|
+
"install": {
|
|
25
|
+
"npmSpec": "@openclaw-china/channels",
|
|
26
|
+
"localPath": ".",
|
|
27
|
+
"defaultChoice": "npm"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"clawdbot": {
|
|
31
|
+
"extensions": [
|
|
32
|
+
"./dist/index.js"
|
|
33
|
+
],
|
|
34
|
+
"install": {
|
|
35
|
+
"npmSpec": "@openclaw-china/channels",
|
|
36
|
+
"localPath": ".",
|
|
37
|
+
"defaultChoice": "npm"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsup",
|
|
42
|
+
"dev": "tsup --watch",
|
|
43
|
+
"clean": "rimraf dist"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@openclaw-china/dingtalk": "workspace:*"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/node": "^22.0.0",
|
|
50
|
+
"tsup": "^8.2.0",
|
|
51
|
+
"typescript": "^5.7.0"
|
|
52
|
+
},
|
|
53
|
+
"peerDependencies": {
|
|
54
|
+
"moltbot": ">=0.1.0"
|
|
55
|
+
},
|
|
56
|
+
"peerDependenciesMeta": {
|
|
57
|
+
"moltbot": {
|
|
58
|
+
"optional": true
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|