mslxdff 0.1.36 → 0.1.37

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/bin/mslxdff.js CHANGED
@@ -1179,17 +1179,42 @@ function fmtEvent(e) {
1179
1179
  const t = e?.ts ? new Date(e.ts).toISOString().slice(11, 19) : "--:--:--";
1180
1180
  const head = `[${t}]`;
1181
1181
  const m = (x) => x || "-";
1182
+ const fallbackTag = e.fallback ? ` fallback=${e.fallback.requested_model || e.requested}->${e.fallback.actual_model || e.actual}(${e.fallback.reason || e.reason})` : "";
1182
1183
  switch (e?.type) {
1183
1184
  case "request":
1184
- return `${head} request ${m(e.model)}${e.auto ? " (auto)" : ""} hops=${e.hops} from ${e.ip || "?"}${e.stream ? " stream" : ""}${e.prompt ? ` content="${e.prompt}"` : ""}`;
1185
+ return `${head} request client-> ${m(e.requested || e.model)}${e.auto ? " (auto)" : ""} raw=${m(e.rawModel)} lock=${m(e.lockModel)} hops=${e.hops} from ${e.ip || "?"}${e.stream ? " stream" : ""}${e.prompt ? ` content="${e.prompt}"` : ""} reqId=${e.reqId || ""}`;
1186
+ case "client-request":
1187
+ return `${head} client req 客户端请求 model=${m(e.requested)} raw=${m(e.rawModel)} lock=${m(e.lockModel)} ip=${e.ip || "?"}${e.stream ? " stream" : ""}`;
1188
+ case "ordered":
1189
+ return `${head} ordered 尝试顺序 [${(e.order||[]).join(" -> ")}] canFallback=${e.canFallback} useAuto=${e.useAuto}`;
1190
+ case "model-try":
1191
+ return `${head} model-try 尝试本地 model=${m(e.model)} idx=${e.idx} reqId=${e.reqId || ""}`;
1192
+ case "upstream-try":
1193
+ return `${head} upstream try 上游请求 model=${m(e.model)} attempt=${e.attempt || 1}`;
1194
+ case "upstream-done":
1195
+ return `${head} upstream ok ${m(e.model)} HTTP ${e.status}${e.timing ? ` total=${e.timing.totalMs}ms` : ""}`;
1185
1196
  case "upstream-error":
1186
1197
  return `${head} upstream err ${m(e.model)} ${e.status ? `HTTP ${e.status}` : "network"}: ${m(e.message)}`;
1198
+ case "peer-race-start":
1199
+ return `${head} peer race 开始并发给组员 model=${m(e.model)} peers=${e.peers}`;
1187
1200
  case "peer-health":
1188
- return `${head} peer check ${e.peer} -> ${e.count ? e.healthy.join(", ") : "no healthy models"}`;
1201
+ return `${head} peer check ${e.peer} -> ${e.count ? e.healthy.join(", ") : "no healthy models"}${e.strict ? " (strict)" : ""}`;
1189
1202
  case "peer-forward":
1190
- return `${head} forward -> ${e.peer} model=${m(e.model)} hops=${e.hops}${e.retry ? " (retry)" : ""}`;
1203
+ return `${head} peer req 给组员请求 peer=${e.peer} model=${m(e.model)} hops=${e.hops}${e.retry ? " (retry)" : ""}`;
1191
1204
  case "peer-error":
1192
- return `${head} peer err ${e.peer} ${e.status ? `HTTP ${e.status}` : "network"}: ${m(e.message)}`;
1205
+ return `${head} peer err ${e.peer} ${e.status ? `HTTP ${e.status}` : "network"}: ${m(e.message)} model=${m(e.model)}`;
1206
+ case "peer-race-win":
1207
+ return `${head} peer win 选中 peer=${e.winPeer} model=${m(e.winTarget)} latency=${e.latencyMs}ms`;
1208
+ case "peer-race-lose":
1209
+ return `${head} peer lose 组员全部失败 model=${m(e.model)}`;
1210
+ case "fallback":
1211
+ return `${head} fallback ${m(e.from)} -> ${m(e.to)} reason=${m(e.reason)}`;
1212
+ case "fallback-notice":
1213
+ return `${head} fallback! 客户端请求 ${m(e.requested)} 实际返回 ${m(e.actual)} 原因=${m(e.reason)} via=${m(e.via)} notice=${m(e.notice)}`;
1214
+ case "relay-try":
1215
+ return `${head} relay try 给宽带中继请求 target=${e.target} model=${m(e.model)} via=${e.via}`;
1216
+ case "relay-fail":
1217
+ return `${head} relay fail ${e.target} ${e.status ? `HTTP ${e.status}` : ""} ${m(e.message)}`;
1193
1218
  case "relay-ip-change":
1194
1219
  return `${head} relay ip ${e.member || e.id || "?"} ${e.oldIp || "?"} -> ${e.newIp || e.publicIp || "?"} via leader`;
1195
1220
  case "relay-forward":
@@ -1199,7 +1224,9 @@ function fmtEvent(e) {
1199
1224
  case "client-abort":
1200
1225
  return `${head} client abort ${m(e.model)} total=${fmtDur(e.totalMs)}`;
1201
1226
  case "result":
1202
- return `${head} result ${e.status} ${m(e.model)} via=${e.via} 响应耗时 ${fmtDur(e.durationMs)}`;
1227
+ return `${head} result 返回客户端 status=${e.status} model=${m(e.model)} via=${e.via} 响应耗时 ${fmtDur(e.durationMs)}${fallbackTag}`;
1228
+ case "client-response":
1229
+ return `${head} client res 返回客户端 客户端请求 ${m(e.requested)} 实际返回 ${m(e.actual)} via=${m(e.via)}${e.fallback ? ` fallback=${e.fallback.requested_model}->${e.fallback.actual_model}(${e.fallback.reason})` : " 无fallback"} status=${e.status}`;
1203
1230
  case "auto-update-enabled":
1204
1231
  return `${head} auto-update enabled every ${Math.round((e.intervalMs||0)/60000)}m current=${e.current}`;
1205
1232
  case "auto-update-disabled":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mslxdff",
3
- "version": "0.1.36",
3
+ "version": "0.1.37",
4
4
  "description": "测试项目,请勿使用。",
5
5
  "type": "module",
6
6
  "bin": {
package/src/routes.js CHANGED
@@ -815,7 +815,8 @@ const ROUTES = [
815
815
  }
816
816
  evt("slow-model", { model, elapsedMs: out.totalMs ?? (Date.now() - startedAt), threshold: STALL_TIMEOUT_MS, interrupted: true, detail: out.detail ?? null });
817
817
  logCall(model, 200);
818
- evt("result", { model, status: out.status, via: "local", timing: upRes._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, interrupted: true, detail: out.detail ?? null });
818
+ evt("result", { model, status: out.status, via: "local", timing: upRes._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, interrupted: true, detail: out.detail ?? null, fallback, requested, actual: model });
819
+ evt("client-response", { requested, actual: model, via: "local", fallback, status: out.status, interrupted: true, reqId });
819
820
  return;
820
821
  }
821
822
  const elapsed = Date.now() - startedAt;
@@ -841,7 +842,8 @@ const ROUTES = [
841
842
  } else if (scoredSlow && out.detail) {
842
843
  // already recorded slow+latency above, still ensure latency EMA is updated for slow case (done)
843
844
  }
844
- evt("result", { model, status: out.status, via: "local", timing: upRes._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null });
845
+ evt("result", { model, status: out.status, via: "local", timing: upRes._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null, fallback, requested, actual: model });
846
+ evt("client-response", { requested, actual: model, via: "local", fallback, status: out.status, reqId });
845
847
  return;
846
848
  }
847
849
 
@@ -877,7 +879,8 @@ const ROUTES = [
877
879
  await auto.recordOk(win.target, { latencyMs });
878
880
  }
879
881
  }
880
- evt("result", { model: win.target, status: out.status, via: "peer", timing: win.res._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null });
882
+ evt("result", { model: win.target, status: out.status, via: "peer", timing: win.res._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null, fallback: peerFallback, requested, actual: win.target });
883
+ evt("client-response", { requested, actual: win.target, via: "peer", fallback: peerFallback, status: out.status, reqId });
881
884
  return;
882
885
  }
