@clawos-dev/clawd 0.2.425 → 0.2.427
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/cli.cjs +45 -23
- package/dist/share-md-viewer-error.html +1 -1
- package/dist/share-md-viewer.html +1 -1
- package/dist/share-ui/assets/guest-B45i1AP-.css +32 -0
- package/dist/share-ui/assets/{guest-CqqACTnG.js → guest-DEjZlGnf.js} +1 -1
- package/dist/share-ui/guest.html +2 -2
- package/package.json +1 -1
- package/dist/share-ui/assets/guest-DQRx2iVe.css +0 -32
package/dist/cli.cjs
CHANGED
|
@@ -59787,11 +59787,6 @@ var LoginFlow = class {
|
|
|
59787
59787
|
ttcTokenExpiresAt: Number.isFinite(expiresAtNum) ? expiresAtNum : null,
|
|
59788
59788
|
loginAt: new Date(now).toISOString()
|
|
59789
59789
|
});
|
|
59790
|
-
void this.deps.syncOrgMesh?.().catch((err) => {
|
|
59791
|
-
this.deps.logWarn?.("org-mesh: \u767B\u5F55\u540E\u540C\u6B65\u5931\u8D25\uFF08\u4E0D\u5F71\u54CD\u767B\u5F55\uFF09", {
|
|
59792
|
-
error: err instanceof Error ? err.message : String(err)
|
|
59793
|
-
});
|
|
59794
|
-
});
|
|
59795
59790
|
return { ok: true, identity };
|
|
59796
59791
|
}
|
|
59797
59792
|
gcExpired(now) {
|
|
@@ -60063,6 +60058,7 @@ async function syncOrgMesh(deps) {
|
|
|
60063
60058
|
const peers = await deps.fetchPeers();
|
|
60064
60059
|
if (peers.length === 0) {
|
|
60065
60060
|
deps.log("org-mesh: \u4E0D\u5728\u4EFB\u4F55\u7EC4\u7EC7\uFF08\u6216\u7EC4\u91CC\u53EA\u6709\u81EA\u5DF1\uFF09\uFF0C\u8DF3\u8FC7");
|
|
60061
|
+
deps.onProgress?.({ total: 0, done: 0, connected: 0, failed: 0, active: false });
|
|
60066
60062
|
return { peers: 0, attempted: 0, connected: 0, failed: 0 };
|
|
60067
60063
|
}
|
|
60068
60064
|
const targets = [];
|
|
@@ -60075,6 +60071,13 @@ async function syncOrgMesh(deps) {
|
|
|
60075
60071
|
deps.log("org-mesh: \u5F00\u59CB\u540C\u6B65", { peers: peers.length, targets: targets.length });
|
|
60076
60072
|
let connected = 0;
|
|
60077
60073
|
let failed = 0;
|
|
60074
|
+
deps.onProgress?.({
|
|
60075
|
+
total: targets.length,
|
|
60076
|
+
done: 0,
|
|
60077
|
+
connected: 0,
|
|
60078
|
+
failed: 0,
|
|
60079
|
+
active: targets.length > 0
|
|
60080
|
+
});
|
|
60078
60081
|
for (const t of targets) {
|
|
60079
60082
|
try {
|
|
60080
60083
|
await deps.connectToDevice({ deviceId: t.deviceId, name: t.displayName });
|
|
@@ -60088,6 +60091,13 @@ async function syncOrgMesh(deps) {
|
|
|
60088
60091
|
reason: e.message
|
|
60089
60092
|
});
|
|
60090
60093
|
}
|
|
60094
|
+
deps.onProgress?.({
|
|
60095
|
+
total: targets.length,
|
|
60096
|
+
done: connected + failed,
|
|
60097
|
+
connected,
|
|
60098
|
+
failed,
|
|
60099
|
+
active: connected + failed < targets.length
|
|
60100
|
+
});
|
|
60091
60101
|
}
|
|
60092
60102
|
deps.log("org-mesh: \u540C\u6B65\u5B8C\u6210", { peers: peers.length, attempted: targets.length, connected, failed });
|
|
60093
60103
|
return { peers: peers.length, attempted: targets.length, connected, failed };
|
|
@@ -62485,7 +62495,7 @@ function computeMethodAccess(args) {
|
|
|
62485
62495
|
}
|
|
62486
62496
|
|
|
62487
62497
|
// src/version.ts
|
|
62488
|
-
var version = "0.2.
|
|
62498
|
+
var version = "0.2.427".length > 0 ? "0.2.427" : "dev";
|
|
62489
62499
|
|
|
62490
62500
|
// src/cli-probe/probe.ts
|
|
62491
62501
|
var fs65 = __toESM(require("fs"), 1);
|
|
@@ -66968,6 +66978,32 @@ async function startDaemon(config) {
|
|
|
66968
66978
|
logger.warn("device register failed (best-effort)", { err: err.message });
|
|
66969
66979
|
}
|
|
66970
66980
|
};
|
|
66981
|
+
let orgMeshInFlight = false;
|
|
66982
|
+
const runOrgMesh = async () => {
|
|
66983
|
+
if (!feishuActive || orgMeshInFlight) return;
|
|
66984
|
+
const record3 = ownerIdentityStore.read();
|
|
66985
|
+
if (!record3) return;
|
|
66986
|
+
orgMeshInFlight = true;
|
|
66987
|
+
try {
|
|
66988
|
+
await syncOrgMesh({
|
|
66989
|
+
store: contactStore,
|
|
66990
|
+
fetchPeers: () => fetchOrgPeers({
|
|
66991
|
+
apiUrl: config.clawosApi ?? DEFAULT_CLAWOS_API,
|
|
66992
|
+
apiKey: resolveClawdTicketsApiKey(),
|
|
66993
|
+
deviceId: authFile.deviceId,
|
|
66994
|
+
displayName: record3.identity.displayName || authFile.deviceId
|
|
66995
|
+
}),
|
|
66996
|
+
connectToDevice: createConnectToDevice(feishuDeviceDeps),
|
|
66997
|
+
log: (msg, meta) => logger.info(msg, meta),
|
|
66998
|
+
// 进度上报:串行建联 20+ 台要几十秒,UI 靠这个帧渲染进度条
|
|
66999
|
+
onProgress: (progress) => wsServer?.broadcastToOwners({ type: "org-mesh:progress", ...progress })
|
|
67000
|
+
});
|
|
67001
|
+
} catch (err) {
|
|
67002
|
+
logger.warn("org-mesh sync failed (best-effort)", { err: err.message });
|
|
67003
|
+
} finally {
|
|
67004
|
+
orgMeshInFlight = false;
|
|
67005
|
+
}
|
|
67006
|
+
};
|
|
66971
67007
|
const fetchServerKey = async () => {
|
|
66972
67008
|
if (!feishuActive) return;
|
|
66973
67009
|
try {
|
|
@@ -67049,23 +67085,7 @@ async function startDaemon(config) {
|
|
|
67049
67085
|
});
|
|
67050
67086
|
throw err;
|
|
67051
67087
|
}
|
|
67052
|
-
}
|
|
67053
|
-
// org auto-mesh(spec 2026-08-31):登录成功后自动跟同组织的人建联。
|
|
67054
|
-
// 不进 fail-hard 链——login-flow 内部 void + catch,组网失败不拖垮登录。
|
|
67055
|
-
syncOrgMesh: () => syncOrgMesh({
|
|
67056
|
-
store: contactStore,
|
|
67057
|
-
fetchPeers: () => fetchOrgPeers({
|
|
67058
|
-
apiUrl: config.clawosApi ?? DEFAULT_CLAWOS_API,
|
|
67059
|
-
apiKey: resolveClawdTicketsApiKey(),
|
|
67060
|
-
deviceId: authFile.deviceId,
|
|
67061
|
-
displayName: ownerIdentityStore.read()?.identity.displayName ?? authFile.deviceId
|
|
67062
|
-
}),
|
|
67063
|
-
connectToDevice: createConnectToDevice(feishuDeviceDeps),
|
|
67064
|
-
log: (msg, meta) => logger.info(msg, meta)
|
|
67065
|
-
}),
|
|
67066
|
-
// 组网整体失败(拉清单挂了)的出口:走 logger 才进 SLS——
|
|
67067
|
-
// "自动组网悄悄没发生"正是要靠日志排查的场景,console.warn 只有 stdout。
|
|
67068
|
-
logWarn: (msg, meta) => logger.warn(msg, meta)
|
|
67088
|
+
}
|
|
67069
67089
|
});
|
|
67070
67090
|
const visitorStore = createVisitorStore({ dir: config.dataDir });
|
|
67071
67091
|
const exchangeVisitorToken = buildVisitorLogin({
|
|
@@ -67572,6 +67592,7 @@ async function startDaemon(config) {
|
|
|
67572
67592
|
setImmediate(() => wsServer?.closeAllClients());
|
|
67573
67593
|
void reportDevice();
|
|
67574
67594
|
void fetchServerKey();
|
|
67595
|
+
void runOrgMesh();
|
|
67575
67596
|
} else {
|
|
67576
67597
|
logger.warn("feishu-login failed", {
|
|
67577
67598
|
reason: result.reason,
|
|
@@ -67778,6 +67799,7 @@ ${bar}
|
|
|
67778
67799
|
}
|
|
67779
67800
|
void reportDevice();
|
|
67780
67801
|
void fetchServerKey();
|
|
67802
|
+
void runOrgMesh();
|
|
67781
67803
|
const tickAttachmentGc = () => {
|
|
67782
67804
|
try {
|
|
67783
67805
|
runAttachmentGc({
|