@feihan-im/openclaw-plugin 0.1.1 → 0.1.3
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/dist/setup-entry.cjs +67 -0
- package/dist/setup-entry.cjs.map +1 -0
- package/dist/setup-entry.d.cts +5 -0
- package/dist/setup-entry.d.ts +5 -0
- package/dist/setup-entry.js +46 -0
- package/dist/setup-entry.js.map +1 -0
- package/openclaw.plugin.json +11 -3
- package/package.json +10 -4
- package/src/setup-entry.ts +51 -0
- package/src/typings/openclaw-plugin-sdk.d.ts +29 -0
- package/src/typings/feihan-sdk.d.ts +0 -23
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/setup-entry.ts
|
|
21
|
+
var setup_entry_exports = {};
|
|
22
|
+
__export(setup_entry_exports, {
|
|
23
|
+
default: () => setup_entry_default
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(setup_entry_exports);
|
|
26
|
+
var import_core = require("openclaw/plugin-sdk/core");
|
|
27
|
+
var setup_entry_default = (0, import_core.defineSetupPluginEntry)({
|
|
28
|
+
async onSetup(context) {
|
|
29
|
+
const appId = await context.prompt({
|
|
30
|
+
type: "text",
|
|
31
|
+
message: "Enter your Feihan App ID:",
|
|
32
|
+
validate: (val) => val.length > 0 || "This field is required"
|
|
33
|
+
});
|
|
34
|
+
const appSecret = await context.prompt({
|
|
35
|
+
type: "password",
|
|
36
|
+
message: "Enter your Feihan App Secret:",
|
|
37
|
+
validate: (val) => val.length > 0 || "This field is required"
|
|
38
|
+
});
|
|
39
|
+
const backendUrl = await context.prompt({
|
|
40
|
+
type: "text",
|
|
41
|
+
message: "Enter Feihan backend server URL:",
|
|
42
|
+
validate: (val) => {
|
|
43
|
+
if (val.length === 0) return "This field is required";
|
|
44
|
+
try {
|
|
45
|
+
new URL(val);
|
|
46
|
+
return true;
|
|
47
|
+
} catch {
|
|
48
|
+
return "Please enter a valid URL";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
const enableEncryption = await context.prompt({
|
|
53
|
+
type: "confirm",
|
|
54
|
+
message: "Enable message encryption?",
|
|
55
|
+
default: true
|
|
56
|
+
});
|
|
57
|
+
await context.updateConfig("channels.feihan.appId", appId);
|
|
58
|
+
await context.updateConfig("channels.feihan.appSecret", appSecret);
|
|
59
|
+
await context.updateConfig("channels.feihan.backendUrl", backendUrl);
|
|
60
|
+
await context.updateConfig("channels.feihan.enableEncryption", enableEncryption);
|
|
61
|
+
await context.updateConfig("channels.feihan.enabled", true);
|
|
62
|
+
console.log("\u2705 Feihan channel configuration saved successfully!");
|
|
63
|
+
console.log("\u{1F4C4} Config file: ~/.openclaw/openclaw.json");
|
|
64
|
+
console.log("\u{1F4D6} Deploy docs: https://feihanim.cn/docs/admin/bots/openclaw");
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=setup-entry.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/setup-entry.ts"],"sourcesContent":["// Copyright (c) 2026 上海飞函安全科技有限公司 (Shanghai Feihan Security Technology Co., Ltd.)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { defineSetupPluginEntry } from \"openclaw/plugin-sdk/core\";\n\nexport default defineSetupPluginEntry({\n async onSetup(context) {\n const appId = await context.prompt({\n type: \"text\",\n message: \"Enter your Feihan App ID:\",\n validate: (val: string) => val.length > 0 || \"This field is required\",\n });\n\n const appSecret = await context.prompt({\n type: \"password\",\n message: \"Enter your Feihan App Secret:\",\n validate: (val: string) => val.length > 0 || \"This field is required\",\n });\n\n const backendUrl = await context.prompt({\n type: \"text\",\n message: \"Enter Feihan backend server URL:\",\n validate: (val: string) => {\n if (val.length === 0) return \"This field is required\";\n try {\n new URL(val);\n return true;\n } catch {\n return \"Please enter a valid URL\";\n }\n },\n });\n\n const enableEncryption = await context.prompt({\n type: \"confirm\",\n message: \"Enable message encryption?\",\n default: true,\n });\n\n // Write config to ~/.openclaw/openclaw.json\n await context.updateConfig(\"channels.feihan.appId\", appId);\n await context.updateConfig(\"channels.feihan.appSecret\", appSecret);\n await context.updateConfig(\"channels.feihan.backendUrl\", backendUrl);\n await context.updateConfig(\"channels.feihan.enableEncryption\", enableEncryption);\n await context.updateConfig(\"channels.feihan.enabled\", true);\n\n console.log(\"✅ Feihan channel configuration saved successfully!\");\n console.log(\"📄 Config file: ~/.openclaw/openclaw.json\");\n console.log(\"📖 Deploy docs: https://feihanim.cn/docs/admin/bots/openclaw\");\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAuC;AAEvC,IAAO,0BAAQ,oCAAuB;AAAA,EACpC,MAAM,QAAQ,SAAS;AACrB,UAAM,QAAQ,MAAM,QAAQ,OAAO;AAAA,MACjC,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU,CAAC,QAAgB,IAAI,SAAS,KAAK;AAAA,IAC/C,CAAC;AAED,UAAM,YAAY,MAAM,QAAQ,OAAO;AAAA,MACrC,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU,CAAC,QAAgB,IAAI,SAAS,KAAK;AAAA,IAC/C,CAAC;AAED,UAAM,aAAa,MAAM,QAAQ,OAAO;AAAA,MACtC,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU,CAAC,QAAgB;AACzB,YAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,YAAI;AACF,cAAI,IAAI,GAAG;AACX,iBAAO;AAAA,QACT,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,mBAAmB,MAAM,QAAQ,OAAO;AAAA,MAC5C,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,IACX,CAAC;AAGD,UAAM,QAAQ,aAAa,yBAAyB,KAAK;AACzD,UAAM,QAAQ,aAAa,6BAA6B,SAAS;AACjE,UAAM,QAAQ,aAAa,8BAA8B,UAAU;AACnE,UAAM,QAAQ,aAAa,oCAAoC,gBAAgB;AAC/E,UAAM,QAAQ,aAAa,2BAA2B,IAAI;AAE1D,YAAQ,IAAI,yDAAoD;AAChE,YAAQ,IAAI,kDAA2C;AACvD,YAAQ,IAAI,qEAA8D;AAAA,EAC5E;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// src/setup-entry.ts
|
|
2
|
+
import { defineSetupPluginEntry } from "openclaw/plugin-sdk/core";
|
|
3
|
+
var setup_entry_default = defineSetupPluginEntry({
|
|
4
|
+
async onSetup(context) {
|
|
5
|
+
const appId = await context.prompt({
|
|
6
|
+
type: "text",
|
|
7
|
+
message: "Enter your Feihan App ID:",
|
|
8
|
+
validate: (val) => val.length > 0 || "This field is required"
|
|
9
|
+
});
|
|
10
|
+
const appSecret = await context.prompt({
|
|
11
|
+
type: "password",
|
|
12
|
+
message: "Enter your Feihan App Secret:",
|
|
13
|
+
validate: (val) => val.length > 0 || "This field is required"
|
|
14
|
+
});
|
|
15
|
+
const backendUrl = await context.prompt({
|
|
16
|
+
type: "text",
|
|
17
|
+
message: "Enter Feihan backend server URL:",
|
|
18
|
+
validate: (val) => {
|
|
19
|
+
if (val.length === 0) return "This field is required";
|
|
20
|
+
try {
|
|
21
|
+
new URL(val);
|
|
22
|
+
return true;
|
|
23
|
+
} catch {
|
|
24
|
+
return "Please enter a valid URL";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
const enableEncryption = await context.prompt({
|
|
29
|
+
type: "confirm",
|
|
30
|
+
message: "Enable message encryption?",
|
|
31
|
+
default: true
|
|
32
|
+
});
|
|
33
|
+
await context.updateConfig("channels.feihan.appId", appId);
|
|
34
|
+
await context.updateConfig("channels.feihan.appSecret", appSecret);
|
|
35
|
+
await context.updateConfig("channels.feihan.backendUrl", backendUrl);
|
|
36
|
+
await context.updateConfig("channels.feihan.enableEncryption", enableEncryption);
|
|
37
|
+
await context.updateConfig("channels.feihan.enabled", true);
|
|
38
|
+
console.log("\u2705 Feihan channel configuration saved successfully!");
|
|
39
|
+
console.log("\u{1F4C4} Config file: ~/.openclaw/openclaw.json");
|
|
40
|
+
console.log("\u{1F4D6} Deploy docs: https://feihanim.cn/docs/admin/bots/openclaw");
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
export {
|
|
44
|
+
setup_entry_default as default
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=setup-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/setup-entry.ts"],"sourcesContent":["// Copyright (c) 2026 上海飞函安全科技有限公司 (Shanghai Feihan Security Technology Co., Ltd.)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { defineSetupPluginEntry } from \"openclaw/plugin-sdk/core\";\n\nexport default defineSetupPluginEntry({\n async onSetup(context) {\n const appId = await context.prompt({\n type: \"text\",\n message: \"Enter your Feihan App ID:\",\n validate: (val: string) => val.length > 0 || \"This field is required\",\n });\n\n const appSecret = await context.prompt({\n type: \"password\",\n message: \"Enter your Feihan App Secret:\",\n validate: (val: string) => val.length > 0 || \"This field is required\",\n });\n\n const backendUrl = await context.prompt({\n type: \"text\",\n message: \"Enter Feihan backend server URL:\",\n validate: (val: string) => {\n if (val.length === 0) return \"This field is required\";\n try {\n new URL(val);\n return true;\n } catch {\n return \"Please enter a valid URL\";\n }\n },\n });\n\n const enableEncryption = await context.prompt({\n type: \"confirm\",\n message: \"Enable message encryption?\",\n default: true,\n });\n\n // Write config to ~/.openclaw/openclaw.json\n await context.updateConfig(\"channels.feihan.appId\", appId);\n await context.updateConfig(\"channels.feihan.appSecret\", appSecret);\n await context.updateConfig(\"channels.feihan.backendUrl\", backendUrl);\n await context.updateConfig(\"channels.feihan.enableEncryption\", enableEncryption);\n await context.updateConfig(\"channels.feihan.enabled\", true);\n\n console.log(\"✅ Feihan channel configuration saved successfully!\");\n console.log(\"📄 Config file: ~/.openclaw/openclaw.json\");\n console.log(\"📖 Deploy docs: https://feihanim.cn/docs/admin/bots/openclaw\");\n },\n});\n"],"mappings":";AAGA,SAAS,8BAA8B;AAEvC,IAAO,sBAAQ,uBAAuB;AAAA,EACpC,MAAM,QAAQ,SAAS;AACrB,UAAM,QAAQ,MAAM,QAAQ,OAAO;AAAA,MACjC,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU,CAAC,QAAgB,IAAI,SAAS,KAAK;AAAA,IAC/C,CAAC;AAED,UAAM,YAAY,MAAM,QAAQ,OAAO;AAAA,MACrC,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU,CAAC,QAAgB,IAAI,SAAS,KAAK;AAAA,IAC/C,CAAC;AAED,UAAM,aAAa,MAAM,QAAQ,OAAO;AAAA,MACtC,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU,CAAC,QAAgB;AACzB,YAAI,IAAI,WAAW,EAAG,QAAO;AAC7B,YAAI;AACF,cAAI,IAAI,GAAG;AACX,iBAAO;AAAA,QACT,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,mBAAmB,MAAM,QAAQ,OAAO;AAAA,MAC5C,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,IACX,CAAC;AAGD,UAAM,QAAQ,aAAa,yBAAyB,KAAK;AACzD,UAAM,QAAQ,aAAa,6BAA6B,SAAS;AACjE,UAAM,QAAQ,aAAa,8BAA8B,UAAU;AACnE,UAAM,QAAQ,aAAa,oCAAoC,gBAAgB;AAC/E,UAAM,QAAQ,aAAa,2BAA2B,IAAI;AAE1D,YAAQ,IAAI,yDAAoD;AAChE,YAAQ,IAAI,kDAA2C;AACvD,YAAQ,IAAI,qEAA8D;AAAA,EAC5E;AACF,CAAC;","names":[]}
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"id": "
|
|
2
|
+
"id": "feihan",
|
|
3
3
|
"name": "Feihan Channel",
|
|
4
|
+
"description": "Connect OpenClaw with Feihan",
|
|
4
5
|
"version": "0.1.0",
|
|
6
|
+
"kind": "channel",
|
|
5
7
|
"channels": ["feihan"],
|
|
6
8
|
"configSchema": {
|
|
7
9
|
"type": "object",
|
|
10
|
+
"additionalProperties": false,
|
|
8
11
|
"properties": {
|
|
12
|
+
"enabled": {
|
|
13
|
+
"type": "boolean",
|
|
14
|
+
"description": "Enable this channel",
|
|
15
|
+
"default": true
|
|
16
|
+
},
|
|
9
17
|
"appId": {
|
|
10
18
|
"type": "string",
|
|
11
19
|
"description": "Feihan application ID"
|
|
@@ -39,13 +47,13 @@
|
|
|
39
47
|
"additionalProperties": {
|
|
40
48
|
"type": "object",
|
|
41
49
|
"properties": {
|
|
50
|
+
"enabled": { "type": "boolean", "default": true },
|
|
42
51
|
"appId": { "type": "string" },
|
|
43
52
|
"appSecret": { "type": "string" },
|
|
44
53
|
"backendUrl": { "type": "string" },
|
|
45
54
|
"enableEncryption": { "type": "boolean" },
|
|
46
55
|
"requestTimeout": { "type": "number" },
|
|
47
|
-
"requireMention": { "type": "boolean" }
|
|
48
|
-
"enabled": { "type": "boolean", "default": true }
|
|
56
|
+
"requireMention": { "type": "boolean" }
|
|
49
57
|
},
|
|
50
58
|
"required": ["appId", "appSecret", "backendUrl"]
|
|
51
59
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feihan-im/openclaw-plugin",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.3",
|
|
4
|
+
"description": "Feihan IM OpenClaw channel plugin",
|
|
5
5
|
"author": "上海飞函安全科技有限公司",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.cjs",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"openclaw.plugin.json"
|
|
27
27
|
],
|
|
28
28
|
"openclaw": {
|
|
29
|
+
"setup": "./dist/src/setup-entry.js",
|
|
29
30
|
"extensions": [
|
|
30
31
|
"./dist/index.js"
|
|
31
32
|
],
|
|
@@ -45,7 +46,7 @@
|
|
|
45
46
|
"test:watch": "vitest",
|
|
46
47
|
"clean": "rm -rf dist"
|
|
47
48
|
},
|
|
48
|
-
"keywords": ["openclaw", "channel", "plugin", "feihan", "
|
|
49
|
+
"keywords": ["openclaw", "channel", "plugin", "feihan", "im"],
|
|
49
50
|
"engines": {
|
|
50
51
|
"node": ">=18.0.0"
|
|
51
52
|
},
|
|
@@ -59,7 +60,12 @@
|
|
|
59
60
|
"url": "https://github.com/feihan-im/openclaw-feihan/issues"
|
|
60
61
|
},
|
|
61
62
|
"peerDependencies": {
|
|
62
|
-
"openclaw": "
|
|
63
|
+
"openclaw": ">=2026.3.22"
|
|
64
|
+
},
|
|
65
|
+
"peerDependenciesMeta": {
|
|
66
|
+
"openclaw": {
|
|
67
|
+
"optional": true
|
|
68
|
+
}
|
|
63
69
|
},
|
|
64
70
|
"dependencies": {
|
|
65
71
|
"@feihan-im/sdk": "0.28.108",
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Copyright (c) 2026 上海飞函安全科技有限公司 (Shanghai Feihan Security Technology Co., Ltd.)
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { defineSetupPluginEntry } from "openclaw/plugin-sdk/core";
|
|
5
|
+
|
|
6
|
+
export default defineSetupPluginEntry({
|
|
7
|
+
async onSetup(context) {
|
|
8
|
+
const appId = await context.prompt({
|
|
9
|
+
type: "text",
|
|
10
|
+
message: "Enter your Feihan App ID:",
|
|
11
|
+
validate: (val: string) => val.length > 0 || "This field is required",
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const appSecret = await context.prompt({
|
|
15
|
+
type: "password",
|
|
16
|
+
message: "Enter your Feihan App Secret:",
|
|
17
|
+
validate: (val: string) => val.length > 0 || "This field is required",
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const backendUrl = await context.prompt({
|
|
21
|
+
type: "text",
|
|
22
|
+
message: "Enter Feihan backend server URL:",
|
|
23
|
+
validate: (val: string) => {
|
|
24
|
+
if (val.length === 0) return "This field is required";
|
|
25
|
+
try {
|
|
26
|
+
new URL(val);
|
|
27
|
+
return true;
|
|
28
|
+
} catch {
|
|
29
|
+
return "Please enter a valid URL";
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const enableEncryption = await context.prompt({
|
|
35
|
+
type: "confirm",
|
|
36
|
+
message: "Enable message encryption?",
|
|
37
|
+
default: true,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Write config to ~/.openclaw/openclaw.json
|
|
41
|
+
await context.updateConfig("channels.feihan.appId", appId);
|
|
42
|
+
await context.updateConfig("channels.feihan.appSecret", appSecret);
|
|
43
|
+
await context.updateConfig("channels.feihan.backendUrl", backendUrl);
|
|
44
|
+
await context.updateConfig("channels.feihan.enableEncryption", enableEncryption);
|
|
45
|
+
await context.updateConfig("channels.feihan.enabled", true);
|
|
46
|
+
|
|
47
|
+
console.log("✅ Feihan channel configuration saved successfully!");
|
|
48
|
+
console.log("📄 Config file: ~/.openclaw/openclaw.json");
|
|
49
|
+
console.log("📖 Deploy docs: https://feihanim.cn/docs/admin/bots/openclaw");
|
|
50
|
+
},
|
|
51
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright (c) 2026 上海飞函安全科技有限公司 (Shanghai Feihan Security Technology Co., Ltd.)
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Type declarations for openclaw/plugin-sdk/core.
|
|
6
|
+
*
|
|
7
|
+
* These types provide the minimal interface needed for the setup entry point.
|
|
8
|
+
* The actual implementation is provided by the OpenClaw runtime at plugin load time.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
declare module "openclaw/plugin-sdk/core" {
|
|
12
|
+
export interface PromptOptions {
|
|
13
|
+
type: "text" | "password" | "confirm" | "select";
|
|
14
|
+
message: string;
|
|
15
|
+
default?: string | boolean;
|
|
16
|
+
validate?: (value: string) => boolean | string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface SetupContext {
|
|
20
|
+
prompt: (options: PromptOptions) => Promise<string>;
|
|
21
|
+
updateConfig: (key: string, value: string | boolean | number) => Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface SetupPluginEntry {
|
|
25
|
+
onSetup: (context: SetupContext) => Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function defineSetupPluginEntry(entry: SetupPluginEntry): SetupPluginEntry;
|
|
29
|
+
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// Copyright (c) 2026 上海飞函安全科技有限公司 (Shanghai Feihan Security Technology Co., Ltd.)
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Re-export types from @feihan-im/sdk used across the plugin.
|
|
6
|
-
*
|
|
7
|
-
* The published SDK ships its own type declarations. This file exists
|
|
8
|
-
* only to keep the rest of the plugin importing from a single local
|
|
9
|
-
* barrel, making future SDK swaps cheaper.
|
|
10
|
-
*/
|
|
11
|
-
export type {
|
|
12
|
-
FeihanClient,
|
|
13
|
-
FeihanClientOptions,
|
|
14
|
-
} from "@feihan-im/sdk";
|
|
15
|
-
|
|
16
|
-
export {
|
|
17
|
-
LoggerLevel,
|
|
18
|
-
} from "@feihan-im/sdk";
|
|
19
|
-
|
|
20
|
-
export type {
|
|
21
|
-
Logger,
|
|
22
|
-
EventHeader,
|
|
23
|
-
} from "@feihan-im/sdk";
|