@xmanrui/dsh-im 4.16.1 → 4.17.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/README.en.md +3 -1
- package/README.md +3 -1
- package/lib/client.js +90 -34
- package/lib/index.js +265 -262
- package/package.json +4 -3
- package/plugin-src/client/channels/feishu/api.js +3 -0
- package/plugin-src/client/channels/feishu/index.js +45 -13
- package/plugin-src/client/i18n.js +13 -2
- package/plugin-src/client/index.js +15 -14
- package/plugin-src/host/channels/dingtalk/rpc.mjs +2 -4
- package/plugin-src/host/channels/feishu/production.mjs +1 -0
- package/plugin-src/host/channels/feishu/rpc.mjs +22 -4
- package/plugin-src/host/channels/office/rpc.mjs +2 -1
- package/plugin-src/host/channels/qq/rpc.mjs +2 -4
- package/plugin-src/host/channels/shared/rpc.mjs +2 -4
- package/plugin-src/host/channels/shared/startup.mjs +2 -4
- package/plugin-src/host/channels/slack/rpc.mjs +2 -4
- package/plugin-src/host/channels/telegram/rpc.mjs +2 -4
- package/plugin-src/host/channels/wecom/rpc.mjs +2 -4
- package/plugin-src/host/channels/wecom-app/rpc.mjs +2 -4
- package/plugin-src/host/channels/weixin/rpc.mjs +2 -4
- package/plugin-src/host/channels/whatsapp/rpc.mjs +2 -4
- package/plugin-src/host/delivery-rpc.mjs +2 -4
- package/plugin-src/host/inbound-ttl-rpc.mjs +2 -4
- package/plugin-src/host/index.mjs +1 -1
- package/plugin-src/host/update-rpc.mjs +2 -1
- package/plugin-src/management-rpc.mjs +77 -0
- package/src/channels/feishu/bridge.mjs +475 -11
- package/src/channels/feishu/feishu-cards.mjs +130 -0
- package/src/channels/feishu/feishu-runtime.mjs +10 -0
- package/src/channels/feishu/multi-bot-controller.mjs +28 -0
- package/src/channels/feishu/plugin-config-store.mjs +2 -0
- package/src/channels/feishu/step-push-mode.mjs +19 -0
- package/src/channels/shared/i18n-en/feishu.mjs +8 -0
package/README.en.md
CHANGED
|
@@ -226,6 +226,8 @@ DingTalk menus use a shared template built into the plugin; no template setup is
|
|
|
226
226
|
|
|
227
227
|
## Local development
|
|
228
228
|
|
|
229
|
+
The Web profile is verified with unmodified DSH `0.1.2-alpha.4`, `0.1.2-alpha.5`, `0.1.2-rc.1`, `0.1.3-alpha.1`, and `0.1.5-alpha.1`. All use the same dsh-im management RPC adapter through the public Connection `/api` Fetch registry; no DSH patch or rebuild is required. After upgrading the plugin, restart the Host and refresh the settings page so both sides use the same plugin build.
|
|
230
|
+
|
|
229
231
|
```sh
|
|
230
232
|
npm install
|
|
231
233
|
npm run check
|
|
@@ -242,7 +244,7 @@ IM management RPCs accept loopback browsers by default. When a Web profile is de
|
|
|
242
244
|
rpcAuthority: trusted-host
|
|
243
245
|
```
|
|
244
246
|
|
|
245
|
-
`trusted-host`
|
|
247
|
+
`trusted-host` allows trusted authorities to reach IM management after Harness browser authentication and Host/Origin checks. The default `loopback` policy additionally requires loopback Host and Origin values; update and inbound TTL management always remain loopback-only.
|
|
246
248
|
|
|
247
249
|
### Bot chat message language
|
|
248
250
|
|
package/README.md
CHANGED
|
@@ -232,6 +232,8 @@ Logo 由 dsh-im 的浏览器适配显示,无需修改 DSH。适配保留原始
|
|
|
232
232
|
|
|
233
233
|
## 本地开发
|
|
234
234
|
|
|
235
|
+
Web profile 已验证兼容原版 DSH `0.1.2-alpha.4`、`0.1.2-alpha.5`、`0.1.2-rc.1`、`0.1.3-alpha.1` 和 `0.1.5-alpha.1`。这些版本共用 dsh-im 的管理 RPC 适配,通过 Connection 的公开 `/api` Fetch 注册接口工作,无需修改或重新编译 DSH。升级插件后重启 Host 并刷新设置页,使 Host 和客户端使用同一版插件。
|
|
236
|
+
|
|
235
237
|
```sh
|
|
236
238
|
npm install
|
|
237
239
|
npm run check
|
|
@@ -248,7 +250,7 @@ IM 管理 RPC 默认仅接受回环浏览器。如果 Web profile 在受信任
|
|
|
248
250
|
rpcAuthority: trusted-host
|
|
249
251
|
```
|
|
250
252
|
|
|
251
|
-
`trusted-host`
|
|
253
|
+
`trusted-host` 允许已通过 Harness 浏览器认证和 Host/Origin 检查的受信任地址访问 IM 管理接口。默认 `loopback` 还要求回环 Host 和 Origin;更新与入站 TTL 管理始终仅允许回环访问。
|
|
252
254
|
|
|
253
255
|
### 聊天消息语言
|
|
254
256
|
|
package/lib/client.js
CHANGED
|
@@ -566,12 +566,23 @@ __export(index_exports, {
|
|
|
566
566
|
name: () => name
|
|
567
567
|
});
|
|
568
568
|
module.exports = __toCommonJS(index_exports);
|
|
569
|
+
|
|
570
|
+
// plugin-src/management-rpc.mjs
|
|
571
|
+
function rpcEndpoint(channel4) {
|
|
572
|
+
if (!/^\/[A-Za-z0-9._~-]+$/.test(channel4)) throw new TypeError("Invalid IM RPC channel");
|
|
573
|
+
return `dsh-im${channel4}`;
|
|
574
|
+
}
|
|
575
|
+
function callManagementRpc(connection, channel4, method, payload, signal) {
|
|
576
|
+
return connection.rpc.call("/api", rpcEndpoint(channel4), { method, payload }, signal);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
// plugin-src/client/index.js
|
|
569
580
|
var React28 = __toESM(require("react"), 1);
|
|
570
581
|
|
|
571
582
|
// package.json
|
|
572
583
|
var package_default = {
|
|
573
584
|
name: "@xmanrui/dsh-im",
|
|
574
|
-
version: "4.
|
|
585
|
+
version: "4.17.1",
|
|
575
586
|
description: "\u628A\u5341\u79CD IM \u673A\u5668\u4EBA\u548C\u516C\u7F51 AI Office \u63A5\u5165\u672C\u673A DeepSeek Harness\u3002 Connect ten IM channels and a public AI Office to a local DeepSeek Harness.",
|
|
576
587
|
keywords: [
|
|
577
588
|
"deepseek-harness",
|
|
@@ -668,12 +679,13 @@ var package_default = {
|
|
|
668
679
|
platform: "web"
|
|
669
680
|
},
|
|
670
681
|
compatibility: {
|
|
671
|
-
dsh: "0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.1",
|
|
682
|
+
dsh: "0.1.2-alpha.4 || 0.1.2-alpha.5 || 0.1.2-rc.1 || 0.1.3-alpha.1 || 0.1.5-alpha.1",
|
|
672
683
|
dshReleases: {
|
|
673
684
|
"0.1.2-alpha.4": "compatible",
|
|
674
685
|
"0.1.2-alpha.5": "compatible",
|
|
675
686
|
"0.1.2-rc.1": "compatible",
|
|
676
|
-
"0.1.3-alpha.1": "compatible"
|
|
687
|
+
"0.1.3-alpha.1": "compatible",
|
|
688
|
+
"0.1.5-alpha.1": "compatible"
|
|
677
689
|
},
|
|
678
690
|
profiles: [
|
|
679
691
|
"web"
|
|
@@ -1085,9 +1097,18 @@ var EN = Object.freeze({
|
|
|
1085
1097
|
"\u5206\u6B65\u76F4\u63A8": "Step push",
|
|
1086
1098
|
"\u67E5\u770B\u5206\u6B65\u76F4\u63A8\u8BF4\u660E": "View step push help",
|
|
1087
1099
|
"\u5F00\u542F\u540E\u9010\u6B65\u63A8\u9001\u5DE5\u5177\u8C03\u7528\u4E0E\u8FC7\u7A0B\u8BF4\u660E": "Push tool calls and process notes step by step",
|
|
1088
|
-
"\
|
|
1089
|
-
"\
|
|
1100
|
+
"\u4EFB\u52A1\u8FC7\u7A0B\u5C55\u793A": "Task progress display",
|
|
1101
|
+
"\u8BBE\u7F6E\u4EFB\u52A1\u6267\u884C\u8FC7\u7A0B\u7684\u5448\u73B0\u65B9\u5F0F\uFF1A\u4E0D\u663E\u793A\u3001\u5B9E\u65F6\u5361\u7247\u6216\u9010\u6B65\u6D88\u606F": "Choose how the execution is presented: hidden, one live card, or step-by-step messages",
|
|
1102
|
+
"\u4E0D\u663E\u793A\u8FC7\u7A0B\uFF08\u53EA\u53D1\u9001\u6700\u7EC8\u7B54\u6848\uFF09": "Hide the process (send the final answer only)",
|
|
1103
|
+
"\u5B9E\u65F6\u8FC7\u7A0B\u5361\uFF08\u5168\u7A0B\u4E00\u5F20\u5361\u7247\u52A8\u6001\u66F4\u65B0\uFF09": "Live process card (one card updated throughout)",
|
|
1104
|
+
"\u9010\u6B65\u76F4\u64AD\uFF08\u6BCF\u4E00\u6B65\u5355\u72EC\u53D1\u4E00\u6761\u6D88\u606F\uFF09": "Step-by-step feed (one message per step)",
|
|
1105
|
+
"\u9002\u5408\u65E5\u5E38\u95EE\u7B54\uFF1A\u6267\u884C\u8FC7\u7A0B\u4E2D\u4E0D\u663E\u793A\u5DE5\u5177\u8C03\u7528\u7B49\u4E2D\u95F4\u6B65\u9AA4\uFF0C\u53EA\u56DE\u590D\u6700\u7EC8\u7ED3\u679C": "For everyday Q&A: tool calls and other interim steps stay hidden, only the final result is replied",
|
|
1106
|
+
"\u63A8\u8350\u957F\u4EFB\u52A1\u4F7F\u7528\uFF1A\u8FC7\u7A0B\u4E0E\u6700\u7EC8\u7B54\u6848\u90FD\u5728\u540C\u4E00\u5F20\u5361\u7247\u91CC\u5B9E\u65F6\u66F4\u65B0\uFF0C\u4E0D\u5237\u5C4F": "Recommended for long tasks: the process and the final answer update live in one card without flooding the chat",
|
|
1107
|
+
"\u6BCF\u4E00\u6B65\u90FD\u5355\u72EC\u53D1\u4E00\u6761\u6D88\u606F\uFF08\u542B\u5DE5\u5177\u8C03\u7528\u548C\u8FC7\u7A0B\u8BF4\u660E\uFF09\uFF1B\u6CE8\u610F\u957F\u4EFB\u52A1\u4F1A\u8FDE\u7EED\u53D1\u9001\u8F83\u591A\u6D88\u606F": "Every step is sent as its own message (including tool calls and notes); long tasks may send many messages in a row",
|
|
1090
1108
|
"\u5206\u6B65\u76F4\u63A8\u8BBE\u7F6E\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002": "Could not save the step push setting. Try again.",
|
|
1109
|
+
"zcode\u8FC7\u7A0B\u5361\u6A21\u5F0F": "ZCode process-card mode",
|
|
1110
|
+
"\u8FC7\u7A0B\u8BF4\u660E\u3001\u5DE5\u5177\u6458\u8981\u4E0E\u6700\u7EC8\u7B54\u6848\u90FD\u5728\u540C\u4E00\u5F20\u5361\u7247\u4E2D\u539F\u5730\u5237\u65B0": "Process notes, the tool summary, and the final answer refresh in place inside one card",
|
|
1111
|
+
"\u601D\u8003\u4E0E\u5DE5\u5177\u6458\u8981\u6298\u53E0\u5C55\u793A\uFF0C\u6700\u7EC8\u7B54\u6848\u5728\u540C\u4E00\u5F20\u5361\u7247\u4E2D\u539F\u5730\u5237\u65B0": "Thinking and the tool summary stay folded; the final answer refreshes in place inside one card",
|
|
1091
1112
|
"\u9489\u9489\u8BBE\u7F6E": "DingTalk settings",
|
|
1092
1113
|
"\u4F01\u4E1A\u5FAE\u4FE1\u8BBE\u7F6E": "WeCom settings",
|
|
1093
1114
|
"\u626B\u7801\u63A5\u5165\u673A\u5668\u4EBA": "Scan QR code",
|
|
@@ -5974,6 +5995,16 @@ var DiscordAccountCard = channel.AccountCard;
|
|
|
5974
5995
|
// plugin-src/client/channels/feishu/index.js
|
|
5975
5996
|
var React15 = __toESM(require("react"), 1);
|
|
5976
5997
|
|
|
5998
|
+
// src/channels/feishu/step-push-mode.mjs
|
|
5999
|
+
var FEISHU_STEP_PUSH_MODES = Object.freeze({
|
|
6000
|
+
POST: "post",
|
|
6001
|
+
STREAMING_CARD: "streaming_card"
|
|
6002
|
+
});
|
|
6003
|
+
var DEFAULT_FEISHU_STEP_PUSH_MODE = FEISHU_STEP_PUSH_MODES.STREAMING_CARD;
|
|
6004
|
+
function normalizeFeishuStepPushMode(value) {
|
|
6005
|
+
return value === FEISHU_STEP_PUSH_MODES.STREAMING_CARD ? FEISHU_STEP_PUSH_MODES.STREAMING_CARD : FEISHU_STEP_PUSH_MODES.POST;
|
|
6006
|
+
}
|
|
6007
|
+
|
|
5977
6008
|
// plugin-src/client/channels/feishu/api.js
|
|
5978
6009
|
var FEISHU_RPC_CHANNEL = "/feishu";
|
|
5979
6010
|
var FEISHU_ENDPOINTS = Object.freeze({
|
|
@@ -5995,6 +6026,7 @@ var FEISHU_ENDPOINTS = Object.freeze({
|
|
|
5995
6026
|
setGroupResponseMode: "bot.group-response-mode.set",
|
|
5996
6027
|
setGroupTopicReply: "bot.group-topic-reply.set",
|
|
5997
6028
|
setStepPush: "bot.step-push.set",
|
|
6029
|
+
setStepPushMode: "bot.step-push-mode.set",
|
|
5998
6030
|
// Kept for rolling upgrades. The multi-bot UI never calls these endpoints.
|
|
5999
6031
|
testConnection: "connection.test",
|
|
6000
6032
|
disconnect: "connection.disconnect"
|
|
@@ -6148,6 +6180,7 @@ function normalizeBotConnection(value, fallbackBotId) {
|
|
|
6148
6180
|
groupResponseMode: normalizeGroupResponseMode(value.groupResponseMode),
|
|
6149
6181
|
groupTopicReply: value.groupTopicReply === true,
|
|
6150
6182
|
stepPush: value.stepPush === true,
|
|
6183
|
+
stepPushMode: normalizeFeishuStepPushMode(value.stepPushMode),
|
|
6151
6184
|
groupMessagePermissionGranted: value.groupMessagePermissionGranted === true,
|
|
6152
6185
|
bot: normalizeBot2(value.bot),
|
|
6153
6186
|
health: normalizeHealth(value.health, connected),
|
|
@@ -6718,25 +6751,38 @@ function RemoveConfirmation2({ bot, busy, onConfirm, onCancel }) {
|
|
|
6718
6751
|
)
|
|
6719
6752
|
);
|
|
6720
6753
|
}
|
|
6721
|
-
function StepPushEditor({ value = false, disabled = false, onSave }) {
|
|
6754
|
+
function StepPushEditor({ value = false, mode = "post", disabled = false, onSave, onModeSave }) {
|
|
6722
6755
|
const titleId = React15.useId();
|
|
6723
6756
|
const helpId = `${titleId}-help`;
|
|
6724
|
-
const current = value === true ?
|
|
6757
|
+
const current = value === true ? mode : "off";
|
|
6725
6758
|
const [saving, setSaving] = React15.useState(false);
|
|
6726
6759
|
const [error, setError] = React15.useState(null);
|
|
6727
|
-
const
|
|
6728
|
-
|
|
6729
|
-
if ((next ? "on" : "off") === current || saving || disabled) return;
|
|
6760
|
+
const save = async (run) => {
|
|
6761
|
+
if (saving || disabled) return;
|
|
6730
6762
|
setSaving(true);
|
|
6731
6763
|
setError(null);
|
|
6732
6764
|
try {
|
|
6733
|
-
await
|
|
6765
|
+
await run();
|
|
6734
6766
|
} catch (cause) {
|
|
6735
6767
|
setError(cause?.message ?? "\u5206\u6B65\u76F4\u63A8\u8BBE\u7F6E\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002");
|
|
6736
6768
|
} finally {
|
|
6737
6769
|
setSaving(false);
|
|
6738
6770
|
}
|
|
6739
6771
|
};
|
|
6772
|
+
const change = (event) => {
|
|
6773
|
+
const next = event.target.value;
|
|
6774
|
+
if (next === current) return;
|
|
6775
|
+
void save(async () => {
|
|
6776
|
+
if (next === "off") {
|
|
6777
|
+
if (value === true) await onSave?.(false);
|
|
6778
|
+
return;
|
|
6779
|
+
}
|
|
6780
|
+
const nextMode = next === "streaming_card" ? "streaming_card" : "post";
|
|
6781
|
+
if (value !== true) await onSave?.(true);
|
|
6782
|
+
if (nextMode !== mode) await onModeSave?.(nextMode);
|
|
6783
|
+
});
|
|
6784
|
+
};
|
|
6785
|
+
const helpText = current === "off" ? "\u9002\u5408\u65E5\u5E38\u95EE\u7B54\uFF1A\u6267\u884C\u8FC7\u7A0B\u4E2D\u4E0D\u663E\u793A\u5DE5\u5177\u8C03\u7528\u7B49\u4E2D\u95F4\u6B65\u9AA4\uFF0C\u53EA\u56DE\u590D\u6700\u7EC8\u7ED3\u679C" : current === "streaming_card" ? "\u63A8\u8350\u957F\u4EFB\u52A1\u4F7F\u7528\uFF1A\u8FC7\u7A0B\u4E0E\u6700\u7EC8\u7B54\u6848\u90FD\u5728\u540C\u4E00\u5F20\u5361\u7247\u91CC\u5B9E\u65F6\u66F4\u65B0\uFF0C\u4E0D\u5237\u5C4F" : "\u6BCF\u4E00\u6B65\u90FD\u5355\u72EC\u53D1\u4E00\u6761\u6D88\u606F\uFF08\u542B\u5DE5\u5177\u8C03\u7528\u548C\u8FC7\u7A0B\u8BF4\u660E\uFF09\uFF1B\u6CE8\u610F\u957F\u4EFB\u52A1\u4F1A\u8FDE\u7EED\u53D1\u9001\u8F83\u591A\u6D88\u606F";
|
|
6740
6786
|
return h2(
|
|
6741
6787
|
"section",
|
|
6742
6788
|
{
|
|
@@ -6749,7 +6795,7 @@ function StepPushEditor({ value = false, disabled = false, onSave }) {
|
|
|
6749
6795
|
h2(
|
|
6750
6796
|
"div",
|
|
6751
6797
|
{ className: "dim-presetTitle" },
|
|
6752
|
-
h2("h3", { id: titleId }, "\
|
|
6798
|
+
h2("h3", { id: titleId }, "\u4EFB\u52A1\u8FC7\u7A0B\u5C55\u793A"),
|
|
6753
6799
|
h2(
|
|
6754
6800
|
"span",
|
|
6755
6801
|
{ className: "dim-presetHelp" },
|
|
@@ -6763,7 +6809,7 @@ function StepPushEditor({ value = false, disabled = false, onSave }) {
|
|
|
6763
6809
|
id: helpId,
|
|
6764
6810
|
className: "dim-presetTooltip",
|
|
6765
6811
|
role: "tooltip"
|
|
6766
|
-
}, "\
|
|
6812
|
+
}, "\u8BBE\u7F6E\u4EFB\u52A1\u6267\u884C\u8FC7\u7A0B\u7684\u5448\u73B0\u65B9\u5F0F\uFF1A\u4E0D\u663E\u793A\u3001\u5B9E\u65F6\u5361\u7247\u6216\u9010\u6B65\u6D88\u606F")
|
|
6767
6813
|
)
|
|
6768
6814
|
),
|
|
6769
6815
|
saving ? h2("span", { className: "dim-feishuGroupControlStatus", role: "status" }, "\u4FDD\u5B58\u4E2D\u2026") : null
|
|
@@ -6774,14 +6820,14 @@ function StepPushEditor({ value = false, disabled = false, onSave }) {
|
|
|
6774
6820
|
className: "dim-feishuGroupSelect",
|
|
6775
6821
|
value: current,
|
|
6776
6822
|
disabled: disabled || saving,
|
|
6777
|
-
"aria-label": "\
|
|
6778
|
-
onChange:
|
|
6779
|
-
void change(event);
|
|
6780
|
-
}
|
|
6823
|
+
"aria-label": "\u4EFB\u52A1\u8FC7\u7A0B\u5C55\u793A",
|
|
6824
|
+
onChange: change
|
|
6781
6825
|
},
|
|
6782
|
-
h2("option", { value: "off" }, "\
|
|
6783
|
-
h2("option", { value: "
|
|
6826
|
+
h2("option", { value: "off" }, "\u4E0D\u663E\u793A\u8FC7\u7A0B\uFF08\u53EA\u53D1\u9001\u6700\u7EC8\u7B54\u6848\uFF09"),
|
|
6827
|
+
h2("option", { value: "streaming_card" }, "\u5B9E\u65F6\u8FC7\u7A0B\u5361\uFF08\u5168\u7A0B\u4E00\u5F20\u5361\u7247\u52A8\u6001\u66F4\u65B0\uFF09"),
|
|
6828
|
+
h2("option", { value: "post" }, "\u9010\u6B65\u76F4\u64AD\uFF08\u6BCF\u4E00\u6B65\u5355\u72EC\u53D1\u4E00\u6761\u6D88\u606F\uFF09")
|
|
6784
6829
|
),
|
|
6830
|
+
h2("p", { className: "dim-feishuGroupHelp" }, helpText),
|
|
6785
6831
|
error ? h2("p", {
|
|
6786
6832
|
className: "dim-feishuGroupError",
|
|
6787
6833
|
role: "alert"
|
|
@@ -6804,6 +6850,7 @@ function BotCard({
|
|
|
6804
6850
|
onAgentPresetSave,
|
|
6805
6851
|
onContextEnhancementSave,
|
|
6806
6852
|
onStepPushSave,
|
|
6853
|
+
onStepPushModeSave,
|
|
6807
6854
|
onRequestRemove,
|
|
6808
6855
|
onConfirmRemove,
|
|
6809
6856
|
onCancelRemove,
|
|
@@ -6908,8 +6955,10 @@ function BotCard({
|
|
|
6908
6955
|
}),
|
|
6909
6956
|
h2(StepPushEditor, {
|
|
6910
6957
|
value: connection.stepPush,
|
|
6958
|
+
mode: connection.stepPushMode,
|
|
6911
6959
|
disabled: Boolean(busy),
|
|
6912
|
-
onSave: onStepPushSave
|
|
6960
|
+
onSave: onStepPushSave,
|
|
6961
|
+
onModeSave: onStepPushModeSave
|
|
6913
6962
|
}),
|
|
6914
6963
|
provisionContent ? h2("section", {
|
|
6915
6964
|
className: "bxf-botProvision dim-botProvision",
|
|
@@ -7022,6 +7071,7 @@ function BotList(props) {
|
|
|
7022
7071
|
onAgentPresetSave: (agentPreset) => props.onAgentPresetSave(bot, agentPreset),
|
|
7023
7072
|
onContextEnhancementSave: (config) => props.onContextEnhancementSave(bot, config),
|
|
7024
7073
|
onStepPushSave: (stepPush) => props.onStepPushSave(bot, stepPush),
|
|
7074
|
+
onStepPushModeSave: (stepPushMode) => props.onStepPushModeSave(bot, stepPushMode),
|
|
7025
7075
|
onRequestRemove: () => props.onRequestRemove(bot),
|
|
7026
7076
|
onConfirmRemove: () => props.onConfirmRemove(bot),
|
|
7027
7077
|
onCancelRemove: props.onCancelRemove,
|
|
@@ -7730,6 +7780,12 @@ function FeishuSettingsTab({ rpcCall }) {
|
|
|
7730
7780
|
FEISHU_ENDPOINTS.setStepPush,
|
|
7731
7781
|
{ stepPush }
|
|
7732
7782
|
),
|
|
7783
|
+
onStepPushModeSave: (connection, stepPushMode) => saveBotSetting(
|
|
7784
|
+
connection,
|
|
7785
|
+
"step-push-mode",
|
|
7786
|
+
FEISHU_ENDPOINTS.setStepPushMode,
|
|
7787
|
+
{ stepPushMode }
|
|
7788
|
+
),
|
|
7733
7789
|
onRequestRemove: requestRemove,
|
|
7734
7790
|
onConfirmRemove: (bot) => void confirmRemove(bot),
|
|
7735
7791
|
onCancelRemove: cancelRemove,
|
|
@@ -17472,20 +17528,20 @@ function apply(ctx) {
|
|
|
17472
17528
|
for (const dispose of disposers.reverse()) dispose();
|
|
17473
17529
|
};
|
|
17474
17530
|
}, "im-settings: install combined channel styles");
|
|
17475
|
-
const feishuRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17476
|
-
const weixinRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17477
|
-
const dingtalkRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17478
|
-
const qqRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17479
|
-
const wecomRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17480
|
-
const wecomAppRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17481
|
-
const telegramRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17482
|
-
const discordRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17483
|
-
const whatsappRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17484
|
-
const slackRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17485
|
-
const officeRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17486
|
-
const updateRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17487
|
-
const deliveryRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17488
|
-
const globalSettingsRpcCall = (endpoint, payload, signal) => ctx.connection
|
|
17531
|
+
const feishuRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, FEISHU_RPC_CHANNEL, endpoint, payload, signal);
|
|
17532
|
+
const weixinRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, WEIXIN_RPC_CHANNEL, endpoint, payload, signal);
|
|
17533
|
+
const dingtalkRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, DINGTALK_RPC_CHANNEL, endpoint, payload, signal);
|
|
17534
|
+
const qqRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, QQ_RPC_CHANNEL, endpoint, payload, signal);
|
|
17535
|
+
const wecomRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, WECOM_RPC_CHANNEL, endpoint, payload, signal);
|
|
17536
|
+
const wecomAppRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, WECOM_APP_RPC_CHANNEL, endpoint, payload, signal);
|
|
17537
|
+
const telegramRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, TELEGRAM_RPC_CHANNEL, endpoint, payload, signal);
|
|
17538
|
+
const discordRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, DISCORD_RPC_CHANNEL, endpoint, payload, signal);
|
|
17539
|
+
const whatsappRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, WHATSAPP_RPC_CHANNEL, endpoint, payload, signal);
|
|
17540
|
+
const slackRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, SLACK_RPC_CHANNEL, endpoint, payload, signal);
|
|
17541
|
+
const officeRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, OFFICE_RPC_CHANNEL, endpoint, payload, signal);
|
|
17542
|
+
const updateRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, UPDATE_RPC_CHANNEL, endpoint, payload, signal);
|
|
17543
|
+
const deliveryRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, DELIVERY_RPC_CHANNEL, endpoint, payload, signal);
|
|
17544
|
+
const globalSettingsRpcCall = (endpoint, payload, signal) => callManagementRpc(ctx.connection, GLOBAL_SETTINGS_RPC_CHANNEL, endpoint, payload, signal);
|
|
17489
17545
|
const workspaceDirectoryPicker = Object.freeze({
|
|
17490
17546
|
listDirectory: (path, signal) => callWorkspaceDirectoryApi(ctx, "listDirectory", path, signal),
|
|
17491
17547
|
pickDirectory: () => callWorkspaceDirectoryApi(ctx, "pickDirectory")
|