cclawd 2026.3.26 → 2026.3.27
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/.buildstamp +1 -1
- package/dist/{agents-C2_apaRl.js → agents-BNKB08km.js} +4 -4
- package/dist/{agents-jRHu-yVW.js → agents-BdtFdlIN.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/{channel-DbrLPVRk.js → channel-Dz1n3akq.js} +270 -11
- package/dist/{channels-CZH2hny_.js → channels-Bt0w3hbW.js} +4 -4
- package/dist/{channels-cli-DBYTAjRU.js → channels-cli-DgqDIEVC.js} +7 -7
- package/dist/{command-registry-BUCg5Yjv.js → command-registry-jlEvUAKq.js} +2 -2
- package/dist/{command-registry-DuepL5IT.js → command-registry-maV_byWv.js} +7 -7
- package/dist/{completion-cli-DEwxxtpl.js → completion-cli-B7KByNii.js} +2 -2
- package/dist/{completion-cli-BHl_-TbA.js → completion-cli-BgpfJ8GC.js} +3 -3
- package/dist/{config-cli-BUJXj3eo.js → config-cli-CkDay3qv.js} +1 -1
- package/dist/{configure-9-PQJTTK.js → configure-Bhpnr3RQ.js} +4 -4
- package/dist/{configure-CiRiSByg.js → configure-DEgPFToe.js} +1 -1
- package/dist/{doctor-completion-BKC_yRJu.js → doctor-completion-Bhbtito8.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensions/feishu/index.js +2 -2
- package/dist/extensions/feishu/setup-entry.js +1 -1
- package/dist/{feishu-CaswV1Oq.js → feishu-p4QIwtc9.js} +1 -1
- package/dist/{gateway-cli-Du6MIaFO.js → gateway-cli-jjoIZrdZ.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/{onboard-CVHxysXI.js → onboard-bnQMb8SY.js} +1 -1
- package/dist/{onboard-channels-CFM-GqSa.js → onboard-channels-CYyBfLIY.js} +3 -3
- package/dist/{onboard-channels-katsK5NE.js → onboard-channels-aMYUZrDN.js} +1 -1
- package/dist/plugin-sdk/extensions/feishu/src/bot.d.ts +2 -0
- package/dist/plugin-sdk/extensions/feishu/src/real-person-auth.d.ts +14 -0
- package/dist/{program-vgusBOnw.js → program-Xr3NHOnX.js} +2 -2
- package/dist/{prompt-select-styled-BoBpzerB.js → prompt-select-styled-ClRa2a-J.js} +1 -1
- package/dist/{register.agent-WOPQnmT4.js → register.agent-D2oBiVp5.js} +4 -4
- package/dist/{register.configure-Mll-Mq42.js → register.configure-DYLRiwv_.js} +4 -4
- package/dist/{register.maintenance-Rj539JWw.js → register.maintenance-C_px1a87.js} +5 -5
- package/dist/{register.onboard-u9mcSt7t.js → register.onboard-D3kGpBcj.js} +2 -2
- package/dist/{register.setup-CkZS2aXC.js → register.setup-BfTBJ7il.js} +2 -2
- package/dist/{register.subclis-B6HYIWdr.js → register.subclis-Dd2E6UgL.js} +4 -4
- package/dist/{register.subclis-mDzvRQMA.js → register.subclis-pNtiPM8G.js} +1 -1
- package/dist/{run-main-DvmjKiL6.js → run-main-CypZFyVz.js} +7 -7
- package/dist/{setup-BDaeBY6O.js → setup-CLruc3vw.js} +2 -2
- package/dist/{setup.finalize-Bs2AabmP.js → setup.finalize-DUXM1TZ3.js} +4 -4
- package/dist/{update-cli-BgZUMbWl.js → update-cli-8mkYBPsE.js} +5 -5
- package/package.json +1 -1
package/dist/.buildstamp
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"builtAt":
|
|
1
|
+
{"builtAt":1775637451867,"head":"843e6a14abe65fe2a4a053fdc32d029755e1bb67"}
|
|
@@ -252,9 +252,9 @@ import "./setup-core-CcGzCpOK.js";
|
|
|
252
252
|
import "./shared-x4Yc8-25.js";
|
|
253
253
|
import "./setup-entry-CcHvI1Mu.js";
|
|
254
254
|
import "./reactions-CVOq_v6N.js";
|
|
255
|
-
import "./feishu-
|
|
255
|
+
import "./feishu-p4QIwtc9.js";
|
|
256
256
|
import "./runtime-api-lhuSYASv.js";
|
|
257
|
-
import "./channel-
|
|
257
|
+
import "./channel-Dz1n3akq.js";
|
|
258
258
|
import "./send-C3ijC8Mw.js";
|
|
259
259
|
import "./runtime-p5-el0rU.js";
|
|
260
260
|
import "./setup-core-Bw009yg5.js";
|
|
@@ -303,7 +303,7 @@ import "./agents.config-siTlMqn8.js";
|
|
|
303
303
|
import "./provider-auth-choice-helpers-fXJv3eWi.js";
|
|
304
304
|
import "./provider-auth-guidance-DXgeysMX.js";
|
|
305
305
|
import "./config-validation-9iWWSktF.js";
|
|
306
|
-
import { t as agentsListCommand } from "./agents-
|
|
306
|
+
import { t as agentsListCommand } from "./agents-BdtFdlIN.js";
|
|
307
307
|
import "./provider-auth-choices-D3uPSLCc.js";
|
|
308
308
|
import "./provider-wizard-D8q7vx9b.js";
|
|
309
309
|
import "./auth-choice-options-DGRXgwnh.js";
|
|
@@ -312,5 +312,5 @@ import "./provider-auth-choice-B6Vf-54o.js";
|
|
|
312
312
|
import "./auth-choice.apply-helpers-DnZSQbUl.js";
|
|
313
313
|
import "./provider-auth-choice-preference-MiQguMwm.js";
|
|
314
314
|
import "./auth-choice-DdOY5kEs.js";
|
|
315
|
-
import "./onboard-channels-
|
|
315
|
+
import "./onboard-channels-aMYUZrDN.js";
|
|
316
316
|
export { agentsListCommand };
|
|
@@ -20,7 +20,7 @@ import { i as loadAgentIdentity, n as buildAgentSummaries, o as pruneAgentConfig
|
|
|
20
20
|
import { a as parseBindingSpecs, i as describeBinding, n as applyAgentBindings, o as removeAgentBindings, r as buildChannelBindings, t as requireValidConfigSnapshot } from "./config-validation-9iWWSktF.js";
|
|
21
21
|
import { t as promptAuthChoiceGrouped } from "./auth-choice-prompt-Bkr-WsTr.js";
|
|
22
22
|
import { n as applyAuthChoice, t as warnIfModelConfigLooksOff } from "./auth-choice-DdOY5kEs.js";
|
|
23
|
-
import { i as setupChannels } from "./onboard-channels-
|
|
23
|
+
import { i as setupChannels } from "./onboard-channels-aMYUZrDN.js";
|
|
24
24
|
import path from "node:path";
|
|
25
25
|
import fs from "node:fs/promises";
|
|
26
26
|
//#region src/commands/agents.command-shared.ts
|
package/dist/build-info.json
CHANGED
|
@@ -33,7 +33,9 @@ import { A as listFeishuDirectoryPeers, C as sendMediaFeishu, E as getFeishuRunt
|
|
|
33
33
|
import fs from "node:fs";
|
|
34
34
|
import path from "node:path";
|
|
35
35
|
import os from "node:os";
|
|
36
|
+
import fs$1 from "node:fs/promises";
|
|
36
37
|
import crypto from "node:crypto";
|
|
38
|
+
import { config } from "dotenv";
|
|
37
39
|
import { z as z$2 } from "zod";
|
|
38
40
|
import * as http from "http";
|
|
39
41
|
import * as crypto$1 from "crypto";
|
|
@@ -904,8 +906,196 @@ function resolveFeishuReplyPolicy(params) {
|
|
|
904
906
|
}
|
|
905
907
|
//#endregion
|
|
906
908
|
//#region extensions/feishu/src/real-person-auth.ts
|
|
909
|
+
const REAL_PERSON_AUTH_API_BASE_URL = "https://cclawd.dbhl.cn";
|
|
910
|
+
const REAL_PERSON_AUTH_H5_BASE_URL = "https://h5.dabby.com.cn";
|
|
911
|
+
const MFA_AUTH_API_KEY = "MFA_AUTH_API_KEY";
|
|
912
|
+
const REAL_PERSON_AUTH_REQUEST_TIMEOUT_MS = 12e3;
|
|
913
|
+
function getResponseMessage(payload, fallback) {
|
|
914
|
+
if (typeof payload.data?.message === "string" && payload.data.message.trim()) return payload.data.message;
|
|
915
|
+
if (typeof payload.message === "string" && payload.message.trim()) return payload.message;
|
|
916
|
+
if (typeof payload.msg === "string" && payload.msg.trim()) return payload.msg;
|
|
917
|
+
return fallback;
|
|
918
|
+
}
|
|
919
|
+
async function parseJsonResponse(response, fallbackMessage) {
|
|
920
|
+
let payload = {};
|
|
921
|
+
try {
|
|
922
|
+
payload = await response.json();
|
|
923
|
+
} catch {
|
|
924
|
+
if (!response.ok) throw new Error(`${fallbackMessage}: ${response.status} ${response.statusText}`);
|
|
925
|
+
return {};
|
|
926
|
+
}
|
|
927
|
+
if (!response.ok) throw new Error(getResponseMessage(payload, `${fallbackMessage}: ${response.status} ${response.statusText}`));
|
|
928
|
+
return payload;
|
|
929
|
+
}
|
|
930
|
+
async function requestJson(input, init, fallbackMessage) {
|
|
931
|
+
const controller = new AbortController();
|
|
932
|
+
const timeout = setTimeout(() => controller.abort(), REAL_PERSON_AUTH_REQUEST_TIMEOUT_MS);
|
|
933
|
+
try {
|
|
934
|
+
return await parseJsonResponse(await fetch(input, {
|
|
935
|
+
...init,
|
|
936
|
+
signal: controller.signal
|
|
937
|
+
}), fallbackMessage);
|
|
938
|
+
} catch (err) {
|
|
939
|
+
if (err?.name === "AbortError") throw new Error(`${fallbackMessage}: request timed out after ${REAL_PERSON_AUTH_REQUEST_TIMEOUT_MS}ms`);
|
|
940
|
+
throw err;
|
|
941
|
+
} finally {
|
|
942
|
+
clearTimeout(timeout);
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
async function getVerifyCode(apiKey) {
|
|
946
|
+
const trimmedApiKey = apiKey.trim();
|
|
947
|
+
if (!trimmedApiKey) throw new Error("MFA_AUTH_API_KEY is required");
|
|
948
|
+
const payload = await requestJson(new URL("/api/v1/getVerifyCode", REAL_PERSON_AUTH_API_BASE_URL), {
|
|
949
|
+
method: "POST",
|
|
950
|
+
headers: { "Content-Type": "application/json" },
|
|
951
|
+
body: JSON.stringify({
|
|
952
|
+
apiKey: trimmedApiKey,
|
|
953
|
+
authType: "ScanAuth",
|
|
954
|
+
mode: "66"
|
|
955
|
+
})
|
|
956
|
+
}, "Failed to create verification QR code");
|
|
957
|
+
const certToken = typeof payload.data?.certToken === "string" ? payload.data.certToken : "";
|
|
958
|
+
const qrCodeUrl = typeof payload.data?.qrCodeUrl === "string" ? payload.data.qrCodeUrl : "";
|
|
959
|
+
if (!certToken || !qrCodeUrl) throw new Error(getResponseMessage(payload, "Verification QR code response was incomplete"));
|
|
960
|
+
return {
|
|
961
|
+
certToken,
|
|
962
|
+
qrCodeUrl
|
|
963
|
+
};
|
|
964
|
+
}
|
|
965
|
+
async function checkAuthStatus(apiKey, certToken) {
|
|
966
|
+
const trimmedApiKey = apiKey.trim();
|
|
967
|
+
const trimmedCertToken = certToken.trim();
|
|
968
|
+
if (!trimmedApiKey) throw new Error("MFA_AUTH_API_KEY is required");
|
|
969
|
+
if (!trimmedCertToken) throw new Error("certToken is required");
|
|
970
|
+
const payload = await requestJson(new URL("/api/v1/checkAuthStatus", REAL_PERSON_AUTH_API_BASE_URL), {
|
|
971
|
+
method: "POST",
|
|
972
|
+
headers: { "Content-Type": "application/json" },
|
|
973
|
+
body: JSON.stringify({
|
|
974
|
+
apiKey: trimmedApiKey,
|
|
975
|
+
certToken: trimmedCertToken
|
|
976
|
+
})
|
|
977
|
+
}, "Failed to check verification status");
|
|
978
|
+
if (payload.data?.authSuccess === true) return "success";
|
|
979
|
+
if (payload.retCode === 4401) return "pending";
|
|
980
|
+
return "failed";
|
|
981
|
+
}
|
|
982
|
+
function resolveRealPersonAuthStorePath() {
|
|
983
|
+
return path.join(os.homedir(), ".openclaw", "cclawd-guard", "feishu-real-person-auth.json");
|
|
984
|
+
}
|
|
985
|
+
async function readRealPersonAuthStore(authFilePath, error) {
|
|
986
|
+
try {
|
|
987
|
+
const content = await fs$1.readFile(authFilePath, "utf-8");
|
|
988
|
+
return JSON.parse(content);
|
|
989
|
+
} catch (err) {
|
|
990
|
+
if (err.code === "ENOENT") {
|
|
991
|
+
await fs$1.mkdir(path.dirname(authFilePath), { recursive: true });
|
|
992
|
+
await fs$1.writeFile(authFilePath, "{}", "utf-8");
|
|
993
|
+
return {};
|
|
994
|
+
}
|
|
995
|
+
error(`Failed to read auth file: ${err.message}`, err);
|
|
996
|
+
return {};
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
async function writeRealPersonAuthStore(authFilePath, data) {
|
|
1000
|
+
await fs$1.writeFile(authFilePath, JSON.stringify(data, null, 2), "utf-8");
|
|
1001
|
+
}
|
|
1002
|
+
function resolveMfaApiKey(log, error) {
|
|
1003
|
+
config({ path: path.join(os.homedir(), ".openclaw", ".env") });
|
|
1004
|
+
const apiKey = process.env[MFA_AUTH_API_KEY];
|
|
1005
|
+
log(`[real-person-auth] MFA_AUTH_API_KEY exists: ${!!apiKey}`);
|
|
1006
|
+
if (!apiKey) {
|
|
1007
|
+
error("MFA_AUTH_API_KEY not found in environment variables", void 0);
|
|
1008
|
+
throw new Error("MFA_AUTH_API_KEY not configured");
|
|
1009
|
+
}
|
|
1010
|
+
return apiKey;
|
|
1011
|
+
}
|
|
1012
|
+
function resolveVerificationUrl(certToken) {
|
|
1013
|
+
return `${process.env.DABBY_AUTH_H5_BASE_URL || REAL_PERSON_AUTH_H5_BASE_URL}/authhtml/index.html#/auth?certToken=${certToken}&fromSource=Cclawd`;
|
|
1014
|
+
}
|
|
1015
|
+
async function checkFeishuRealPersonAuthStatus(params) {
|
|
1016
|
+
const authFilePath = resolveRealPersonAuthStorePath();
|
|
1017
|
+
const authData = await readRealPersonAuthStore(authFilePath, params.error);
|
|
1018
|
+
const userAuth = authData[params.senderId];
|
|
1019
|
+
if (!userAuth) return { status: "missing" };
|
|
1020
|
+
if (userAuth.authenticated) return { status: "success" };
|
|
1021
|
+
const certToken = userAuth.certToken?.trim() ?? "";
|
|
1022
|
+
if (!certToken) return { status: "missing" };
|
|
1023
|
+
const apiKey = resolveMfaApiKey(params.log, params.error);
|
|
1024
|
+
params.log(`[real-person-auth] checking auth status for certToken: ${certToken.slice(0, 8)}...`);
|
|
1025
|
+
const status = await checkAuthStatus(apiKey, certToken);
|
|
1026
|
+
params.log(`[real-person-auth] auth status: ${status}`);
|
|
1027
|
+
if (status === "success") {
|
|
1028
|
+
authData[params.senderId] = {
|
|
1029
|
+
authenticated: true,
|
|
1030
|
+
certToken,
|
|
1031
|
+
successNotified: true
|
|
1032
|
+
};
|
|
1033
|
+
await writeRealPersonAuthStore(authFilePath, authData);
|
|
1034
|
+
return { status: "success" };
|
|
1035
|
+
}
|
|
1036
|
+
if (status === "pending") return {
|
|
1037
|
+
status: "pending",
|
|
1038
|
+
verificationUrl: resolveVerificationUrl(certToken),
|
|
1039
|
+
certToken
|
|
1040
|
+
};
|
|
1041
|
+
return { status: "failed" };
|
|
1042
|
+
}
|
|
907
1043
|
async function resolveFeishuRealPersonAuthGate(params) {
|
|
908
|
-
|
|
1044
|
+
try {
|
|
1045
|
+
const authFilePath = resolveRealPersonAuthStorePath();
|
|
1046
|
+
const authData = await readRealPersonAuthStore(authFilePath, params.error);
|
|
1047
|
+
const apiKey = resolveMfaApiKey(params.log, params.error);
|
|
1048
|
+
const authH5BaseUrl = process.env.DABBY_AUTH_H5_BASE_URL || REAL_PERSON_AUTH_H5_BASE_URL;
|
|
1049
|
+
params.log(`[real-person-auth] authH5BaseUrl: ${authH5BaseUrl}`);
|
|
1050
|
+
const userAuth = authData[params.senderId];
|
|
1051
|
+
if (userAuth?.authenticated) {
|
|
1052
|
+
if (!userAuth.successNotified) {
|
|
1053
|
+
authData[params.senderId] = {
|
|
1054
|
+
...userAuth,
|
|
1055
|
+
successNotified: true
|
|
1056
|
+
};
|
|
1057
|
+
await writeRealPersonAuthStore(authFilePath, authData);
|
|
1058
|
+
return { action: "allow-with-success" };
|
|
1059
|
+
}
|
|
1060
|
+
return { action: "allow" };
|
|
1061
|
+
}
|
|
1062
|
+
if (userAuth?.certToken) {
|
|
1063
|
+
params.log(`[real-person-auth] checking auth status for certToken: ${userAuth.certToken.slice(0, 8)}...`);
|
|
1064
|
+
const status = await checkAuthStatus(apiKey, userAuth.certToken);
|
|
1065
|
+
params.log(`[real-person-auth] auth status: ${status}`);
|
|
1066
|
+
if (status === "success") {
|
|
1067
|
+
authData[params.senderId] = {
|
|
1068
|
+
authenticated: true,
|
|
1069
|
+
certToken: userAuth.certToken,
|
|
1070
|
+
successNotified: true
|
|
1071
|
+
};
|
|
1072
|
+
await writeRealPersonAuthStore(authFilePath, authData);
|
|
1073
|
+
return { action: "allow-with-success" };
|
|
1074
|
+
}
|
|
1075
|
+
if (status === "pending") return {
|
|
1076
|
+
action: "block",
|
|
1077
|
+
verificationUrl: `${authH5BaseUrl}/authhtml/index.html#/auth?certToken=${userAuth.certToken}&fromSource=Cclawd`,
|
|
1078
|
+
certToken: userAuth.certToken
|
|
1079
|
+
};
|
|
1080
|
+
}
|
|
1081
|
+
params.log("[real-person-auth] calling getVerifyCode API...");
|
|
1082
|
+
const { certToken } = await getVerifyCode(apiKey);
|
|
1083
|
+
params.log(`[real-person-auth] got certToken: ${certToken.slice(0, 8)}...`);
|
|
1084
|
+
authData[params.senderId] = {
|
|
1085
|
+
authenticated: false,
|
|
1086
|
+
certToken,
|
|
1087
|
+
successNotified: false
|
|
1088
|
+
};
|
|
1089
|
+
await writeRealPersonAuthStore(authFilePath, authData);
|
|
1090
|
+
return {
|
|
1091
|
+
action: "block",
|
|
1092
|
+
verificationUrl: `${authH5BaseUrl}/authhtml/index.html#/auth?certToken=${certToken}&fromSource=Cclawd`,
|
|
1093
|
+
certToken
|
|
1094
|
+
};
|
|
1095
|
+
} catch (err) {
|
|
1096
|
+
params.error(`resolveFeishuRealPersonAuthGate error: ${err.message}`, err);
|
|
1097
|
+
throw err;
|
|
1098
|
+
}
|
|
909
1099
|
}
|
|
910
1100
|
//#endregion
|
|
911
1101
|
//#region extensions/feishu/src/streaming-card.ts
|
|
@@ -1667,6 +1857,18 @@ function createFeishuReplyDispatcher(params) {
|
|
|
1667
1857
|
//#region extensions/feishu/src/bot.ts
|
|
1668
1858
|
const permissionErrorNotifiedAt = /* @__PURE__ */ new Map();
|
|
1669
1859
|
const PERMISSION_ERROR_COOLDOWN_MS = 300 * 1e3;
|
|
1860
|
+
const REAL_PERSON_AUTH_POLL_INTERVAL_MS = 2e3;
|
|
1861
|
+
const REAL_PERSON_AUTH_POLL_TIMEOUT_MS = 300 * 1e3;
|
|
1862
|
+
const pendingAuthReplayByKey = /* @__PURE__ */ new Map();
|
|
1863
|
+
const activeAuthPollByKey = /* @__PURE__ */ new Map();
|
|
1864
|
+
function buildAuthReplayKey(accountId, senderId) {
|
|
1865
|
+
return `${accountId}:${senderId}`;
|
|
1866
|
+
}
|
|
1867
|
+
function sleep(ms) {
|
|
1868
|
+
return new Promise((resolve) => {
|
|
1869
|
+
setTimeout(resolve, ms);
|
|
1870
|
+
});
|
|
1871
|
+
}
|
|
1670
1872
|
function resolveBroadcastAgents(cfg, peerId) {
|
|
1671
1873
|
const broadcast = cfg.broadcast;
|
|
1672
1874
|
if (!broadcast || typeof broadcast !== "object") return null;
|
|
@@ -1733,7 +1935,7 @@ function buildFeishuAgentBody(params) {
|
|
|
1733
1935
|
return messageBody;
|
|
1734
1936
|
}
|
|
1735
1937
|
async function handleFeishuMessage(params) {
|
|
1736
|
-
const { cfg, event, botOpenId, botName, runtime, chatHistories, accountId, processingClaimHeld = false } = params;
|
|
1938
|
+
const { cfg, event, botOpenId, botName, runtime, chatHistories, accountId, processingClaimHeld = false, skipDedupe = false, skipRealPersonAuth = false } = params;
|
|
1737
1939
|
const account = resolveFeishuAccount({
|
|
1738
1940
|
cfg,
|
|
1739
1941
|
accountId
|
|
@@ -1742,14 +1944,16 @@ async function handleFeishuMessage(params) {
|
|
|
1742
1944
|
const log = runtime?.log ?? console.log;
|
|
1743
1945
|
const error = runtime?.error ?? console.error;
|
|
1744
1946
|
const messageId = event.message.message_id;
|
|
1745
|
-
if (!
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1947
|
+
if (!skipDedupe) {
|
|
1948
|
+
if (!await finalizeFeishuMessageProcessing({
|
|
1949
|
+
messageId,
|
|
1950
|
+
namespace: account.accountId,
|
|
1951
|
+
log,
|
|
1952
|
+
claimHeld: processingClaimHeld
|
|
1953
|
+
})) {
|
|
1954
|
+
log(`feishu: skipping duplicate message ${messageId}`);
|
|
1955
|
+
return;
|
|
1956
|
+
}
|
|
1753
1957
|
}
|
|
1754
1958
|
let ctx = parseFeishuMessageEvent(event, botOpenId, botName);
|
|
1755
1959
|
const isGroup = ctx.chatType === "group";
|
|
@@ -1776,7 +1980,10 @@ async function handleFeishuMessage(params) {
|
|
|
1776
1980
|
accountId: account.accountId
|
|
1777
1981
|
});
|
|
1778
1982
|
};
|
|
1779
|
-
|
|
1983
|
+
const requiresRealPersonAuth = !skipRealPersonAuth && (ctx.chatType === "p2p" || ctx.chatType === "private") && senderIdForAuth && senderIdForAuth !== botOpenId;
|
|
1984
|
+
log(`feishu[${account.accountId}]: auth check - chatType=${ctx.chatType}, senderIdForAuth=${senderIdForAuth}, botOpenId=${botOpenId}, requiresRealPersonAuth=${requiresRealPersonAuth}, hasSender=${!!senderIdForAuth}, notSelf=${senderIdForAuth !== botOpenId}`);
|
|
1985
|
+
if (requiresRealPersonAuth) {
|
|
1986
|
+
log(`feishu[${account.accountId}]: checking real-person auth for ${senderIdForAuth}`);
|
|
1780
1987
|
const gate = await resolveFeishuRealPersonAuthGate({
|
|
1781
1988
|
accountId: account.accountId,
|
|
1782
1989
|
senderId: senderIdForAuth,
|
|
@@ -1784,6 +1991,58 @@ async function handleFeishuMessage(params) {
|
|
|
1784
1991
|
error
|
|
1785
1992
|
});
|
|
1786
1993
|
if (gate.action === "block") {
|
|
1994
|
+
const replayKey = buildAuthReplayKey(account.accountId, senderIdForAuth);
|
|
1995
|
+
pendingAuthReplayByKey.set(replayKey, {
|
|
1996
|
+
cfg,
|
|
1997
|
+
event,
|
|
1998
|
+
botOpenId,
|
|
1999
|
+
botName,
|
|
2000
|
+
runtime,
|
|
2001
|
+
chatHistories,
|
|
2002
|
+
accountId: account.accountId
|
|
2003
|
+
});
|
|
2004
|
+
if (!activeAuthPollByKey.has(replayKey)) {
|
|
2005
|
+
const pollPromise = (async () => {
|
|
2006
|
+
const startedAt = Date.now();
|
|
2007
|
+
while (Date.now() - startedAt < REAL_PERSON_AUTH_POLL_TIMEOUT_MS) {
|
|
2008
|
+
await sleep(REAL_PERSON_AUTH_POLL_INTERVAL_MS);
|
|
2009
|
+
try {
|
|
2010
|
+
const status = await checkFeishuRealPersonAuthStatus({
|
|
2011
|
+
accountId: account.accountId,
|
|
2012
|
+
senderId: senderIdForAuth,
|
|
2013
|
+
log,
|
|
2014
|
+
error
|
|
2015
|
+
});
|
|
2016
|
+
log(`feishu[${account.accountId}]: real-person auth poll status for ${senderIdForAuth}: ${status.status}`);
|
|
2017
|
+
if (status.status === "pending") continue;
|
|
2018
|
+
if (status.status === "success") {
|
|
2019
|
+
const pending = pendingAuthReplayByKey.get(replayKey);
|
|
2020
|
+
pendingAuthReplayByKey.delete(replayKey);
|
|
2021
|
+
if (pending) {
|
|
2022
|
+
await sendAuthSuccess();
|
|
2023
|
+
await handleFeishuMessage({
|
|
2024
|
+
...pending,
|
|
2025
|
+
skipDedupe: true,
|
|
2026
|
+
skipRealPersonAuth: true
|
|
2027
|
+
});
|
|
2028
|
+
}
|
|
2029
|
+
return;
|
|
2030
|
+
}
|
|
2031
|
+
pendingAuthReplayByKey.delete(replayKey);
|
|
2032
|
+
return;
|
|
2033
|
+
} catch (pollErr) {
|
|
2034
|
+
log(`feishu[${account.accountId}]: real-person auth poll retry for ${senderIdForAuth} after error: ${pollErr instanceof Error ? pollErr.message : String(pollErr)}`);
|
|
2035
|
+
error(`feishu[${account.accountId}]: real-person auth polling failed for ${senderIdForAuth}`, pollErr);
|
|
2036
|
+
continue;
|
|
2037
|
+
}
|
|
2038
|
+
}
|
|
2039
|
+
log(`feishu[${account.accountId}]: real-person auth poll timeout for ${senderIdForAuth}; keeping gate pending`);
|
|
2040
|
+
pendingAuthReplayByKey.delete(replayKey);
|
|
2041
|
+
})().finally(() => {
|
|
2042
|
+
activeAuthPollByKey.delete(replayKey);
|
|
2043
|
+
});
|
|
2044
|
+
activeAuthPollByKey.set(replayKey, pollPromise);
|
|
2045
|
+
}
|
|
1787
2046
|
await sendAuthPrompt(gate.verificationUrl);
|
|
1788
2047
|
return;
|
|
1789
2048
|
}
|
|
@@ -255,9 +255,9 @@ import "./setup-core-CcGzCpOK.js";
|
|
|
255
255
|
import "./shared-x4Yc8-25.js";
|
|
256
256
|
import "./setup-entry-CcHvI1Mu.js";
|
|
257
257
|
import "./reactions-CVOq_v6N.js";
|
|
258
|
-
import "./feishu-
|
|
258
|
+
import "./feishu-p4QIwtc9.js";
|
|
259
259
|
import "./runtime-api-lhuSYASv.js";
|
|
260
|
-
import "./channel-
|
|
260
|
+
import "./channel-Dz1n3akq.js";
|
|
261
261
|
import "./send-C3ijC8Mw.js";
|
|
262
262
|
import "./runtime-p5-el0rU.js";
|
|
263
263
|
import "./setup-core-Bw009yg5.js";
|
|
@@ -307,7 +307,7 @@ import { n as buildReadOnlySourceChannelAccountSnapshot, t as buildChannelAccoun
|
|
|
307
307
|
import { t as collectChannelStatusIssues } from "./channels-status-issues-D1LfcYYR.js";
|
|
308
308
|
import { t as parseLogLine } from "./parse-log-line-fV0tN7JU.js";
|
|
309
309
|
import { i as describeBinding, n as applyAgentBindings, t as requireValidConfigSnapshot } from "./config-validation-9iWWSktF.js";
|
|
310
|
-
import { a as isCatalogChannelInstalled, r as runCollectedChannelOnboardingPostWriteHooks, t as createChannelOnboardingPostWriteHookCollector } from "./onboard-channels-
|
|
310
|
+
import { a as isCatalogChannelInstalled, r as runCollectedChannelOnboardingPostWriteHooks, t as createChannelOnboardingPostWriteHookCollector } from "./onboard-channels-aMYUZrDN.js";
|
|
311
311
|
import fs from "node:fs/promises";
|
|
312
312
|
//#region src/commands/channels/add-mutators.ts
|
|
313
313
|
function applyAccountName(params) {
|
|
@@ -377,7 +377,7 @@ async function channelsAddCommand(opts, runtime = defaultRuntime, params) {
|
|
|
377
377
|
if (!cfg) return;
|
|
378
378
|
let nextConfig = cfg;
|
|
379
379
|
if (shouldUseWizard(params)) {
|
|
380
|
-
const [{ buildAgentSummaries }, { setupChannels }] = await Promise.all([import("./agents.config-Nk87RmV3.js"), import("./onboard-channels-
|
|
380
|
+
const [{ buildAgentSummaries }, { setupChannels }] = await Promise.all([import("./agents.config-Nk87RmV3.js"), import("./onboard-channels-CYyBfLIY.js")]);
|
|
381
381
|
const prompter = createClackPrompter();
|
|
382
382
|
const postWriteHooks = createChannelOnboardingPostWriteHookCollector();
|
|
383
383
|
let selection = [];
|
|
@@ -365,25 +365,25 @@ function registerChannelsCli(program) {
|
|
|
365
365
|
])}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/channels", "docs.openclaw.ai/cli/channels")}\n`);
|
|
366
366
|
channels.command("list").description("List configured channels + auth profiles").option("--no-usage", "Skip model provider usage/quota snapshots").option("--json", "Output JSON", false).action(async (opts) => {
|
|
367
367
|
await runChannelsCommand(async () => {
|
|
368
|
-
const { channelsListCommand } = await import("./channels-
|
|
368
|
+
const { channelsListCommand } = await import("./channels-Bt0w3hbW.js");
|
|
369
369
|
await channelsListCommand(opts, defaultRuntime);
|
|
370
370
|
});
|
|
371
371
|
});
|
|
372
372
|
channels.command("status").description("Show gateway channel status (use status --deep for local)").option("--probe", "Probe channel credentials", false).option("--timeout <ms>", "Timeout in ms", "10000").option("--json", "Output JSON", false).action(async (opts) => {
|
|
373
373
|
await runChannelsCommand(async () => {
|
|
374
|
-
const { channelsStatusCommand } = await import("./channels-
|
|
374
|
+
const { channelsStatusCommand } = await import("./channels-Bt0w3hbW.js");
|
|
375
375
|
await channelsStatusCommand(opts, defaultRuntime);
|
|
376
376
|
});
|
|
377
377
|
});
|
|
378
378
|
channels.command("capabilities").description("Show provider capabilities (intents/scopes + supported features)").option("--channel <name>", `Channel (${formatCliChannelOptions(["all"])})`).option("--account <id>", "Account id (only with --channel)").option("--target <dest>", "Channel target for permission audit (Discord channel:<id>)").option("--timeout <ms>", "Timeout in ms", "10000").option("--json", "Output JSON", false).action(async (opts) => {
|
|
379
379
|
await runChannelsCommand(async () => {
|
|
380
|
-
const { channelsCapabilitiesCommand } = await import("./channels-
|
|
380
|
+
const { channelsCapabilitiesCommand } = await import("./channels-Bt0w3hbW.js");
|
|
381
381
|
await channelsCapabilitiesCommand(opts, defaultRuntime);
|
|
382
382
|
});
|
|
383
383
|
});
|
|
384
384
|
channels.command("resolve").description("Resolve channel/user names to IDs").argument("<entries...>", "Entries to resolve (names or ids)").option("--channel <name>", `Channel (${channelNames})`).option("--account <id>", "Account id (accountId)").option("--kind <kind>", "Target kind (auto|user|group)", "auto").option("--json", "Output JSON", false).action(async (entries, opts) => {
|
|
385
385
|
await runChannelsCommand(async () => {
|
|
386
|
-
const { channelsResolveCommand } = await import("./channels-
|
|
386
|
+
const { channelsResolveCommand } = await import("./channels-Bt0w3hbW.js");
|
|
387
387
|
await channelsResolveCommand({
|
|
388
388
|
channel: opts.channel,
|
|
389
389
|
account: opts.account,
|
|
@@ -395,19 +395,19 @@ function registerChannelsCli(program) {
|
|
|
395
395
|
});
|
|
396
396
|
channels.command("logs").description("Show recent channel logs from the gateway log file").option("--channel <name>", `Channel (${formatCliChannelOptions(["all"])})`, "all").option("--lines <n>", "Number of lines (default: 200)", "200").option("--json", "Output JSON", false).action(async (opts) => {
|
|
397
397
|
await runChannelsCommand(async () => {
|
|
398
|
-
const { channelsLogsCommand } = await import("./channels-
|
|
398
|
+
const { channelsLogsCommand } = await import("./channels-Bt0w3hbW.js");
|
|
399
399
|
await channelsLogsCommand(opts, defaultRuntime);
|
|
400
400
|
});
|
|
401
401
|
});
|
|
402
402
|
channels.command("add").description("Add or update a channel account").option("--channel <name>", `Channel (${channelNames})`).option("--account <id>", "Account id (default when omitted)").option("--name <name>", "Display name for this account").option("--token <token>", "Bot token (Telegram/Discord)").option("--private-key <key>", "Nostr private key (nsec... or hex)").option("--token-file <path>", "Bot token file (Telegram)").option("--bot-token <token>", "Slack bot token (xoxb-...)").option("--app-token <token>", "Slack app token (xapp-...)").option("--signal-number <e164>", "Signal account number (E.164)").option("--cli-path <path>", "CLI path (signal-cli or imsg)").option("--db-path <path>", "iMessage database path").option("--service <service>", "iMessage service (imessage|sms|auto)").option("--region <region>", "iMessage region (for SMS)").option("--auth-dir <path>", "WhatsApp auth directory override").option("--http-url <url>", "Signal HTTP daemon base URL").option("--http-host <host>", "Signal HTTP host").option("--http-port <port>", "Signal HTTP port").option("--webhook-path <path>", "Webhook path (Google Chat/BlueBubbles)").option("--webhook-url <url>", "Google Chat webhook URL").option("--audience-type <type>", "Google Chat audience type (app-url|project-number)").option("--audience <value>", "Google Chat audience value (app URL or project number)").option("--homeserver <url>", "Matrix homeserver URL").option("--user-id <id>", "Matrix user ID").option("--access-token <token>", "Matrix access token").option("--password <password>", "Matrix password").option("--device-name <name>", "Matrix device name").option("--initial-sync-limit <n>", "Matrix initial sync limit").option("--ship <ship>", "Tlon ship name (~sampel-palnet)").option("--url <url>", "Tlon ship URL").option("--relay-urls <list>", "Nostr relay URLs (comma-separated)").option("--code <code>", "Tlon login code").option("--group-channels <list>", "Tlon group channels (comma-separated)").option("--dm-allowlist <list>", "Tlon DM allowlist (comma-separated ships)").option("--auto-discover-channels", "Tlon auto-discover group channels").option("--no-auto-discover-channels", "Disable Tlon auto-discovery").option("--use-env", "Use env token (default account only)", false).action(async (opts, command) => {
|
|
403
403
|
await runChannelsCommand(async () => {
|
|
404
|
-
const { channelsAddCommand } = await import("./channels-
|
|
404
|
+
const { channelsAddCommand } = await import("./channels-Bt0w3hbW.js");
|
|
405
405
|
await channelsAddCommand(opts, defaultRuntime, { hasFlags: hasExplicitOptions(command, optionNamesAdd) });
|
|
406
406
|
});
|
|
407
407
|
});
|
|
408
408
|
channels.command("remove").description("Disable or delete a channel account").option("--channel <name>", `Channel (${channelNames})`).option("--account <id>", "Account id (default when omitted)").option("--delete", "Delete config entries (no prompt)", false).action(async (opts, command) => {
|
|
409
409
|
await runChannelsCommand(async () => {
|
|
410
|
-
const { channelsRemoveCommand } = await import("./channels-
|
|
410
|
+
const { channelsRemoveCommand } = await import("./channels-Bt0w3hbW.js");
|
|
411
411
|
await channelsRemoveCommand(opts, defaultRuntime, { hasFlags: hasExplicitOptions(command, optionNamesRemove) });
|
|
412
412
|
});
|
|
413
413
|
});
|
|
@@ -7,7 +7,7 @@ import "./subsystem-DISldKSB.js";
|
|
|
7
7
|
import "./ansi-BEJF8NKS.js";
|
|
8
8
|
import "./boolean-C3GkJetE.js";
|
|
9
9
|
import "./env-Dnra1IpT.js";
|
|
10
|
-
import "./register.subclis-
|
|
10
|
+
import "./register.subclis-Dd2E6UgL.js";
|
|
11
11
|
import "./core-command-descriptors-CCqK_2TG.js";
|
|
12
|
-
import { n as registerCoreCliByName } from "./command-registry-
|
|
12
|
+
import { n as registerCoreCliByName } from "./command-registry-maV_byWv.js";
|
|
13
13
|
export { registerCoreCliByName };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { E as getPrimaryCommand, k as hasHelpOrVersion } from "./logger-kwZIqwuw.js";
|
|
2
|
-
import { a as removeCommandByName, i as registerSubCliCommands, o as reparseProgramFromActionArgs } from "./register.subclis-
|
|
2
|
+
import { a as removeCommandByName, i as registerSubCliCommands, o as reparseProgramFromActionArgs } from "./register.subclis-Dd2E6UgL.js";
|
|
3
3
|
import { t as getCoreCliCommandDescriptors } from "./core-command-descriptors-CCqK_2TG.js";
|
|
4
4
|
//#region src/cli/program/command-registry.ts
|
|
5
5
|
const shouldRegisterCorePrimaryOnly = (argv) => {
|
|
@@ -14,7 +14,7 @@ const coreEntries = [
|
|
|
14
14
|
hasSubcommands: false
|
|
15
15
|
}],
|
|
16
16
|
register: async ({ program }) => {
|
|
17
|
-
(await import("./register.setup-
|
|
17
|
+
(await import("./register.setup-BfTBJ7il.js")).registerSetupCommand(program);
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
{
|
|
@@ -24,7 +24,7 @@ const coreEntries = [
|
|
|
24
24
|
hasSubcommands: false
|
|
25
25
|
}],
|
|
26
26
|
register: async ({ program }) => {
|
|
27
|
-
(await import("./register.onboard-
|
|
27
|
+
(await import("./register.onboard-D3kGpBcj.js")).registerOnboardCommand(program);
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
30
|
{
|
|
@@ -34,7 +34,7 @@ const coreEntries = [
|
|
|
34
34
|
hasSubcommands: false
|
|
35
35
|
}],
|
|
36
36
|
register: async ({ program }) => {
|
|
37
|
-
(await import("./register.configure-
|
|
37
|
+
(await import("./register.configure-DYLRiwv_.js")).registerConfigureCommand(program);
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
{
|
|
@@ -44,7 +44,7 @@ const coreEntries = [
|
|
|
44
44
|
hasSubcommands: true
|
|
45
45
|
}],
|
|
46
46
|
register: async ({ program }) => {
|
|
47
|
-
(await import("./config-cli-
|
|
47
|
+
(await import("./config-cli-CkDay3qv.js")).registerConfigCli(program);
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
{
|
|
@@ -81,7 +81,7 @@ const coreEntries = [
|
|
|
81
81
|
}
|
|
82
82
|
],
|
|
83
83
|
register: async ({ program }) => {
|
|
84
|
-
(await import("./register.maintenance-
|
|
84
|
+
(await import("./register.maintenance-C_px1a87.js")).registerMaintenanceCommands(program);
|
|
85
85
|
}
|
|
86
86
|
},
|
|
87
87
|
{
|
|
@@ -125,7 +125,7 @@ const coreEntries = [
|
|
|
125
125
|
hasSubcommands: true
|
|
126
126
|
}],
|
|
127
127
|
register: async ({ program, ctx }) => {
|
|
128
|
-
(await import("./register.agent-
|
|
128
|
+
(await import("./register.agent-D2oBiVp5.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
131
|
{
|
|
@@ -3,8 +3,8 @@ import { r as theme } from "./theme-CdOoMzRk.js";
|
|
|
3
3
|
import { c as routeLogsToStderr } from "./subsystem-DISldKSB.js";
|
|
4
4
|
import { h as pathExists } from "./utils-CS0Ikux6.js";
|
|
5
5
|
import { t as formatDocsLink } from "./links-8xRhWBQL.js";
|
|
6
|
-
import { r as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-
|
|
7
|
-
import { n as registerCoreCliByName, t as getCoreCliCommandNames } from "./command-registry-
|
|
6
|
+
import { r as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-Dd2E6UgL.js";
|
|
7
|
+
import { n as registerCoreCliByName, t as getCoreCliCommandNames } from "./command-registry-maV_byWv.js";
|
|
8
8
|
import { t as getProgramContext } from "./program-context-SgNgozNB.js";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import os from "node:os";
|
|
@@ -9,8 +9,8 @@ import "./boolean-C3GkJetE.js";
|
|
|
9
9
|
import "./env-Dnra1IpT.js";
|
|
10
10
|
import "./utils-CS0Ikux6.js";
|
|
11
11
|
import "./links-8xRhWBQL.js";
|
|
12
|
-
import { a as registerCompletionCli } from "./completion-cli-
|
|
13
|
-
import "./register.subclis-
|
|
14
|
-
import "./command-registry-
|
|
12
|
+
import { a as registerCompletionCli } from "./completion-cli-B7KByNii.js";
|
|
13
|
+
import "./register.subclis-Dd2E6UgL.js";
|
|
14
|
+
import "./command-registry-maV_byWv.js";
|
|
15
15
|
import "./program-context-SgNgozNB.js";
|
|
16
16
|
export { registerCompletionCli };
|
|
@@ -917,7 +917,7 @@ async function runConfigValidate(opts = {}) {
|
|
|
917
917
|
}
|
|
918
918
|
function registerConfigCli(program) {
|
|
919
919
|
const cmd = program.command("config").description("Non-interactive config helpers (get/set/unset/file/validate). Run without subcommand for guided setup.").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.openclaw.ai/cli/config")}\n`).option("--section <section>", "Configuration sections for guided setup (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
|
|
920
|
-
const { configureCommandFromSectionsArg } = await import("./configure-
|
|
920
|
+
const { configureCommandFromSectionsArg } = await import("./configure-Bhpnr3RQ.js");
|
|
921
921
|
await configureCommandFromSectionsArg(opts.section, defaultRuntime);
|
|
922
922
|
});
|
|
923
923
|
cmd.command("get").description("Get a config value by dot path").argument("<path>", "Config path (dot or bracket notation)").option("--json", "Output JSON", false).action(async (path, opts) => {
|
|
@@ -259,9 +259,9 @@ import "./setup-core-CcGzCpOK.js";
|
|
|
259
259
|
import "./shared-x4Yc8-25.js";
|
|
260
260
|
import "./setup-entry-CcHvI1Mu.js";
|
|
261
261
|
import "./reactions-CVOq_v6N.js";
|
|
262
|
-
import "./feishu-
|
|
262
|
+
import "./feishu-p4QIwtc9.js";
|
|
263
263
|
import "./runtime-api-lhuSYASv.js";
|
|
264
|
-
import "./channel-
|
|
264
|
+
import "./channel-Dz1n3akq.js";
|
|
265
265
|
import "./send-C3ijC8Mw.js";
|
|
266
266
|
import "./runtime-p5-el0rU.js";
|
|
267
267
|
import "./setup-core-Bw009yg5.js";
|
|
@@ -324,8 +324,8 @@ import "./provider-auth-choice-B6Vf-54o.js";
|
|
|
324
324
|
import "./auth-choice.apply-helpers-DnZSQbUl.js";
|
|
325
325
|
import "./provider-auth-choice-preference-MiQguMwm.js";
|
|
326
326
|
import "./auth-choice-DdOY5kEs.js";
|
|
327
|
-
import "./onboard-channels-
|
|
328
|
-
import { n as configureCommandFromSectionsArg } from "./configure-
|
|
327
|
+
import "./onboard-channels-aMYUZrDN.js";
|
|
328
|
+
import { n as configureCommandFromSectionsArg } from "./configure-DEgPFToe.js";
|
|
329
329
|
import "./systemd-linger-BasN9UtI.js";
|
|
330
330
|
import "./model-picker-ewbext_V.js";
|
|
331
331
|
import "./onboard-custom-ojsh_yzx.js";
|
|
@@ -29,7 +29,7 @@ import { n as resolveProviderPluginChoice } from "./provider-wizard-D8q7vx9b.js"
|
|
|
29
29
|
import { t as promptAuthChoiceGrouped } from "./auth-choice-prompt-Bkr-WsTr.js";
|
|
30
30
|
import { t as resolvePreferredProviderForAuthChoice } from "./provider-auth-choice-preference-MiQguMwm.js";
|
|
31
31
|
import { n as applyAuthChoice } from "./auth-choice-DdOY5kEs.js";
|
|
32
|
-
import { i as setupChannels, n as noteChannelStatus } from "./onboard-channels-
|
|
32
|
+
import { i as setupChannels, n as noteChannelStatus } from "./onboard-channels-aMYUZrDN.js";
|
|
33
33
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-BasN9UtI.js";
|
|
34
34
|
import { i as promptModelAllowlist, n as applyModelFallbacksFromSelection, r as promptDefaultModel, t as applyModelAllowlist } from "./model-picker-ewbext_V.js";
|
|
35
35
|
import { i as promptCustomApiConfig } from "./onboard-custom-ojsh_yzx.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as resolveOpenClawPackageRoot } from "./openclaw-root-ax52pETb.js";
|
|
2
2
|
import { n as resolveCliName } from "./cli-name-CgLQPAaK.js";
|
|
3
3
|
import { t as note } from "./note-CrfOOz26.js";
|
|
4
|
-
import { c as usesSlowDynamicCompletion, i as isCompletionInstalled, o as resolveCompletionCachePath, r as installCompletion, s as resolveShellFromEnv, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { c as usesSlowDynamicCompletion, i as isCompletionInstalled, o as resolveCompletionCachePath, r as installCompletion, s as resolveShellFromEnv, t as completionCacheExists } from "./completion-cli-B7KByNii.js";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { spawnSync } from "node:child_process";
|
|
7
7
|
//#region src/commands/doctor-completion.ts
|
package/dist/entry.js
CHANGED
|
@@ -200,7 +200,7 @@ function tryHandleRootHelpFastPath(argv, deps = {}) {
|
|
|
200
200
|
}
|
|
201
201
|
function runMainOrRootHelp(argv) {
|
|
202
202
|
if (tryHandleRootHelpFastPath(argv)) return;
|
|
203
|
-
import("./run-main-
|
|
203
|
+
import("./run-main-CypZFyVz.js").then(({ runCli }) => runCli(argv)).catch((error) => {
|
|
204
204
|
console.error("[openclaw] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
|
|
205
205
|
process$1.exitCode = 1;
|
|
206
206
|
});
|
|
@@ -211,8 +211,8 @@ import "../../setup-api-islC9-vs.js";
|
|
|
211
211
|
import "../../api-4UdyHpJg.js";
|
|
212
212
|
import "../../feishu-B0Fh98aM.js";
|
|
213
213
|
import { i as removeReactionFeishu, n as addReactionFeishu, r as listReactionsFeishu, t as FeishuEmoji } from "../../reactions-CVOq_v6N.js";
|
|
214
|
-
import { t as feishu_default } from "../../feishu-
|
|
214
|
+
import { t as feishu_default } from "../../feishu-p4QIwtc9.js";
|
|
215
215
|
import "../../runtime-api-lhuSYASv.js";
|
|
216
|
-
import { n as monitorFeishuProvider, t as feishuPlugin } from "../../channel-
|
|
216
|
+
import { n as monitorFeishuProvider, t as feishuPlugin } from "../../channel-Dz1n3akq.js";
|
|
217
217
|
import { C as sendMediaFeishu, D as setFeishuRuntime, S as sendImageFeishu, T as uploadImageFeishu, _ as formatMentionForText, a as sendCardFeishu, d as buildMentionedMessage, f as extractMentionTargets, g as formatMentionForCard, h as formatMentionAllForText, l as updateCardFeishu, m as formatMentionAllForCard, n as getMessageFeishu, p as extractMessageBody, s as sendMessageFeishu, t as editMessageFeishu, u as buildMentionedCardContent, v as isMentionForwardRequest, w as uploadFileFeishu, x as sendFileFeishu } from "../../send-C3ijC8Mw.js";
|
|
218
218
|
export { FeishuEmoji, addReactionFeishu, buildMentionedCardContent, buildMentionedMessage, feishu_default as default, editMessageFeishu, extractMentionTargets, extractMessageBody, feishuPlugin, formatMentionAllForCard, formatMentionAllForText, formatMentionForCard, formatMentionForText, getMessageFeishu, isMentionForwardRequest, listReactionsFeishu, monitorFeishuProvider, probeFeishu, removeReactionFeishu, sendCardFeishu, sendFileFeishu, sendImageFeishu, sendMediaFeishu, sendMessageFeishu, setFeishuRuntime, updateCardFeishu, uploadFileFeishu, uploadImageFeishu };
|
|
@@ -211,7 +211,7 @@ import "../../setup-api-islC9-vs.js";
|
|
|
211
211
|
import "../../api-4UdyHpJg.js";
|
|
212
212
|
import "../../feishu-B0Fh98aM.js";
|
|
213
213
|
import "../../runtime-api-lhuSYASv.js";
|
|
214
|
-
import { t as feishuPlugin } from "../../channel-
|
|
214
|
+
import { t as feishuPlugin } from "../../channel-Dz1n3akq.js";
|
|
215
215
|
import "../../send-C3ijC8Mw.js";
|
|
216
216
|
//#region extensions/feishu/setup-entry.ts
|
|
217
217
|
var setup_entry_default = defineSetupPluginEntry(feishuPlugin);
|
|
@@ -2,7 +2,7 @@ import { Wb as defineChannelPluginEntry } from "./pi-embedded-CbisRyrM.js";
|
|
|
2
2
|
import { c as listEnabledFeishuAccounts, d as resolveFeishuAccount, i as createFeishuClient } from "./setup-surface-DNWv-m0c.js";
|
|
3
3
|
import { a as parseFeishuConversationId, i as buildFeishuConversationId, r as getFeishuThreadBindingManager } from "./api-4UdyHpJg.js";
|
|
4
4
|
import { c as registerFeishuChatTools, l as resolveToolsConfig } from "./reactions-CVOq_v6N.js";
|
|
5
|
-
import { t as feishuPlugin } from "./channel-
|
|
5
|
+
import { t as feishuPlugin } from "./channel-Dz1n3akq.js";
|
|
6
6
|
import { D as setFeishuRuntime, E as getFeishuRuntime, P as normalizeFeishuTarget } from "./send-C3ijC8Mw.js";
|
|
7
7
|
import { existsSync, promises } from "node:fs";
|
|
8
8
|
import { basename, isAbsolute } from "node:path";
|
|
@@ -317,7 +317,7 @@ import { _ as computePreviousRunAtMs, g as computeNextRunAtMs, h as coerceFinite
|
|
|
317
317
|
import { a as resolveNpmChannelTag, n as compareSemverStrings, p as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-7-eHz7QM.js";
|
|
318
318
|
import { i as resolveGatewayStartupPluginIds, r as resolveConfiguredDeferredChannelPluginIds } from "./channel-plugin-ids-BAljJj2h.js";
|
|
319
319
|
import "./setup.secret-input-zTHnk276.js";
|
|
320
|
-
import { t as runSetupWizard } from "./setup-
|
|
320
|
+
import { t as runSetupWizard } from "./setup-CLruc3vw.js";
|
|
321
321
|
import { a as resolveApnsAuthConfigFromEnv, c as shouldClearStoredApnsRegistration, d as parseMessageWithAttachments, f as formatForLog, g as setGatewayWsLogStyle, h as summarizeAgentEventForWsLog, l as resolveApnsRelayConfigFromEnv, m as shouldLogWs, n as loadApnsRegistration, o as sendApnsAlert, p as logWs, r as normalizeApnsEnvironment, s as sendApnsBackgroundWake, t as clearApnsRegistrationIfCurrent, u as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-BQDWAAg5.js";
|
|
322
322
|
import { _ as buildGogWatchStartArgs, g as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, w as resolveGmailHookRuntimeConfig } from "./gmail-setup-utils-BsgKN1Rw.js";
|
|
323
323
|
import { i as loadAgentIdentity, o as pruneAgentConfig, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-siTlMqn8.js";
|
package/dist/index.js
CHANGED
|
@@ -29,7 +29,7 @@ let saveSessionStore;
|
|
|
29
29
|
let toWhatsappJid;
|
|
30
30
|
let waitForever;
|
|
31
31
|
async function loadLegacyCliDeps() {
|
|
32
|
-
const [{ installGaxiosFetchCompat }, { runCli }] = await Promise.all([import("./gaxios-fetch-compat-Kvjn-opL.js"), import("./run-main-
|
|
32
|
+
const [{ installGaxiosFetchCompat }, { runCli }] = await Promise.all([import("./gaxios-fetch-compat-Kvjn-opL.js"), import("./run-main-CypZFyVz.js")]);
|
|
33
33
|
return {
|
|
34
34
|
installGaxiosFetchCompat,
|
|
35
35
|
runCli
|
|
@@ -11,7 +11,7 @@ import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, c as han
|
|
|
11
11
|
import { n as logConfigUpdated } from "./logging-7-QuqqfS.js";
|
|
12
12
|
import { t as WizardCancelledError } from "./prompts-BEHcWT6j.js";
|
|
13
13
|
import { t as createClackPrompter } from "./clack-prompter-c8uEEGtv.js";
|
|
14
|
-
import { t as runSetupWizard } from "./setup-
|
|
14
|
+
import { t as runSetupWizard } from "./setup-CLruc3vw.js";
|
|
15
15
|
import { i as resolveManifestProviderOnboardAuthFlags } from "./provider-auth-choices-D3uPSLCc.js";
|
|
16
16
|
import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-BPFWRR4r.js";
|
|
17
17
|
import { r as applyLocalSetupWorkspaceConfig } from "./onboard-config-CxoUyTRN.js";
|
|
@@ -248,9 +248,9 @@ import "./setup-core-CcGzCpOK.js";
|
|
|
248
248
|
import "./shared-x4Yc8-25.js";
|
|
249
249
|
import "./setup-entry-CcHvI1Mu.js";
|
|
250
250
|
import "./reactions-CVOq_v6N.js";
|
|
251
|
-
import "./feishu-
|
|
251
|
+
import "./feishu-p4QIwtc9.js";
|
|
252
252
|
import "./runtime-api-lhuSYASv.js";
|
|
253
|
-
import "./channel-
|
|
253
|
+
import "./channel-Dz1n3akq.js";
|
|
254
254
|
import "./send-C3ijC8Mw.js";
|
|
255
255
|
import "./runtime-p5-el0rU.js";
|
|
256
256
|
import "./setup-core-Bw009yg5.js";
|
|
@@ -292,5 +292,5 @@ import "./catalog-D1IL8FHf.js";
|
|
|
292
292
|
import "./plugin-install-plan-CRu1xZih.js";
|
|
293
293
|
import "./bundled-sources-C0-2GZmN.js";
|
|
294
294
|
import "./plugin-install-DJYiPPuS.js";
|
|
295
|
-
import { i as setupChannels, n as noteChannelStatus, r as runCollectedChannelOnboardingPostWriteHooks, t as createChannelOnboardingPostWriteHookCollector } from "./onboard-channels-
|
|
295
|
+
import { i as setupChannels, n as noteChannelStatus, r as runCollectedChannelOnboardingPostWriteHooks, t as createChannelOnboardingPostWriteHookCollector } from "./onboard-channels-aMYUZrDN.js";
|
|
296
296
|
export { createChannelOnboardingPostWriteHookCollector, noteChannelStatus, runCollectedChannelOnboardingPostWriteHooks, setupChannels };
|
|
@@ -13,7 +13,7 @@ import { t as promptChannelAccessConfig } from "./setup-group-access-H4Pp_4Aj.js
|
|
|
13
13
|
import { t as bluebubblesPlugin } from "./channel-blbw1Rcq.js";
|
|
14
14
|
import { n as discordPlugin } from "./discord-D66aw8Yl.js";
|
|
15
15
|
import { n as discordSetupPlugin } from "./setup-entry-CcHvI1Mu.js";
|
|
16
|
-
import { t as feishuPlugin } from "./channel-
|
|
16
|
+
import { t as feishuPlugin } from "./channel-Dz1n3akq.js";
|
|
17
17
|
import { n as imessagePlugin } from "./imessage-B87cXMZF.js";
|
|
18
18
|
import { n as imessageSetupPlugin } from "./setup-entry-C-3pj2nB.js";
|
|
19
19
|
import { t as ircPlugin } from "./channel-DyLSZ-yv2.js";
|
|
@@ -6,6 +6,7 @@ export type FeishuRealPersonAuthGateResult = {
|
|
|
6
6
|
} | {
|
|
7
7
|
action: "block";
|
|
8
8
|
verificationUrl: string;
|
|
9
|
+
certToken: string;
|
|
9
10
|
};
|
|
10
11
|
export type FeishuRealPersonAuthGateParams = {
|
|
11
12
|
accountId: string;
|
|
@@ -13,4 +14,17 @@ export type FeishuRealPersonAuthGateParams = {
|
|
|
13
14
|
log: (message: string) => void;
|
|
14
15
|
error: (message: string, err?: unknown) => void;
|
|
15
16
|
};
|
|
17
|
+
export type FeishuRealPersonAuthStatusParams = FeishuRealPersonAuthGateParams;
|
|
18
|
+
export type FeishuRealPersonAuthStatusResult = {
|
|
19
|
+
status: "success";
|
|
20
|
+
} | {
|
|
21
|
+
status: "pending";
|
|
22
|
+
verificationUrl: string;
|
|
23
|
+
certToken: string;
|
|
24
|
+
} | {
|
|
25
|
+
status: "failed";
|
|
26
|
+
} | {
|
|
27
|
+
status: "missing";
|
|
28
|
+
};
|
|
29
|
+
export declare function checkFeishuRealPersonAuthStatus(params: FeishuRealPersonAuthStatusParams): Promise<FeishuRealPersonAuthStatusResult>;
|
|
16
30
|
export declare function resolveFeishuRealPersonAuthGate(params: FeishuRealPersonAuthGateParams): Promise<FeishuRealPersonAuthGateResult>;
|
|
@@ -14,8 +14,8 @@ import "./registry-C5UkPpaO.js";
|
|
|
14
14
|
import { n as resolveCliName } from "./cli-name-CgLQPAaK.js";
|
|
15
15
|
import "./ports-lsof-BLEgL_Gn.js";
|
|
16
16
|
import { n as resolveCliChannelOptions } from "./channel-options-04p5Gy2y.js";
|
|
17
|
-
import "./register.subclis-
|
|
18
|
-
import { i as registerProgramCommands } from "./command-registry-
|
|
17
|
+
import "./register.subclis-Dd2E6UgL.js";
|
|
18
|
+
import { i as registerProgramCommands } from "./command-registry-maV_byWv.js";
|
|
19
19
|
import { n as setProgramContext } from "./program-context-SgNgozNB.js";
|
|
20
20
|
import { t as isCommandJsonOutputMode } from "./json-mode-i0z3_kJ3.js";
|
|
21
21
|
import "./ports-xb_TQvEY.js";
|
|
@@ -80,7 +80,7 @@ import { t as collectChannelStatusIssues } from "./channels-status-issues-D1LfcY
|
|
|
80
80
|
import { n as resolveProviderAuthLoginCommand, t as buildProviderAuthRecoveryHint } from "./provider-auth-guidance-DXgeysMX.js";
|
|
81
81
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-BasN9UtI.js";
|
|
82
82
|
import { t as formatHealthCheckFailure } from "./health-format-Cq-7EnWP.js";
|
|
83
|
-
import { n as doctorShellCompletion } from "./doctor-completion-
|
|
83
|
+
import { n as doctorShellCompletion } from "./doctor-completion-Bhbtito8.js";
|
|
84
84
|
import { a as stripUnknownConfigKeys, i as resolveConfigPathTarget, n as formatConfigPath, r as noteOpencodeProviderOverrides, t as runDoctorConfigPreflight } from "./doctor-config-preflight-DRiu7A6q.js";
|
|
85
85
|
import { a as isMattermostMutableAllowEntry, i as isMSTeamsMutableAllowEntry, n as isGoogleChatMutableAllowEntry, o as isSlackMutableAllowEntry, r as isIrcMutableAllowEntry, s as isZalouserMutableGroupEntry, t as isDiscordMutableAllowEntry } from "./mutable-allowlist-detectors-CWXjyMok.js";
|
|
86
86
|
import { t as resolveDefaultChannelAccountContext } from "./channel-account-context-CzAEVT7u.js";
|
|
@@ -257,9 +257,9 @@ import "./setup-core-CcGzCpOK.js";
|
|
|
257
257
|
import "./shared-x4Yc8-25.js";
|
|
258
258
|
import "./setup-entry-CcHvI1Mu.js";
|
|
259
259
|
import "./reactions-CVOq_v6N.js";
|
|
260
|
-
import "./feishu-
|
|
260
|
+
import "./feishu-p4QIwtc9.js";
|
|
261
261
|
import "./runtime-api-lhuSYASv.js";
|
|
262
|
-
import "./channel-
|
|
262
|
+
import "./channel-Dz1n3akq.js";
|
|
263
263
|
import "./send-C3ijC8Mw.js";
|
|
264
264
|
import "./runtime-p5-el0rU.js";
|
|
265
265
|
import "./setup-core-Bw009yg5.js";
|
|
@@ -311,7 +311,7 @@ import "./agents.config-siTlMqn8.js";
|
|
|
311
311
|
import "./provider-auth-choice-helpers-fXJv3eWi.js";
|
|
312
312
|
import "./provider-auth-guidance-DXgeysMX.js";
|
|
313
313
|
import "./config-validation-9iWWSktF.js";
|
|
314
|
-
import { a as agentsBindCommand, i as agentsAddCommand, n as agentsSetIdentityCommand, o as agentsBindingsCommand, r as agentsDeleteCommand, s as agentsUnbindCommand, t as agentsListCommand } from "./agents-
|
|
314
|
+
import { a as agentsBindCommand, i as agentsAddCommand, n as agentsSetIdentityCommand, o as agentsBindingsCommand, r as agentsDeleteCommand, s as agentsUnbindCommand, t as agentsListCommand } from "./agents-BdtFdlIN.js";
|
|
315
315
|
import "./provider-auth-choices-D3uPSLCc.js";
|
|
316
316
|
import "./provider-wizard-D8q7vx9b.js";
|
|
317
317
|
import "./auth-choice-options-DGRXgwnh.js";
|
|
@@ -320,7 +320,7 @@ import "./provider-auth-choice-B6Vf-54o.js";
|
|
|
320
320
|
import "./auth-choice.apply-helpers-DnZSQbUl.js";
|
|
321
321
|
import "./provider-auth-choice-preference-MiQguMwm.js";
|
|
322
322
|
import "./auth-choice-DdOY5kEs.js";
|
|
323
|
-
import "./onboard-channels-
|
|
323
|
+
import "./onboard-channels-aMYUZrDN.js";
|
|
324
324
|
//#region src/commands/agent-via-gateway.ts
|
|
325
325
|
const NO_GATEWAY_TIMEOUT_MS = 2147e6;
|
|
326
326
|
function parseTimeoutSeconds(opts) {
|
|
@@ -259,9 +259,9 @@ import "./setup-core-CcGzCpOK.js";
|
|
|
259
259
|
import "./shared-x4Yc8-25.js";
|
|
260
260
|
import "./setup-entry-CcHvI1Mu.js";
|
|
261
261
|
import "./reactions-CVOq_v6N.js";
|
|
262
|
-
import "./feishu-
|
|
262
|
+
import "./feishu-p4QIwtc9.js";
|
|
263
263
|
import "./runtime-api-lhuSYASv.js";
|
|
264
|
-
import "./channel-
|
|
264
|
+
import "./channel-Dz1n3akq.js";
|
|
265
265
|
import "./send-C3ijC8Mw.js";
|
|
266
266
|
import "./runtime-p5-el0rU.js";
|
|
267
267
|
import "./setup-core-Bw009yg5.js";
|
|
@@ -325,8 +325,8 @@ import "./provider-auth-choice-B6Vf-54o.js";
|
|
|
325
325
|
import "./auth-choice.apply-helpers-DnZSQbUl.js";
|
|
326
326
|
import "./provider-auth-choice-preference-MiQguMwm.js";
|
|
327
327
|
import "./auth-choice-DdOY5kEs.js";
|
|
328
|
-
import "./onboard-channels-
|
|
329
|
-
import { n as configureCommandFromSectionsArg, o as CONFIGURE_WIZARD_SECTIONS } from "./configure-
|
|
328
|
+
import "./onboard-channels-aMYUZrDN.js";
|
|
329
|
+
import { n as configureCommandFromSectionsArg, o as CONFIGURE_WIZARD_SECTIONS } from "./configure-DEgPFToe.js";
|
|
330
330
|
import "./systemd-linger-BasN9UtI.js";
|
|
331
331
|
import "./model-picker-ewbext_V.js";
|
|
332
332
|
import "./onboard-custom-ojsh_yzx.js";
|
|
@@ -232,9 +232,9 @@ import "./status-DpkO40zw.js";
|
|
|
232
232
|
import "./auth-health-C-jfjkhn.js";
|
|
233
233
|
import { n as runCommandWithRuntime } from "./cli-utils-BbclpBci.js";
|
|
234
234
|
import "./note-CrfOOz26.js";
|
|
235
|
-
import "./completion-cli-
|
|
236
|
-
import "./register.subclis-
|
|
237
|
-
import "./command-registry-
|
|
235
|
+
import "./completion-cli-B7KByNii.js";
|
|
236
|
+
import "./register.subclis-Dd2E6UgL.js";
|
|
237
|
+
import "./command-registry-maV_byWv.js";
|
|
238
238
|
import "./program-context-SgNgozNB.js";
|
|
239
239
|
import "./heartbeat-summary-1I5G8fLI.js";
|
|
240
240
|
import "./health-dwK_gUNI.js";
|
|
@@ -245,8 +245,8 @@ import "./channels-status-issues-D1LfcYYR.js";
|
|
|
245
245
|
import "./provider-auth-guidance-DXgeysMX.js";
|
|
246
246
|
import "./systemd-linger-BasN9UtI.js";
|
|
247
247
|
import "./health-format-Cq-7EnWP.js";
|
|
248
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-
|
|
249
|
-
import "./doctor-completion-
|
|
248
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-ClRa2a-J.js";
|
|
249
|
+
import "./doctor-completion-Bhbtito8.js";
|
|
250
250
|
import "./doctor-config-preflight-DRiu7A6q.js";
|
|
251
251
|
import "./channel-account-context-CzAEVT7u.js";
|
|
252
252
|
import "./doctor-state-migrations-PI6hf8TK.js";
|
|
@@ -212,11 +212,11 @@ import { n as runCommandWithRuntime } from "./cli-utils-BbclpBci.js";
|
|
|
212
212
|
import "./note-CrfOOz26.js";
|
|
213
213
|
import "./clack-prompter-c8uEEGtv.js";
|
|
214
214
|
import "./setup.secret-input-zTHnk276.js";
|
|
215
|
-
import "./setup-
|
|
215
|
+
import "./setup-CLruc3vw.js";
|
|
216
216
|
import { i as resolveManifestProviderOnboardAuthFlags } from "./provider-auth-choices-D3uPSLCc.js";
|
|
217
217
|
import "./provider-wizard-D8q7vx9b.js";
|
|
218
218
|
import { n as formatAuthChoiceChoicesForCli } from "./auth-choice-options-DGRXgwnh.js";
|
|
219
|
-
import { n as CORE_ONBOARD_AUTH_FLAGS, t as setupWizardCommand } from "./onboard-
|
|
219
|
+
import { n as CORE_ONBOARD_AUTH_FLAGS, t as setupWizardCommand } from "./onboard-bnQMb8SY.js";
|
|
220
220
|
//#region src/cli/program/register.onboard.ts
|
|
221
221
|
function resolveInstallDaemonFlag(command, opts) {
|
|
222
222
|
if (!command || typeof command !== "object") return;
|
|
@@ -213,9 +213,9 @@ import { n as runCommandWithRuntime } from "./cli-utils-BbclpBci.js";
|
|
|
213
213
|
import "./note-CrfOOz26.js";
|
|
214
214
|
import "./clack-prompter-c8uEEGtv.js";
|
|
215
215
|
import "./setup.secret-input-zTHnk276.js";
|
|
216
|
-
import "./setup-
|
|
216
|
+
import "./setup-CLruc3vw.js";
|
|
217
217
|
import "./provider-auth-choices-D3uPSLCc.js";
|
|
218
|
-
import { t as setupWizardCommand } from "./onboard-
|
|
218
|
+
import { t as setupWizardCommand } from "./onboard-bnQMb8SY.js";
|
|
219
219
|
import JSON5 from "json5";
|
|
220
220
|
import fs from "node:fs/promises";
|
|
221
221
|
//#region src/commands/setup.ts
|
|
@@ -58,7 +58,7 @@ const entries = [
|
|
|
58
58
|
description: "Run, inspect, and query the WebSocket Gateway",
|
|
59
59
|
hasSubcommands: true,
|
|
60
60
|
register: async (program) => {
|
|
61
|
-
(await import("./gateway-cli-
|
|
61
|
+
(await import("./gateway-cli-jjoIZrdZ.js")).registerGatewayCli(program);
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
64
|
{
|
|
@@ -224,7 +224,7 @@ const entries = [
|
|
|
224
224
|
description: "Manage connected chat channels (Telegram, Discord, etc.)",
|
|
225
225
|
hasSubcommands: true,
|
|
226
226
|
register: async (program) => {
|
|
227
|
-
(await import("./channels-cli-
|
|
227
|
+
(await import("./channels-cli-DgqDIEVC.js")).registerChannelsCli(program);
|
|
228
228
|
}
|
|
229
229
|
},
|
|
230
230
|
{
|
|
@@ -264,7 +264,7 @@ const entries = [
|
|
|
264
264
|
description: "Update OpenClaw and inspect update channel status",
|
|
265
265
|
hasSubcommands: true,
|
|
266
266
|
register: async (program) => {
|
|
267
|
-
(await import("./update-cli-
|
|
267
|
+
(await import("./update-cli-8mkYBPsE.js")).registerUpdateCli(program);
|
|
268
268
|
}
|
|
269
269
|
},
|
|
270
270
|
{
|
|
@@ -272,7 +272,7 @@ const entries = [
|
|
|
272
272
|
description: "Generate shell completion script",
|
|
273
273
|
hasSubcommands: false,
|
|
274
274
|
register: async (program) => {
|
|
275
|
-
(await import("./completion-cli-
|
|
275
|
+
(await import("./completion-cli-BgpfJ8GC.js")).registerCompletionCli(program);
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
];
|
|
@@ -7,6 +7,6 @@ import "./subsystem-DISldKSB.js";
|
|
|
7
7
|
import "./ansi-BEJF8NKS.js";
|
|
8
8
|
import "./boolean-C3GkJetE.js";
|
|
9
9
|
import "./env-Dnra1IpT.js";
|
|
10
|
-
import { n as loadValidatedConfigForPluginRegistration, r as registerSubCliByName } from "./register.subclis-
|
|
10
|
+
import { n as loadValidatedConfigForPluginRegistration, r as registerSubCliByName } from "./register.subclis-Dd2E6UgL.js";
|
|
11
11
|
import "./subcli-descriptors-buRXfptb.js";
|
|
12
12
|
export { loadValidatedConfigForPluginRegistration, registerSubCliByName };
|
|
@@ -150,7 +150,7 @@ const routeAgentsList = {
|
|
|
150
150
|
run: async (argv) => {
|
|
151
151
|
const json = hasFlag(argv, "--json");
|
|
152
152
|
const bindings = hasFlag(argv, "--bindings");
|
|
153
|
-
const { agentsListCommand } = await import("./agents-
|
|
153
|
+
const { agentsListCommand } = await import("./agents-BNKB08km.js");
|
|
154
154
|
await agentsListCommand({
|
|
155
155
|
json,
|
|
156
156
|
bindings
|
|
@@ -217,7 +217,7 @@ const routes = [
|
|
|
217
217
|
const pathArg = positionals[0];
|
|
218
218
|
if (!pathArg) return false;
|
|
219
219
|
const json = hasFlag(argv, "--json");
|
|
220
|
-
const { runConfigGet } = await import("./config-cli-
|
|
220
|
+
const { runConfigGet } = await import("./config-cli-CkDay3qv.js");
|
|
221
221
|
await runConfigGet({
|
|
222
222
|
path: pathArg,
|
|
223
223
|
json
|
|
@@ -232,7 +232,7 @@ const routes = [
|
|
|
232
232
|
if (!positionals || positionals.length !== 1) return false;
|
|
233
233
|
const pathArg = positionals[0];
|
|
234
234
|
if (!pathArg) return false;
|
|
235
|
-
const { runConfigUnset } = await import("./config-cli-
|
|
235
|
+
const { runConfigUnset } = await import("./config-cli-CkDay3qv.js");
|
|
236
236
|
await runConfigUnset({ path: pathArg });
|
|
237
237
|
return true;
|
|
238
238
|
}
|
|
@@ -387,7 +387,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
387
387
|
}
|
|
388
388
|
if (await tryRouteCli(normalizedArgv)) return;
|
|
389
389
|
enableConsoleCapture();
|
|
390
|
-
const { buildProgram } = await import("./program-
|
|
390
|
+
const { buildProgram } = await import("./program-Xr3NHOnX.js");
|
|
391
391
|
const program = buildProgram();
|
|
392
392
|
const { installUnhandledRejectionHandler } = await import("./unhandled-rejections-O6cVOz2D.js");
|
|
393
393
|
installUnhandledRejectionHandler();
|
|
@@ -401,10 +401,10 @@ async function runCli(argv = process$1.argv) {
|
|
|
401
401
|
const { getProgramContext } = await import("./program-context-CLR9R8wO.js");
|
|
402
402
|
const ctx = getProgramContext(program);
|
|
403
403
|
if (ctx) {
|
|
404
|
-
const { registerCoreCliByName } = await import("./command-registry-
|
|
404
|
+
const { registerCoreCliByName } = await import("./command-registry-jlEvUAKq.js");
|
|
405
405
|
await registerCoreCliByName(program, ctx, primary, parseArgv);
|
|
406
406
|
}
|
|
407
|
-
const { registerSubCliByName } = await import("./register.subclis-
|
|
407
|
+
const { registerSubCliByName } = await import("./register.subclis-pNtiPM8G.js");
|
|
408
408
|
await registerSubCliByName(program, primary);
|
|
409
409
|
}
|
|
410
410
|
if (!shouldSkipPluginCommandRegistration({
|
|
@@ -413,7 +413,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
413
413
|
hasBuiltinPrimary: primary !== null && program.commands.some((command) => command.name() === primary)
|
|
414
414
|
})) {
|
|
415
415
|
const { registerPluginCliCommands } = await import("./cli-BNJBssJu.js");
|
|
416
|
-
const { loadValidatedConfigForPluginRegistration } = await import("./register.subclis-
|
|
416
|
+
const { loadValidatedConfigForPluginRegistration } = await import("./register.subclis-pNtiPM8G.js");
|
|
417
417
|
const config = await loadValidatedConfigForPluginRegistration();
|
|
418
418
|
if (config) registerPluginCliCommands(program, config);
|
|
419
419
|
}
|
|
@@ -345,7 +345,7 @@ async function runSetupWizard(opts, runtime = defaultRuntime, prompter) {
|
|
|
345
345
|
if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
|
|
346
346
|
else {
|
|
347
347
|
const { listChannelPlugins } = await import("./plugins-BStRM4Qp.js");
|
|
348
|
-
const { setupChannels } = await import("./onboard-channels-
|
|
348
|
+
const { setupChannels } = await import("./onboard-channels-CYyBfLIY.js");
|
|
349
349
|
const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
|
|
350
350
|
nextConfig = await setupChannels(nextConfig, runtime, prompter, {
|
|
351
351
|
allowSignalInstall: true,
|
|
@@ -380,7 +380,7 @@ async function runSetupWizard(opts, runtime = defaultRuntime, prompter) {
|
|
|
380
380
|
mode
|
|
381
381
|
});
|
|
382
382
|
await writeConfigFile(nextConfig);
|
|
383
|
-
const { finalizeSetupWizard } = await import("./setup.finalize-
|
|
383
|
+
const { finalizeSetupWizard } = await import("./setup.finalize-DUXM1TZ3.js");
|
|
384
384
|
const { launchedTui } = await finalizeSetupWizard({
|
|
385
385
|
flow,
|
|
386
386
|
opts,
|
|
@@ -218,16 +218,16 @@ import "./gateway-runtime-CnT-i6bE.js";
|
|
|
218
218
|
import "./connection-auth-DVYDVm4S.js";
|
|
219
219
|
import "./mcp-config-D_JUsitu.js";
|
|
220
220
|
import "./note-CrfOOz26.js";
|
|
221
|
-
import { r as installCompletion } from "./completion-cli-
|
|
222
|
-
import "./register.subclis-
|
|
223
|
-
import "./command-registry-
|
|
221
|
+
import { r as installCompletion } from "./completion-cli-B7KByNii.js";
|
|
222
|
+
import "./register.subclis-Dd2E6UgL.js";
|
|
223
|
+
import "./command-registry-maV_byWv.js";
|
|
224
224
|
import "./program-context-SgNgozNB.js";
|
|
225
225
|
import "./heartbeat-summary-1I5G8fLI.js";
|
|
226
226
|
import { r as healthCommand } from "./health-dwK_gUNI.js";
|
|
227
227
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B5-glm9S.js";
|
|
228
228
|
import { t as resolveSetupSecretInputString } from "./setup.secret-input-zTHnk276.js";
|
|
229
229
|
import { t as formatHealthCheckFailure } from "./health-format-Cq-7EnWP.js";
|
|
230
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
230
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-Bhbtito8.js";
|
|
231
231
|
import { t as runTui } from "./tui-BpGN18Aq.js";
|
|
232
232
|
import path from "node:path";
|
|
233
233
|
import os from "node:os";
|
|
@@ -249,9 +249,9 @@ import "./status-DpkO40zw.js";
|
|
|
249
249
|
import "./auth-health-C-jfjkhn.js";
|
|
250
250
|
import "./note-CrfOOz26.js";
|
|
251
251
|
import "./bundled-sources-C0-2GZmN.js";
|
|
252
|
-
import { r as installCompletion } from "./completion-cli-
|
|
253
|
-
import "./register.subclis-
|
|
254
|
-
import "./command-registry-
|
|
252
|
+
import { r as installCompletion } from "./completion-cli-B7KByNii.js";
|
|
253
|
+
import "./register.subclis-Dd2E6UgL.js";
|
|
254
|
+
import "./command-registry-maV_byWv.js";
|
|
255
255
|
import "./program-context-SgNgozNB.js";
|
|
256
256
|
import { n as renderTable, t as getTerminalTableWidth } from "./table-CMVjkoOs.js";
|
|
257
257
|
import "./heartbeat-summary-1I5G8fLI.js";
|
|
@@ -265,8 +265,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
|
|
|
265
265
|
import "./provider-auth-guidance-DXgeysMX.js";
|
|
266
266
|
import "./systemd-linger-BasN9UtI.js";
|
|
267
267
|
import "./health-format-Cq-7EnWP.js";
|
|
268
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-
|
|
269
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
268
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-ClRa2a-J.js";
|
|
269
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-Bhbtito8.js";
|
|
270
270
|
import "./doctor-config-preflight-DRiu7A6q.js";
|
|
271
271
|
import "./channel-account-context-CzAEVT7u.js";
|
|
272
272
|
import "./doctor-state-migrations-PI6hf8TK.js";
|