883
886
  evt("peer-race-lose", { reqId, model });
@@ -908,7 +911,8 @@ const ROUTES = [
908
911
  await auto.recordOk(model, { latencyMs });
909
912
  }
910
913
  }
911
- evt("result", { model, status: out.status, via: "broadband", timing: bb.result._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null });
914
+ evt("result", { model, status: out.status, via: "broadband", timing: bb.result._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null, fallback: bbFallback, requested, actual: model });
915
+ evt("client-response", { requested, actual: model, via: "broadband", fallback: bbFallback, status: out.status, reqId });
912
916
  return;
913
917
  } else if (bb.result && typeof bb.result.status === "number") {
914
918
  // buffered result from local leader enqueue
@@ -935,7 +939,8 @@ const ROUTES = [
935
939
  onDownstreamAbort: () => evt("client-abort", { reqId, model, totalMs: Math.round(performance.now() - perf0), stages: [...stages] }),
936
940
  });
937
941
  evt("relay-done", { reqId, model, via: "broadband-local", status: out.status, ttfMs: out.ttfMs, totalMs: out.totalMs, aborted: out.aborted, interrupted: out.interrupted ?? false, detail: out.detail ?? null });
938
- evt("result", { model, status: out.status, via: "broadband", timing: null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null });
942
+ evt("result", { model, status: out.status, via: "broadband", timing: null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null, fallback: bbLocalFallback, requested, actual: model });
943
+ evt("client-response", { requested, actual: model, via: "broadband", fallback: bbLocalFallback, status: out.status, reqId });
939
944
  return;
940
945
  }
941
946
  }