feishu-openclaw 0.3.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/LICENSE +21 -0
- package/README.md +107 -0
- package/clawdbot.plugin.json +12 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/src/accounts.d.ts +17 -0
- package/dist/src/accounts.d.ts.map +1 -0
- package/dist/src/accounts.js +81 -0
- package/dist/src/accounts.js.map +1 -0
- package/dist/src/channel.d.ts +8 -0
- package/dist/src/channel.d.ts.map +1 -0
- package/dist/src/channel.js +373 -0
- package/dist/src/channel.js.map +1 -0
- package/dist/src/config-json-schema.d.ts +100 -0
- package/dist/src/config-json-schema.d.ts.map +1 -0
- package/dist/src/config-json-schema.js +42 -0
- package/dist/src/config-json-schema.js.map +1 -0
- package/dist/src/dedup.d.ts +8 -0
- package/dist/src/dedup.d.ts.map +1 -0
- package/dist/src/dedup.js +25 -0
- package/dist/src/dedup.js.map +1 -0
- package/dist/src/group-filter.d.ts +15 -0
- package/dist/src/group-filter.d.ts.map +1 -0
- package/dist/src/group-filter.js +44 -0
- package/dist/src/group-filter.js.map +1 -0
- package/dist/src/media.d.ts +21 -0
- package/dist/src/media.d.ts.map +1 -0
- package/dist/src/media.js +133 -0
- package/dist/src/media.js.map +1 -0
- package/dist/src/onboarding.d.ts +51 -0
- package/dist/src/onboarding.d.ts.map +1 -0
- package/dist/src/onboarding.js +213 -0
- package/dist/src/onboarding.js.map +1 -0
- package/dist/src/probe.d.ts +10 -0
- package/dist/src/probe.d.ts.map +1 -0
- package/dist/src/probe.js +48 -0
- package/dist/src/probe.js.map +1 -0
- package/dist/src/receive.d.ts +25 -0
- package/dist/src/receive.d.ts.map +1 -0
- package/dist/src/receive.js +217 -0
- package/dist/src/receive.js.map +1 -0
- package/dist/src/runtime.d.ts +7 -0
- package/dist/src/runtime.d.ts.map +1 -0
- package/dist/src/runtime.js +14 -0
- package/dist/src/runtime.js.map +1 -0
- package/dist/src/send.d.ts +23 -0
- package/dist/src/send.d.ts.map +1 -0
- package/dist/src/send.js +158 -0
- package/dist/src/send.js.map +1 -0
- package/dist/src/status-issues.d.ts +7 -0
- package/dist/src/status-issues.d.ts.map +1 -0
- package/dist/src/status-issues.js +48 -0
- package/dist/src/status-issues.js.map +1 -0
- package/dist/src/types.d.ts +62 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +5 -0
- package/dist/src/types.js.map +1 -0
- package/openclaw.plugin.json +12 -0
- package/package.json +120 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alex Yang
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# feishu-openclaw
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/feishu-openclaw)
|
|
4
|
+
|
|
5
|
+
> **🆕 2025.1.31 更新**:v0.2.0 多版本兼容,修复 Zod schema 问题,支持 Clawdbot / OpenClaw
|
|
6
|
+
|
|
7
|
+
让 AI 助手接入飞书,无需服务器。
|
|
8
|
+
Connect your AI assistant to Feishu (Lark) — no server required.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 🚀 三种安装方式 / Three Install Methods
|
|
13
|
+
|
|
14
|
+
| 方式 | 命令 | 适合 | 链接 |
|
|
15
|
+
|------|------|------|------|
|
|
16
|
+
| **① Clawdbot 一键** | 告诉 Clawdbot:`帮我安装飞书插件` | 新手首选 | — |
|
|
17
|
+
| **② npm 插件** ⬅️ | `clawdbot plugins install feishu-openclaw` | 开发者 | [npm](https://www.npmjs.com/package/feishu-openclaw) |
|
|
18
|
+
| **③ 独立桥接** | `git clone` + 手动启动 | 生产/隔离 | [GitHub](https://github.com/AlexAnys/feishu-openclaw) |
|
|
19
|
+
|
|
20
|
+
### 方式对比 / Comparison
|
|
21
|
+
|
|
22
|
+
| | 插件 (①②) | 桥接 (③) |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| 进程数 | 1 个(内置 Gateway) | 2 个(独立进程) |
|
|
25
|
+
| 崩溃影响 | 影响 Gateway | 互不影响 |
|
|
26
|
+
| 配置方式 | `clawdbot config` | 环境变量 |
|
|
27
|
+
| 适合场景 | 日常使用 | 生产/隔离部署 |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 📋 你必须做的事 / What You Must Do
|
|
32
|
+
|
|
33
|
+
### 1. 创建飞书机器人 / Create Feishu Bot
|
|
34
|
+
|
|
35
|
+
1. [飞书开放平台](https://open.feishu.cn/app) → 创建企业自建应用
|
|
36
|
+
2. 添加「机器人」能力
|
|
37
|
+
3. **权限配置** — 开启:
|
|
38
|
+
- `im:message`
|
|
39
|
+
- `im:message.group_at_msg`
|
|
40
|
+
- `im:message.p2p_msg`
|
|
41
|
+
4. **事件订阅** → `im.message.receive_v1` → ⚠️ **选「长连接」不是 webhook**
|
|
42
|
+
5. 版本管理 → 创建版本 → 发布上线
|
|
43
|
+
6. 记下 **App ID** (`cli_xxx`) 和 **App Secret**
|
|
44
|
+
|
|
45
|
+
### 2. 配置 / Configure
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
clawdbot config set channels.feishu.enabled true --json
|
|
49
|
+
clawdbot config set channels.feishu.appId "cli_你的AppID"
|
|
50
|
+
clawdbot config set channels.feishu.appSecret "你的AppSecret"
|
|
51
|
+
clawdbot gateway restart
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 3. 测试 / Test
|
|
55
|
+
|
|
56
|
+
去飞书私聊或群里 @机器人 🎉
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## ⚠️ 常见问题 / Troubleshooting
|
|
61
|
+
|
|
62
|
+
### 收不到消息? / Not receiving messages?
|
|
63
|
+
|
|
64
|
+
| 检查项 | Check |
|
|
65
|
+
|--------|-------|
|
|
66
|
+
| 应用已发布(不是草稿) | App is published (not draft) |
|
|
67
|
+
| 事件订阅用「长连接」 | Event uses "long connection" |
|
|
68
|
+
| 权限都已开启 | All permissions enabled |
|
|
69
|
+
|
|
70
|
+
### 报错 `not configured`?
|
|
71
|
+
|
|
72
|
+
**必须用 `appSecret`,不是 `appSecretPath`**:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# ✅ 正确
|
|
76
|
+
clawdbot config set channels.feishu.appSecret "你的secret"
|
|
77
|
+
|
|
78
|
+
# ❌ 错误 — 插件不支持
|
|
79
|
+
clawdbot config set channels.feishu.appSecretPath "/path/to/file"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 群聊不回复? / No response in groups?
|
|
83
|
+
|
|
84
|
+
@机器人,或消息末尾加问号。
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 特点 / Features
|
|
89
|
+
|
|
90
|
+
- **无需服务器** — WebSocket 长连接
|
|
91
|
+
- **私聊+群聊** — 都支持
|
|
92
|
+
- **图片文件** — 收发都行
|
|
93
|
+
- **多账号** — 可同时接多个机器人
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 链接 / Links
|
|
98
|
+
|
|
99
|
+
- 📦 [npm: feishu-openclaw](https://www.npmjs.com/package/feishu-openclaw)
|
|
100
|
+
- 🔌 [GitHub: feishu-openclaw](https://github.com/AlexAnys/feishu-openclaw) (插件)
|
|
101
|
+
- 🌉 [GitHub: feishu-openclaw](https://github.com/AlexAnys/feishu-openclaw) (桥接)
|
|
102
|
+
- 📖 [Clawdbot 文档](https://docs.clawd.bot)
|
|
103
|
+
- 🐛 [问题反馈](https://github.com/AlexAnys/feishu-openclaw/issues)
|
|
104
|
+
|
|
105
|
+
## License
|
|
106
|
+
|
|
107
|
+
MIT
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "moltbot-feishu",
|
|
3
|
+
"name": "Feishu",
|
|
4
|
+
"description": "Feishu (飞书/Lark) channel plugin — WebSocket long-connection bot",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"channels": ["feishu"],
|
|
7
|
+
"configSchema": {
|
|
8
|
+
"type": "object",
|
|
9
|
+
"additionalProperties": false,
|
|
10
|
+
"properties": {}
|
|
11
|
+
}
|
|
12
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feishu (Lark) channel plugin for Clawdbot/Moltbot.
|
|
3
|
+
*
|
|
4
|
+
* Connects Feishu bots via WebSocket long-connection (no public server required).
|
|
5
|
+
*/
|
|
6
|
+
import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk";
|
|
7
|
+
declare const plugin: {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
configSchema: unknown;
|
|
12
|
+
register(api: ClawdbotPluginApi): void;
|
|
13
|
+
};
|
|
14
|
+
export default plugin;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAO7D,QAAA,MAAM,MAAM;;;;;kBASI,iBAAiB;CAIhC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feishu (Lark) channel plugin for Clawdbot/Moltbot.
|
|
3
|
+
*
|
|
4
|
+
* Connects Feishu bots via WebSocket long-connection (no public server required).
|
|
5
|
+
*/
|
|
6
|
+
import { emptyPluginConfigSchema } from "clawdbot/plugin-sdk";
|
|
7
|
+
import { feishuDock, feishuPlugin } from "./src/channel.js";
|
|
8
|
+
import { setFeishuRuntime } from "./src/runtime.js";
|
|
9
|
+
const plugin = {
|
|
10
|
+
id: "moltbot-feishu",
|
|
11
|
+
name: "Feishu",
|
|
12
|
+
description: "Feishu (Lark) channel plugin — WebSocket long-connection bot",
|
|
13
|
+
// This plugin registers a channel whose config lives under channels.feishu.*.
|
|
14
|
+
// Plugin-level config (plugins.entries.*.config) is intentionally empty.
|
|
15
|
+
configSchema: emptyPluginConfigSchema(),
|
|
16
|
+
register(api) {
|
|
17
|
+
setFeishuRuntime(api.runtime);
|
|
18
|
+
api.registerChannel({ plugin: feishuPlugin, dock: feishuDock });
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export default plugin;
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,8DAA8D;IAE3E,8EAA8E;IAC9E,yEAAyE;IACzE,YAAY,EAAE,uBAAuB,EAAE;IAEvC,QAAQ,CAAC,GAAsB;QAC7B,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feishu account resolution — multi-account support.
|
|
3
|
+
*/
|
|
4
|
+
import type { ClawdbotConfig } from "clawdbot/plugin-sdk";
|
|
5
|
+
import type { ResolvedFeishuAccount } from "./types.js";
|
|
6
|
+
/** List all configured Feishu account IDs (falls back to ["default"]). */
|
|
7
|
+
export declare function listFeishuAccountIds(cfg: ClawdbotConfig): string[];
|
|
8
|
+
/** Resolve the default account ID. */
|
|
9
|
+
export declare function resolveDefaultFeishuAccountId(cfg: ClawdbotConfig): string;
|
|
10
|
+
/** Fully resolve a Feishu account. */
|
|
11
|
+
export declare function resolveFeishuAccount(params: {
|
|
12
|
+
cfg: ClawdbotConfig;
|
|
13
|
+
accountId?: string | null;
|
|
14
|
+
}): ResolvedFeishuAccount;
|
|
15
|
+
/** List all enabled Feishu accounts. */
|
|
16
|
+
export declare function listEnabledFeishuAccounts(cfg: ClawdbotConfig): ResolvedFeishuAccount[];
|
|
17
|
+
//# sourceMappingURL=accounts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/accounts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,KAAK,EAGV,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAQpB,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAIlE;AAED,sCAAsC;AACtC,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAMzE;AA2CD,sCAAsC;AACtC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,GAAG,EAAE,cAAc,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,qBAAqB,CAiBxB;AAED,wCAAwC;AACxC,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,cAAc,GAAG,qBAAqB,EAAE,CAItF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feishu account resolution — multi-account support.
|
|
3
|
+
*/
|
|
4
|
+
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "clawdbot/plugin-sdk";
|
|
5
|
+
function listConfiguredAccountIds(cfg) {
|
|
6
|
+
const accounts = cfg.channels?.feishu?.accounts;
|
|
7
|
+
if (!accounts || typeof accounts !== "object")
|
|
8
|
+
return [];
|
|
9
|
+
return Object.keys(accounts).filter(Boolean);
|
|
10
|
+
}
|
|
11
|
+
/** List all configured Feishu account IDs (falls back to ["default"]). */
|
|
12
|
+
export function listFeishuAccountIds(cfg) {
|
|
13
|
+
const ids = listConfiguredAccountIds(cfg);
|
|
14
|
+
if (ids.length === 0)
|
|
15
|
+
return [DEFAULT_ACCOUNT_ID];
|
|
16
|
+
return ids.sort((a, b) => a.localeCompare(b));
|
|
17
|
+
}
|
|
18
|
+
/** Resolve the default account ID. */
|
|
19
|
+
export function resolveDefaultFeishuAccountId(cfg) {
|
|
20
|
+
const feishuConfig = cfg.channels?.feishu;
|
|
21
|
+
if (feishuConfig?.defaultAccount?.trim())
|
|
22
|
+
return feishuConfig.defaultAccount.trim();
|
|
23
|
+
const ids = listFeishuAccountIds(cfg);
|
|
24
|
+
if (ids.includes(DEFAULT_ACCOUNT_ID))
|
|
25
|
+
return DEFAULT_ACCOUNT_ID;
|
|
26
|
+
return ids[0] ?? DEFAULT_ACCOUNT_ID;
|
|
27
|
+
}
|
|
28
|
+
function resolveAccountConfig(cfg, accountId) {
|
|
29
|
+
const accounts = cfg.channels?.feishu?.accounts;
|
|
30
|
+
if (!accounts || typeof accounts !== "object")
|
|
31
|
+
return undefined;
|
|
32
|
+
return accounts[accountId];
|
|
33
|
+
}
|
|
34
|
+
function mergeFeishuAccountConfig(cfg, accountId) {
|
|
35
|
+
const raw = (cfg.channels?.feishu ?? {});
|
|
36
|
+
const { accounts: _ignored, defaultAccount: _ignored2, ...base } = raw;
|
|
37
|
+
const account = resolveAccountConfig(cfg, accountId) ?? {};
|
|
38
|
+
return { ...base, ...account };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve appId + appSecret for an account.
|
|
42
|
+
* Checks: account config → base config → plugin config.
|
|
43
|
+
*/
|
|
44
|
+
function resolveCredentials(cfg, merged) {
|
|
45
|
+
// From channel config
|
|
46
|
+
if (merged.appId?.trim() && merged.appSecret?.trim()) {
|
|
47
|
+
return { appId: merged.appId.trim(), appSecret: merged.appSecret.trim(), source: "config" };
|
|
48
|
+
}
|
|
49
|
+
// From plugin config (plugins.entries.feishu.config)
|
|
50
|
+
const pluginCfg = cfg.plugins;
|
|
51
|
+
const feishuPluginCfg = pluginCfg?.entries?.feishu?.config;
|
|
52
|
+
if (feishuPluginCfg?.appId?.trim() && feishuPluginCfg?.appSecret?.trim()) {
|
|
53
|
+
return { appId: feishuPluginCfg.appId.trim(), appSecret: feishuPluginCfg.appSecret.trim(), source: "plugin" };
|
|
54
|
+
}
|
|
55
|
+
return { appId: "", appSecret: "", source: "none" };
|
|
56
|
+
}
|
|
57
|
+
/** Fully resolve a Feishu account. */
|
|
58
|
+
export function resolveFeishuAccount(params) {
|
|
59
|
+
const accountId = normalizeAccountId(params.accountId);
|
|
60
|
+
const baseEnabled = params.cfg.channels?.feishu?.enabled !== false;
|
|
61
|
+
const merged = mergeFeishuAccountConfig(params.cfg, accountId);
|
|
62
|
+
const accountEnabled = merged.enabled !== false;
|
|
63
|
+
const enabled = baseEnabled && accountEnabled;
|
|
64
|
+
const creds = resolveCredentials(params.cfg, merged);
|
|
65
|
+
return {
|
|
66
|
+
accountId,
|
|
67
|
+
name: merged.name?.trim() || undefined,
|
|
68
|
+
enabled,
|
|
69
|
+
appId: creds.appId,
|
|
70
|
+
appSecret: creds.appSecret,
|
|
71
|
+
tokenSource: creds.source,
|
|
72
|
+
config: merged,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/** List all enabled Feishu accounts. */
|
|
76
|
+
export function listEnabledFeishuAccounts(cfg) {
|
|
77
|
+
return listFeishuAccountIds(cfg)
|
|
78
|
+
.map((accountId) => resolveFeishuAccount({ cfg, accountId }))
|
|
79
|
+
.filter((account) => account.enabled);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=accounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/accounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feishu ChannelPlugin + ChannelDock — core channel integration.
|
|
3
|
+
*/
|
|
4
|
+
import type { ChannelDock, ChannelPlugin } from "clawdbot/plugin-sdk";
|
|
5
|
+
import type { ResolvedFeishuAccount } from "./types.js";
|
|
6
|
+
export declare const feishuDock: ChannelDock;
|
|
7
|
+
export declare const feishuPlugin: ChannelPlugin<ResolvedFeishuAccount>;
|
|
8
|
+
//# sourceMappingURL=channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAkB7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAsCxD,eAAO,MAAM,UAAU,EAAE,WA0BxB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,qBAAqB,CAsU7D,CAAC"}
|