openclaw-plugin-fast-task 1.0.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 +95 -0
- package/dist/account/utils.d.ts +21 -0
- package/dist/account/utils.d.ts.map +1 -0
- package/dist/account/utils.js +92 -0
- package/dist/account/utils.js.map +1 -0
- package/dist/channel/channel_common.d.ts +12 -0
- package/dist/channel/channel_common.d.ts.map +1 -0
- package/dist/channel/channel_common.js +16 -0
- package/dist/channel/channel_common.js.map +1 -0
- package/dist/channel/channel_config.d.ts +4 -0
- package/dist/channel/channel_config.d.ts.map +1 -0
- package/dist/channel/channel_config.js +86 -0
- package/dist/channel/channel_config.js.map +1 -0
- package/dist/channel/channel_gateway.d.ts +4 -0
- package/dist/channel/channel_gateway.d.ts.map +1 -0
- package/dist/channel/channel_gateway.js +18 -0
- package/dist/channel/channel_gateway.js.map +1 -0
- package/dist/channel/channel_onboarding.d.ts +3 -0
- package/dist/channel/channel_onboarding.d.ts.map +1 -0
- package/dist/channel/channel_onboarding.js +70 -0
- package/dist/channel/channel_onboarding.js.map +1 -0
- package/dist/channel/channel_utils.d.ts +12 -0
- package/dist/channel/channel_utils.d.ts.map +1 -0
- package/dist/channel/channel_utils.js +20 -0
- package/dist/channel/channel_utils.js.map +1 -0
- package/dist/channel/index.d.ts +3 -0
- package/dist/channel/index.d.ts.map +1 -0
- package/dist/channel/index.js +5 -0
- package/dist/channel/index.js.map +1 -0
- package/dist/channel/plugin.d.ts +4 -0
- package/dist/channel/plugin.d.ts.map +1 -0
- package/dist/channel/plugin.js +72 -0
- package/dist/channel/plugin.js.map +1 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/ws_client.d.ts +97 -0
- package/dist/client/ws_client.d.ts.map +1 -0
- package/dist/client/ws_client.js +450 -0
- package/dist/client/ws_client.js.map +1 -0
- package/dist/command/index.d.ts +3 -0
- package/dist/command/index.d.ts.map +1 -0
- package/dist/command/index.js +3 -0
- package/dist/command/index.js.map +1 -0
- package/dist/common.d.ts +5 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +9 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +4 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/workspace/index.d.ts +5 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +5 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/workspace.d.ts +73 -0
- package/dist/workspace/workspace.d.ts.map +1 -0
- package/dist/workspace/workspace.js +173 -0
- package/dist/workspace/workspace.js.map +1 -0
- package/openclaw.plugin.json +13 -0
- package/package.json +63 -0
package/README.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# OpenClaw Plugin - Fast Task
|
|
2
|
+
|
|
3
|
+
OpenClaw 插件,支持通过 WebSocket 读写 workspace 文件。
|
|
4
|
+
|
|
5
|
+
## 功能特性
|
|
6
|
+
|
|
7
|
+
- ✅ **WebSocket 通信** - 与 WebSocket 服务器通信
|
|
8
|
+
- ✅ **Workspace 文件操作** - 读写 OpenClaw workspace 文件(AGENTS.md, SOUL.md, USER.md 等)
|
|
9
|
+
- ✅ **节点注册** - 向服务器注册节点信息
|
|
10
|
+
- ✅ **动态配置** - 从配置文件动态获取 workspace 路径
|
|
11
|
+
|
|
12
|
+
## 安装
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# 通过 OpenClaw 安装
|
|
16
|
+
openclaw plugins install openclaw-plugin-fast-task
|
|
17
|
+
|
|
18
|
+
# 或从 npm 安装
|
|
19
|
+
npm install openclaw-plugin-fast-task
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 使用
|
|
23
|
+
|
|
24
|
+
### 配置
|
|
25
|
+
|
|
26
|
+
在 OpenClaw 配置文件中添加:
|
|
27
|
+
|
|
28
|
+
```json5
|
|
29
|
+
{
|
|
30
|
+
"channels": {
|
|
31
|
+
"fast_task": {
|
|
32
|
+
"wsHost": "ws://your-server:8765",
|
|
33
|
+
"enabled": true,
|
|
34
|
+
"dmPolicy": "open"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"bindings": [
|
|
38
|
+
{
|
|
39
|
+
"agentId": "main",
|
|
40
|
+
"match": {
|
|
41
|
+
"channel": "fast_task",
|
|
42
|
+
"accountId": "default"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### WebSocket 命令
|
|
50
|
+
|
|
51
|
+
#### 读取 Workspace 文件
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"type": "direct",
|
|
56
|
+
"data": {
|
|
57
|
+
"chatType": "toCmd",
|
|
58
|
+
"gateWay": {
|
|
59
|
+
"cmd": "workspace.read",
|
|
60
|
+
"file": "AGENTS.md"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### 写入 Workspace 文件
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"type": "direct",
|
|
71
|
+
"data": {
|
|
72
|
+
"chatType": "toCmd",
|
|
73
|
+
"gateWay": {
|
|
74
|
+
"cmd": "workspace.write",
|
|
75
|
+
"file": "AGENTS.md",
|
|
76
|
+
"content": "# 新内容"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 支持的 Workspace 文件
|
|
83
|
+
|
|
84
|
+
- `AGENTS.md` - 智能体操作指南
|
|
85
|
+
- `SOUL.md` - 人设、语气和边界
|
|
86
|
+
- `TOOLS.md` - 工具说明
|
|
87
|
+
- `IDENTITY.md` - 智能体名称和风格
|
|
88
|
+
- `USER.md` - 用户信息
|
|
89
|
+
- `HEARTBEAT.md` - 心跳检查清单
|
|
90
|
+
- `BOOT.md` - 启动检查清单
|
|
91
|
+
- `MEMORY.md` - 长期记忆
|
|
92
|
+
|
|
93
|
+
## 许可证
|
|
94
|
+
|
|
95
|
+
MIT
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ClawdbotConfig, OpenClawConfig } from "openclaw/plugin-sdk";
|
|
2
|
+
import { DefaultAccountSelectionSource } from "./types";
|
|
3
|
+
import { AccountConfig } from "../channel/type";
|
|
4
|
+
export declare const setAccountEnabled: (cfg: OpenClawConfig, accountId: string, enabled: boolean) => ClawdbotConfig;
|
|
5
|
+
export declare const listConfiguredAccountIds: (cfg: ClawdbotConfig) => string[];
|
|
6
|
+
export declare const listAccountIds: (cfg: ClawdbotConfig) => string[];
|
|
7
|
+
export declare const resolveDefaultAccountSelection: (cfg: ClawdbotConfig) => {
|
|
8
|
+
accountId: string;
|
|
9
|
+
source: DefaultAccountSelectionSource;
|
|
10
|
+
};
|
|
11
|
+
export declare function mergeAccountConfig(cfg: ClawdbotConfig, accountId: string): AccountConfig;
|
|
12
|
+
export declare function resolveAccount({ cfg, accountId }: {
|
|
13
|
+
cfg: OpenClawConfig;
|
|
14
|
+
accountId?: string | null;
|
|
15
|
+
}): {
|
|
16
|
+
accountId: string;
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
configured: boolean;
|
|
19
|
+
name: any;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/account/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA0C,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG7G,OAAO,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,EAAiB,MAAM,iBAAiB,CAAC;AAE/D,eAAO,MAAM,iBAAiB,GAAE,KAAI,cAAc,EAAC,WAAU,MAAM,EAAC,SAAQ,OAAO,KAAE,cAkBpF,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAE,KAAK,cAAc,aAOzD,CAAA;AAED,eAAO,MAAM,cAAc,GAAE,KAAK,cAAc,aAM/C,CAAA;AACD,eAAO,MAAM,8BAA8B,GAAE,KAAK,cAAc,KAAE;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,6BAA6B,CAAC;CAqBzC,CAAA;AAaD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAQxF;AAED,wBAAgB,cAAc,CAAC,EAAC,GAAG,EAAC,SAAS,EAAC,EAAC;IAAC,GAAG,EAAC,cAAc,CAAC;IAAA,SAAS,CAAC,EAAC,MAAM,GAAC,IAAI,CAAA;CAAC;;;;;EAgBzF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk";
|
|
2
|
+
import { getChannelCurrentConfig } from "../channel/channel_utils";
|
|
3
|
+
import { CHANNEL_ID } from "../channel/channel_common";
|
|
4
|
+
export const setAccountEnabled = (cfg, accountId, enabled) => {
|
|
5
|
+
const channelConfig = getChannelCurrentConfig(cfg);
|
|
6
|
+
return {
|
|
7
|
+
...cfg,
|
|
8
|
+
channels: {
|
|
9
|
+
...cfg.channels,
|
|
10
|
+
[CHANNEL_ID]: {
|
|
11
|
+
...channelConfig,
|
|
12
|
+
accounts: {
|
|
13
|
+
...channelConfig?.accounts,
|
|
14
|
+
[accountId]: {
|
|
15
|
+
...channelConfig?.accounts?.[accountId],
|
|
16
|
+
enabled
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export const listConfiguredAccountIds = (cfg) => {
|
|
24
|
+
const channelConfig = getChannelCurrentConfig(cfg);
|
|
25
|
+
const accounts = channelConfig?.accounts;
|
|
26
|
+
if (!accounts || typeof accounts !== "object") {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
return Object.keys(accounts).filter(Boolean);
|
|
30
|
+
};
|
|
31
|
+
export const listAccountIds = (cfg) => {
|
|
32
|
+
const ids = listConfiguredAccountIds(cfg);
|
|
33
|
+
if (ids.length === 0) {
|
|
34
|
+
return [DEFAULT_ACCOUNT_ID];
|
|
35
|
+
}
|
|
36
|
+
return ids;
|
|
37
|
+
};
|
|
38
|
+
export const resolveDefaultAccountSelection = (cfg) => {
|
|
39
|
+
const preferredRaw = getChannelCurrentConfig(cfg)?.defaultAccount?.trim();
|
|
40
|
+
const preferred = preferredRaw ? normalizeAccountId(preferredRaw) : undefined;
|
|
41
|
+
if (preferred) {
|
|
42
|
+
return {
|
|
43
|
+
accountId: preferred,
|
|
44
|
+
source: "explicit-default",
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const ids = listAccountIds(cfg);
|
|
48
|
+
if (ids.includes(DEFAULT_ACCOUNT_ID)) {
|
|
49
|
+
return {
|
|
50
|
+
accountId: DEFAULT_ACCOUNT_ID,
|
|
51
|
+
source: "mapped-default",
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
accountId: DEFAULT_ACCOUNT_ID,
|
|
56
|
+
source: "fallback",
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
function resolveAccountConfig(cfg, accountId) {
|
|
60
|
+
const accounts = getChannelCurrentConfig(cfg)?.accounts;
|
|
61
|
+
if (!accounts || typeof accounts !== "object") {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
return accounts[accountId];
|
|
65
|
+
}
|
|
66
|
+
export function mergeAccountConfig(cfg, accountId) {
|
|
67
|
+
const channelConfig = getChannelCurrentConfig(cfg);
|
|
68
|
+
// Extract base config (exclude accounts field to avoid recursion)
|
|
69
|
+
const { accounts: _ignored, defaultAccount: _ignoredDefaultAccount, ...base } = channelConfig ?? {};
|
|
70
|
+
// Get account-specific overrides
|
|
71
|
+
const account = resolveAccountConfig(cfg, accountId) ?? {};
|
|
72
|
+
// Merge: account config overrides base config
|
|
73
|
+
return { ...base, ...account };
|
|
74
|
+
}
|
|
75
|
+
export function resolveAccount({ cfg, accountId }) {
|
|
76
|
+
const hasExplicitAccountId = typeof accountId === "string" && accountId.trim() !== "";
|
|
77
|
+
const defaultSelection = hasExplicitAccountId ? null : resolveDefaultAccountSelection(cfg);
|
|
78
|
+
const _accountId = hasExplicitAccountId ? normalizeAccountId(accountId) : (defaultSelection?.accountId ?? DEFAULT_ACCOUNT_ID);
|
|
79
|
+
const config = getChannelCurrentConfig(cfg);
|
|
80
|
+
const baseEnabled = config?.enabled !== false;
|
|
81
|
+
const merged = mergeAccountConfig(cfg, _accountId);
|
|
82
|
+
const accountEnabled = merged.enabled !== false;
|
|
83
|
+
const enabled = baseEnabled && accountEnabled;
|
|
84
|
+
const accountName = merged?.name;
|
|
85
|
+
return {
|
|
86
|
+
accountId: _accountId,
|
|
87
|
+
enabled,
|
|
88
|
+
configured: true,
|
|
89
|
+
name: accountName
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/account/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const CHANNEL_ID = "fast_task";
|
|
2
|
+
export declare const CHANNEL_NAME = "FastTask";
|
|
3
|
+
export declare const CHANNEL_SELECTIONLABEL = "FastTask\u5BA2\u6237\u7AEF";
|
|
4
|
+
export declare const CHANNEL_DOCSPATH = "/channels/fast_task";
|
|
5
|
+
export declare const CHANNEL_DOCSPATH_LABEL = "fast_task";
|
|
6
|
+
export declare const CHANNEL_BLURB = "\u5FEB\u4EFB\u52A1\u4E0A\u4E0B\u884C\u901A\u9053";
|
|
7
|
+
export declare const CHANNEL_ALIASES: never[];
|
|
8
|
+
export declare const CHANNEL_ORDER = 71;
|
|
9
|
+
export declare const CHANNEL_APPROVED_MESSAGE = "\u2705 OpenClaw access approved. Send a message to start chatting.";
|
|
10
|
+
export declare const CHANNEL_MESSAGE_TOOL_HINTS: never[];
|
|
11
|
+
export declare const CHANNEL_CFG_PREFIXES: string[];
|
|
12
|
+
//# sourceMappingURL=channel_common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_common.d.ts","sourceRoot":"","sources":["../../src/channel/channel_common.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,cAAY,CAAA;AACnC,eAAO,MAAM,YAAY,aAAW,CAAA;AAEpC,eAAO,MAAM,sBAAsB,+BAAc,CAAA;AACjD,eAAO,MAAM,gBAAgB,wBAAsB,CAAA;AACnD,eAAO,MAAM,sBAAsB,cAAY,CAAA;AAE/C,eAAO,MAAM,aAAa,qDAAW,CAAA;AACrC,eAAO,MAAM,eAAe,SAAG,CAAA;AAC/B,eAAO,MAAM,aAAa,KAAG,CAAA;AAC7B,eAAO,MAAM,wBAAwB,uEAAgE,CAAA;AAErG,eAAO,MAAM,0BAA0B,SAAG,CAAA;AAE1C,eAAO,MAAM,oBAAoB,UAA2B,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const CHANNEL_ID = "fast_task";
|
|
2
|
+
export const CHANNEL_NAME = "FastTask";
|
|
3
|
+
//通道选择标签
|
|
4
|
+
export const CHANNEL_SELECTIONLABEL = "FastTask客户端";
|
|
5
|
+
export const CHANNEL_DOCSPATH = "/channels/fast_task";
|
|
6
|
+
export const CHANNEL_DOCSPATH_LABEL = "fast_task";
|
|
7
|
+
//频道简介
|
|
8
|
+
export const CHANNEL_BLURB = "快任务上下行通道";
|
|
9
|
+
export const CHANNEL_ALIASES = [];
|
|
10
|
+
export const CHANNEL_ORDER = 71;
|
|
11
|
+
export const CHANNEL_APPROVED_MESSAGE = "✅ OpenClaw access approved. Send a message to start chatting.";
|
|
12
|
+
// 消息工具提示
|
|
13
|
+
export const CHANNEL_MESSAGE_TOOL_HINTS = [];
|
|
14
|
+
// 重载时,需要载入内容的配置前缀
|
|
15
|
+
export const CHANNEL_CFG_PREFIXES = [`channels.${CHANNEL_ID}`];
|
|
16
|
+
//# sourceMappingURL=channel_common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_common.js","sourceRoot":"","sources":["../../src/channel/channel_common.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAC,WAAW,CAAA;AACnC,MAAM,CAAC,MAAM,YAAY,GAAC,UAAU,CAAA;AACpC,QAAQ;AACR,MAAM,CAAC,MAAM,sBAAsB,GAAC,aAAa,CAAA;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAC,qBAAqB,CAAA;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAC,WAAW,CAAA;AAC/C,MAAM;AACN,MAAM,CAAC,MAAM,aAAa,GAAC,UAAU,CAAA;AACrC,MAAM,CAAC,MAAM,eAAe,GAAC,EAAE,CAAA;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAC,EAAE,CAAA;AAC7B,MAAM,CAAC,MAAM,wBAAwB,GAAC,+DAA+D,CAAA;AACrG,SAAS;AACT,MAAM,CAAC,MAAM,0BAA0B,GAAC,EAAE,CAAA;AAC1C,kBAAkB;AAClB,MAAM,CAAC,MAAM,oBAAoB,GAAC,CAAC,YAAY,UAAU,EAAE,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_config.d.ts","sourceRoot":"","sources":["../../src/channel/channel_config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAiJ,MAAM,4BAA4B,CAAA;AAChN,OAAO,EAAiB,sBAAsB,EAAE,MAAM,QAAQ,CAAA;AAK9D,eAAO,MAAM,aAAa,EAAC,oBAAoB,CAAC,sBAAsB,CAgFrE,CAAA"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { DEFAULT_ACCOUNT_ID, formatAllowFromLowercase } from "openclaw/plugin-sdk/compat";
|
|
2
|
+
import { getChannelCurrentConfig } from "./channel_utils";
|
|
3
|
+
import { CHANNEL_ID } from "./channel_common";
|
|
4
|
+
import { listAccountIds, resolveAccount, resolveDefaultAccountSelection, setAccountEnabled } from "../account/utils";
|
|
5
|
+
export const configAdapter = {
|
|
6
|
+
listAccountIds: (cfg) => {
|
|
7
|
+
return listAccountIds(cfg);
|
|
8
|
+
},
|
|
9
|
+
//处理账号
|
|
10
|
+
resolveAccount: (cfg, accountId) => {
|
|
11
|
+
return resolveAccount({ cfg, accountId });
|
|
12
|
+
},
|
|
13
|
+
//默认的账号id
|
|
14
|
+
defaultAccountId: (cfg) => {
|
|
15
|
+
return resolveDefaultAccountSelection(cfg).accountId;
|
|
16
|
+
},
|
|
17
|
+
//写入账号授权
|
|
18
|
+
setAccountEnabled: ({ cfg, accountId, enabled }) => {
|
|
19
|
+
const isDefault = accountId === DEFAULT_ACCOUNT_ID;
|
|
20
|
+
if (isDefault) {
|
|
21
|
+
return {
|
|
22
|
+
...cfg,
|
|
23
|
+
channels: {
|
|
24
|
+
...cfg.channels,
|
|
25
|
+
[CHANNEL_ID]: {
|
|
26
|
+
...cfg.channels?.[CHANNEL_ID],
|
|
27
|
+
enabled,
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return setAccountEnabled(cfg, accountId, enabled);
|
|
33
|
+
},
|
|
34
|
+
//删除账号
|
|
35
|
+
deleteAccount: ({ cfg, accountId }) => {
|
|
36
|
+
const isDefault = accountId === DEFAULT_ACCOUNT_ID;
|
|
37
|
+
if (isDefault) {
|
|
38
|
+
// Delete entire feishu config
|
|
39
|
+
const next = { ...cfg };
|
|
40
|
+
const nextChannels = { ...cfg.channels };
|
|
41
|
+
delete nextChannels.feishu;
|
|
42
|
+
if (Object.keys(nextChannels).length > 0) {
|
|
43
|
+
next.channels = nextChannels;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
delete next.channels;
|
|
47
|
+
}
|
|
48
|
+
return next;
|
|
49
|
+
}
|
|
50
|
+
const channelConfig = getChannelCurrentConfig(cfg);
|
|
51
|
+
const accounts = { ...channelConfig?.accounts };
|
|
52
|
+
delete accounts[accountId];
|
|
53
|
+
return {
|
|
54
|
+
...cfg,
|
|
55
|
+
channels: {
|
|
56
|
+
...cfg.channels,
|
|
57
|
+
[CHANNEL_ID]: {
|
|
58
|
+
...channelConfig,
|
|
59
|
+
accounts: Object.keys(accounts).length > 0 ? accounts : undefined,
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
},
|
|
64
|
+
//是否配置
|
|
65
|
+
isConfigured: async (account) => {
|
|
66
|
+
return account.configured;
|
|
67
|
+
},
|
|
68
|
+
//账号描述
|
|
69
|
+
describeAccount: (account) => {
|
|
70
|
+
return {
|
|
71
|
+
accountId: account.accountId,
|
|
72
|
+
enabled: account.enabled,
|
|
73
|
+
configured: account.configured,
|
|
74
|
+
name: account.name,
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
//处理允许的来源
|
|
78
|
+
resolveAllowFrom: ({ cfg, accountId }) => {
|
|
79
|
+
return [];
|
|
80
|
+
},
|
|
81
|
+
//格式化允许的来源
|
|
82
|
+
formatAllowFrom: ({ allowFrom }) => {
|
|
83
|
+
return formatAllowFromLowercase({ allowFrom });
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=channel_config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_config.js","sourceRoot":"","sources":["../../src/channel/channel_config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_gateway.d.ts","sourceRoot":"","sources":["../../src/channel/channel_gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAyB,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAIhD,eAAO,MAAM,cAAc,EAAC,qBAAqB,CAAC,sBAAsB,CAgBvE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { WSClient } from "../client/ws_client";
|
|
2
|
+
export const gatewayAdapter = {
|
|
3
|
+
startAccount: async (ctx) => {
|
|
4
|
+
ctx.log?.info("start ws client!");
|
|
5
|
+
const client = new WSClient(ctx);
|
|
6
|
+
// 连接
|
|
7
|
+
await client.connect();
|
|
8
|
+
// 保持运行,直到 abort signal 触发
|
|
9
|
+
return new Promise((resolve) => {
|
|
10
|
+
ctx.abortSignal.addEventListener('abort', () => {
|
|
11
|
+
ctx.log?.info("Stopping ws client...");
|
|
12
|
+
client.disconnect();
|
|
13
|
+
resolve();
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=channel_gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_gateway.js","sourceRoot":"","sources":["../../src/channel/channel_gateway.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAA+C;IACtE,YAAY,EAAC,KAAK,EAAE,GAAiD,EAAC,EAAE;QACpE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACjC,MAAM,MAAM,GAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC9B,KAAK;QACL,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QAEvB,0BAA0B;QAC1B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAC,EAAE;YAChC,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAC,GAAE,EAAE;gBACzC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAA;gBACtC,MAAM,CAAC,UAAU,EAAE,CAAA;gBACnB,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;CACJ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_onboarding.d.ts","sourceRoot":"","sources":["../../src/channel/channel_onboarding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAmH,MAAM,qBAAqB,CAAC;AAKhL,eAAO,MAAM,iBAAiB,EAAC,wBAiE9B,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { DEFAULT_ACCOUNT_ID, mergeAllowFromEntries, setTopLevelChannelAllowFrom, setTopLevelChannelDmPolicyWithAllowFrom } from "openclaw/plugin-sdk";
|
|
2
|
+
import { CHANNEL_ID, CHANNEL_NAME } from "./channel_common";
|
|
3
|
+
import { getChannelCurrentConfig } from "./channel_utils";
|
|
4
|
+
export const onBoardingAdapter = {
|
|
5
|
+
channel: CHANNEL_ID,
|
|
6
|
+
getStatus: async ({ cfg }) => {
|
|
7
|
+
const config = getChannelCurrentConfig(cfg);
|
|
8
|
+
const is_configured = (config) => {
|
|
9
|
+
return !!config.wsHost;
|
|
10
|
+
};
|
|
11
|
+
return {
|
|
12
|
+
channel: CHANNEL_ID,
|
|
13
|
+
configured: is_configured(config),
|
|
14
|
+
statusLines: ['statusLines'],
|
|
15
|
+
selectionHint: "selectionHint"
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
configure: async ({ cfg, prompter }) => {
|
|
19
|
+
const wsHost = await prompter.text({
|
|
20
|
+
message: "服务器地址",
|
|
21
|
+
initialValue: "http://127.0.0.1:8765"
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
cfg: {
|
|
25
|
+
...cfg,
|
|
26
|
+
channels: {
|
|
27
|
+
...cfg.channels,
|
|
28
|
+
[CHANNEL_ID]: {
|
|
29
|
+
...cfg.channels?.[CHANNEL_ID],
|
|
30
|
+
"wsHost": wsHost,
|
|
31
|
+
"enabled": true
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
accountId: DEFAULT_ACCOUNT_ID
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
dmPolicy: {
|
|
39
|
+
label: CHANNEL_NAME,
|
|
40
|
+
channel: CHANNEL_ID,
|
|
41
|
+
policyKey: `channels.${CHANNEL_ID}.dmPolicy`,
|
|
42
|
+
allowFromKey: `channels.${CHANNEL_ID}.allowFrom`,
|
|
43
|
+
getCurrent: (cfg) => {
|
|
44
|
+
const config = getChannelCurrentConfig(cfg);
|
|
45
|
+
return config?.dmPolicy ?? 'pairing';
|
|
46
|
+
},
|
|
47
|
+
setPolicy: (cfg, policy) => {
|
|
48
|
+
return setTopLevelChannelDmPolicyWithAllowFrom({
|
|
49
|
+
cfg,
|
|
50
|
+
channel: CHANNEL_ID,
|
|
51
|
+
dmPolicy: policy,
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
promptAllowFrom: async ({ cfg, prompter }) => {
|
|
55
|
+
const config = getChannelCurrentConfig(cfg);
|
|
56
|
+
const existing = config?.allowFrom ?? [];
|
|
57
|
+
const entry = await prompter.text({
|
|
58
|
+
message: "allow open id",
|
|
59
|
+
placeholder: "白名单",
|
|
60
|
+
});
|
|
61
|
+
const unique = mergeAllowFromEntries(existing, [entry]);
|
|
62
|
+
return setTopLevelChannelAllowFrom({
|
|
63
|
+
cfg,
|
|
64
|
+
channel: CHANNEL_ID,
|
|
65
|
+
allowFrom: unique
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=channel_onboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_onboarding.js","sourceRoot":"","sources":["../../src/channel/channel_onboarding.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,kBAAkB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,uCAAuC,EAAE,MAAM,qBAAqB,CAAC;AAChL,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAoB,MAAM,iBAAiB,CAAC;AAG5E,MAAM,CAAC,MAAM,iBAAiB,GAA0B;IACpD,OAAO,EAAC,UAAU;IAClB,SAAS,EAAC,KAAK,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE;QACrB,MAAM,MAAM,GAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;QACzC,MAAM,aAAa,GAAC,CAAC,MAAoB,EAAS,EAAE;YAChD,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;QAC1B,CAAC,CAAA;QACD,OAAO;YACH,OAAO,EAAC,UAAU;YAClB,UAAU,EAAC,aAAa,CAAC,MAAM,CAAC;YAChC,WAAW,EAAC,CAAC,aAAa,CAAC;YAC3B,aAAa,EAAC,eAAe;SAChC,CAAA;IACL,CAAC;IACD,SAAS,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAC,EAAE;QACjC,MAAM,MAAM,GAAC,MAAM,QAAQ,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAC,OAAO;YACf,YAAY,EAAC,uBAAuB;SACvC,CAAC,CAAA;QACF,OAAO;YACH,GAAG,EAAE;gBACD,GAAG,GAAG;gBACN,QAAQ,EAAC;oBACL,GAAG,GAAG,CAAC,QAAQ;oBACf,CAAC,UAAU,CAAC,EAAC;wBACT,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;wBAC7B,QAAQ,EAAC,MAAM;wBACf,SAAS,EAAC,IAAI;qBACjB;iBACJ;aACJ;YACD,SAAS,EAAC,kBAAkB;SAC/B,CAAA;IACL,CAAC;IACD,QAAQ,EAAC;QACL,KAAK,EAAC,YAAY;QAClB,OAAO,EAAC,UAAU;QAClB,SAAS,EAAC,YAAY,UAAU,WAAW;QAC3C,YAAY,EAAE,YAAY,UAAU,YAAY;QAChD,UAAU,EAAC,CAAC,GAAG,EAAC,EAAE;YACd,MAAM,MAAM,GAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;YACzC,OAAO,MAAM,EAAE,QAAQ,IAAI,SAAS,CAAA;QACxC,CAAC;QACD,SAAS,EAAC,CAAC,GAAG,EAAC,MAAM,EAAC,EAAE;YACpB,OAAO,uCAAuC,CAAC;gBAC3C,GAAG;gBACH,OAAO,EAAC,UAAU;gBAClB,QAAQ,EAAC,MAAM;aAClB,CAAC,CAAA;QACN,CAAC;QACD,eAAe,EAAC,KAAK,EAAE,EAAC,GAAG,EAAC,QAAQ,EAAC,EAAC,EAAE;YACpC,MAAM,MAAM,GAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;YACzC,MAAM,QAAQ,GAAG,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;gBAC9B,OAAO,EAAC,eAAe;gBACvB,WAAW,EAAC,KAAK;aACpB,CAAC,CAAA;YACF,MAAM,MAAM,GAAC,qBAAqB,CAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YACpD,OAAO,2BAA2B,CAAC;gBAC/B,GAAG;gBACH,OAAO,EAAC,UAAU;gBAClB,SAAS,EAAC,MAAM;aACnB,CAAC,CAAA;QACN,CAAC;KACJ;CACJ,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OpenClawConfig } from "openclaw/plugin-sdk";
|
|
2
|
+
import { ChannelConfig } from "./type";
|
|
3
|
+
export declare const getChannelCurrentConfig: (cfg: OpenClawConfig) => ChannelConfig;
|
|
4
|
+
/**
|
|
5
|
+
* 设置 channel 配置项
|
|
6
|
+
* @param cfg 完整的 OpenClaw 配置对象
|
|
7
|
+
* @param key 配置键名(如 'wsHost', 'enabled' 等)
|
|
8
|
+
* @param value 配置值
|
|
9
|
+
* @returns 更新后的完整配置对象
|
|
10
|
+
*/
|
|
11
|
+
export declare const setChannelConfig: (cfg: OpenClawConfig, key: string, value: any) => OpenClawConfig;
|
|
12
|
+
//# sourceMappingURL=channel_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_utils.d.ts","sourceRoot":"","sources":["../../src/channel/channel_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAGtC,eAAO,MAAM,uBAAuB,GAAE,KAAI,cAAc,KAAE,aAMzD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAE,KAAI,cAAc,EAAE,KAAI,MAAM,EAAE,OAAM,GAAG,KAAE,cAEzE,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { set } from 'lodash';
|
|
2
|
+
import { CHANNEL_ID } from "./channel_common";
|
|
3
|
+
export const getChannelCurrentConfig = (cfg) => {
|
|
4
|
+
if (cfg.channels) {
|
|
5
|
+
const channel = cfg?.channels[CHANNEL_ID];
|
|
6
|
+
return channel;
|
|
7
|
+
}
|
|
8
|
+
return {};
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* 设置 channel 配置项
|
|
12
|
+
* @param cfg 完整的 OpenClaw 配置对象
|
|
13
|
+
* @param key 配置键名(如 'wsHost', 'enabled' 等)
|
|
14
|
+
* @param value 配置值
|
|
15
|
+
* @returns 更新后的完整配置对象
|
|
16
|
+
*/
|
|
17
|
+
export const setChannelConfig = (cfg, key, value) => {
|
|
18
|
+
return set(cfg, `channels.${CHANNEL_ID}.${key}`, value);
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=channel_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel_utils.js","sourceRoot":"","sources":["../../src/channel/channel_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,uBAAuB,GAAC,CAAC,GAAkB,EAAe,EAAE;IACrE,IAAG,GAAG,CAAC,QAAQ,EAAC,CAAC;QACb,MAAM,OAAO,GAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;QACvC,OAAO,OAAwB,CAAA;IACnC,CAAC;IACD,OAAO,EAAE,CAAA;AACb,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAC,CAAC,GAAkB,EAAE,GAAU,EAAE,KAAS,EAAgB,EAAE;IACtF,OAAO,GAAG,CAAC,GAAG,EAAE,YAAY,UAAU,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,wBAAgB,eAAe,CAAC,GAAG,EAAC,iBAAiB,QAEpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channel/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,UAAU,eAAe,CAAC,GAAqB;IACjD,GAAG,CAAC,eAAe,CAAC,EAAC,MAAM,EAAC,aAAa,EAAC,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/channel/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAMhD,eAAO,MAAM,aAAa,EAAC,aAAa,CAAC,sBAAsB,EAAC,GAAG,CAkElE,CAAA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { CHANNEL_ALIASES, CHANNEL_BLURB, CHANNEL_CFG_PREFIXES, CHANNEL_DOCSPATH, CHANNEL_DOCSPATH_LABEL, CHANNEL_ID, CHANNEL_MESSAGE_TOOL_HINTS, CHANNEL_NAME, CHANNEL_ORDER, CHANNEL_SELECTIONLABEL } from "./channel_common";
|
|
2
|
+
import { configAdapter } from './channel_config';
|
|
3
|
+
import { gatewayAdapter } from "./channel_gateway";
|
|
4
|
+
import { onBoardingAdapter } from "./channel_onboarding";
|
|
5
|
+
export const channelPlugin = {
|
|
6
|
+
id: CHANNEL_ID,
|
|
7
|
+
meta: {
|
|
8
|
+
id: CHANNEL_ID,
|
|
9
|
+
label: CHANNEL_NAME,
|
|
10
|
+
selectionLabel: CHANNEL_SELECTIONLABEL,
|
|
11
|
+
docsPath: CHANNEL_DOCSPATH,
|
|
12
|
+
docsLabel: CHANNEL_DOCSPATH_LABEL,
|
|
13
|
+
blurb: CHANNEL_BLURB,
|
|
14
|
+
aliases: CHANNEL_ALIASES,
|
|
15
|
+
order: CHANNEL_ORDER,
|
|
16
|
+
},
|
|
17
|
+
capabilities: {
|
|
18
|
+
// 直接的 群组 频道 线程
|
|
19
|
+
chatTypes: ["direct", "channel"],
|
|
20
|
+
polls: true,
|
|
21
|
+
//反应
|
|
22
|
+
reactions: true,
|
|
23
|
+
//编辑
|
|
24
|
+
edit: true,
|
|
25
|
+
//未发送
|
|
26
|
+
//unsend:true,
|
|
27
|
+
//回复
|
|
28
|
+
reply: true,
|
|
29
|
+
//效果
|
|
30
|
+
//effects:true,
|
|
31
|
+
//组管理
|
|
32
|
+
//groupManagement:true,
|
|
33
|
+
//线程
|
|
34
|
+
threads: true,
|
|
35
|
+
//媒体
|
|
36
|
+
media: true,
|
|
37
|
+
// 原生命令
|
|
38
|
+
nativeCommands: true,
|
|
39
|
+
//块流
|
|
40
|
+
//blockStreaming:true,
|
|
41
|
+
},
|
|
42
|
+
//智能体提示词
|
|
43
|
+
agentPrompt: {
|
|
44
|
+
messageToolHints(params) {
|
|
45
|
+
return CHANNEL_MESSAGE_TOOL_HINTS;
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
reload: {
|
|
49
|
+
//需要重载的配置前缀
|
|
50
|
+
configPrefixes: CHANNEL_CFG_PREFIXES,
|
|
51
|
+
//noop前缀
|
|
52
|
+
//noopPrefixes:[]
|
|
53
|
+
},
|
|
54
|
+
configSchema: {
|
|
55
|
+
schema: {
|
|
56
|
+
type: "object",
|
|
57
|
+
additionalProperties: false,
|
|
58
|
+
properties: {
|
|
59
|
+
wsHost: {
|
|
60
|
+
type: "string"
|
|
61
|
+
},
|
|
62
|
+
enabled: {
|
|
63
|
+
type: "boolean"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
config: configAdapter,
|
|
69
|
+
gateway: gatewayAdapter,
|
|
70
|
+
onboarding: onBoardingAdapter,
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/channel/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,UAAU,EAAE,0BAA0B,EAAE,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/N,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAA2C;IACjE,EAAE,EAAC,UAAU;IACb,IAAI,EAAC;QACD,EAAE,EAAC,UAAU;QACb,KAAK,EAAC,YAAY;QAClB,cAAc,EAAC,sBAAsB;QACrC,QAAQ,EAAC,gBAAgB;QACzB,SAAS,EAAC,sBAAsB;QAChC,KAAK,EAAC,aAAa;QACnB,OAAO,EAAC,eAAe;QACvB,KAAK,EAAC,aAAa;KACtB;IACD,YAAY,EAAC;QACT,eAAe;QACf,SAAS,EAAC,CAAC,QAAQ,EAAG,SAAS,CAAC;QAChC,KAAK,EAAC,IAAI;QACV,IAAI;QACJ,SAAS,EAAC,IAAI;QACd,IAAI;QACJ,IAAI,EAAC,IAAI;QACT,KAAK;QACL,cAAc;QACd,IAAI;QACJ,KAAK,EAAC,IAAI;QACV,IAAI;QACJ,eAAe;QACf,KAAK;QACL,uBAAuB;QACvB,IAAI;QACJ,OAAO,EAAC,IAAI;QACZ,IAAI;QACJ,KAAK,EAAC,IAAI;QACV,OAAO;QACP,cAAc,EAAC,IAAI;QACnB,IAAI;QACJ,sBAAsB;KACzB;IACD,QAAQ;IACR,WAAW,EAAC;QACR,gBAAgB,CAAC,MAAM;YACnB,OAAO,0BAA0B,CAAA;QACrC,CAAC;KACJ;IACD,MAAM,EAAC;QACH,WAAW;QACX,cAAc,EAAE,oBAAoB;QACpC,QAAQ;QACR,iBAAiB;KACpB;IACD,YAAY,EAAC;QACT,MAAM,EAAC;YACH,IAAI,EAAC,QAAQ;YACb,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAC;gBACP,MAAM,EAAC;oBACH,IAAI,EAAE,QAAQ;iBACjB;gBACD,OAAO,EAAC;oBACJ,IAAI,EAAC,SAAS;iBACjB;aACJ;SACJ;KACJ;IACD,MAAM,EAAC,aAAa;IACpB,OAAO,EAAC,cAAc;IACtB,UAAU,EAAC,iBAAiB;CAC/B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAA"}
|