mslxdff 0.1.138 → 0.1.140
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/package.json +1 -1
- package/src/chooser.js +31 -12
- package/src/cli/commands/model/list-live.js +22 -0
- package/src/cli/commands/model/list.js +2 -0
- package/src/cli/commands/model/live-models.js +24 -0
- package/src/cli/commands/provider/codearts-login.js +45 -0
- package/src/cli/commands/provider/index.js +12 -0
- package/src/cli/commands/provider/keys.js +13 -2
- package/src/cli/commands/provider/models.js +9 -0
- package/src/cli/commands/provider/qoder-checkin.js +81 -0
- package/src/cli/commands/provider/qoder-login.js +103 -0
- package/src/cli/commands/provider/traework-login.js +202 -0
- package/src/cli/interactive.js +41 -4
- package/src/cli/provider-row.js +1 -1
- package/src/providers/classify.js +1 -1
- package/src/providers/codearts/auth-pool.js +148 -0
- package/src/providers/codearts/chat.js +176 -0
- package/src/providers/codearts/const.js +60 -0
- package/src/providers/codearts/dpop.js +95 -0
- package/src/providers/codearts/index.js +160 -0
- package/src/providers/codearts/login.js +214 -0
- package/src/providers/codearts/models.js +182 -0
- package/src/providers/codearts/sign.js +96 -0
- package/src/providers/codearts/sse.js +204 -0
- package/src/providers/codearts/stream.js +209 -0
- package/src/providers/codearts/sts.js +124 -0
- package/src/providers/codearts.js +1 -0
- package/src/providers/qoder/account-store.js +107 -0
- package/src/providers/qoder/aggregate.js +51 -0
- package/src/providers/qoder/baseprompt.json +592 -0
- package/src/providers/qoder/chat.js +72 -0
- package/src/providers/qoder/checkin.js +160 -0
- package/src/providers/qoder/constants.js +45 -0
- package/src/providers/qoder/encode.js +42 -0
- package/src/providers/qoder/fingerprint.js +39 -0
- package/src/providers/qoder/index.js +106 -0
- package/src/providers/qoder/models.js +62 -0
- package/src/providers/qoder/oauth.js +85 -0
- package/src/providers/qoder/payload.js +156 -0
- package/src/providers/qoder/request.js +26 -0
- package/src/providers/qoder/session.js +135 -0
- package/src/providers/qoder/sse.js +46 -0
- package/src/providers/qoder/stream.js +81 -0
- package/src/providers/qoder.js +2 -0
- package/src/providers/registry.js +15 -0
- package/src/providers/share-keys.js +2 -2
- package/src/providers/traework/account-store.js +149 -0
- package/src/providers/traework/chat.js +211 -0
- package/src/providers/traework/checkin.js +35 -0
- package/src/providers/traework/constants.js +21 -0
- package/src/providers/traework/errors.js +52 -0
- package/src/providers/traework/headers.js +47 -0
- package/src/providers/traework/index.js +122 -0
- package/src/providers/traework/models.js +97 -0
- package/src/providers/traework/payload.js +86 -0
- package/src/providers/traework/sse.js +184 -0
- package/src/providers/traework/token.js +52 -0
- package/src/providers/traework.js +2 -0
- package/src/routes/models-route.js +19 -1
- package/src/runtime/bootstrap.js +10 -0
- package/src/runtime/provider-gate.js +30 -0
- package/src/runtime/providers-setup.js +9 -3
- package/src/runtime/qoder-checkin.js +93 -0
- package/src/runtime/traework-checkin.js +104 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// qoder 非流式聚合:上游 SSE 全读完 → chat.completion JSON。
|
|
2
|
+
// 真流式走 stream.js;本模块只服务 stream:false(行为与旧 callQoder 聚合同)。
|
|
3
|
+
import { extractDelta } from "./sse.js";
|
|
4
|
+
|
|
5
|
+
export async function aggregateQoderStream(upstreamRes) {
|
|
6
|
+
const reader = upstreamRes.body.getReader();
|
|
7
|
+
const dec = new TextDecoder();
|
|
8
|
+
let buf = "";
|
|
9
|
+
let usage = null;
|
|
10
|
+
let content = "";
|
|
11
|
+
let reasoning = "";
|
|
12
|
+
const toolCalls = [];
|
|
13
|
+
let sawContent = false;
|
|
14
|
+
for (;;) {
|
|
15
|
+
const { done, value } = await reader.read();
|
|
16
|
+
if (value) buf += dec.decode(value, { stream: !done });
|
|
17
|
+
const lines = buf.split("\n");
|
|
18
|
+
buf = lines.pop();
|
|
19
|
+
for (const raw of lines) {
|
|
20
|
+
const line = raw.replace(/\r$/, "");
|
|
21
|
+
if (!line.startsWith("data:")) continue;
|
|
22
|
+
const payload = line.slice(5).trim();
|
|
23
|
+
if (!payload || payload === "[DONE]") continue;
|
|
24
|
+
const d = extractDelta(payload);
|
|
25
|
+
if (d.err) throw d.err;
|
|
26
|
+
if (d.usageIn > 0 || d.usageOut > 0) {
|
|
27
|
+
usage = { prompt_tokens: d.usageIn, completion_tokens: d.usageOut, total_tokens: d.usageIn + d.usageOut };
|
|
28
|
+
}
|
|
29
|
+
if (d.content) { content += d.content; sawContent = true; }
|
|
30
|
+
if (d.reasoning) { reasoning += d.reasoning; sawContent = true; }
|
|
31
|
+
if (d.toolCalls) { toolCalls.push(...d.toolCalls); sawContent = true; }
|
|
32
|
+
}
|
|
33
|
+
if (done) break;
|
|
34
|
+
}
|
|
35
|
+
if (!sawContent && !usage) throw { kind: "upstream", status: 502, detail: "empty upstream stream" };
|
|
36
|
+
return { usage, content, reasoning, toolCalls };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function toCompletionJson({ model, chatId, content, reasoning, toolCalls, usage }) {
|
|
40
|
+
const msg = { role: "assistant", content: content || (toolCalls.length ? null : "") };
|
|
41
|
+
if (reasoning) msg.reasoning_content = reasoning;
|
|
42
|
+
if (toolCalls.length) msg.tool_calls = toolCalls;
|
|
43
|
+
return {
|
|
44
|
+
id: chatId,
|
|
45
|
+
object: "chat.completion",
|
|
46
|
+
created: Math.floor(Date.now() / 1000),
|
|
47
|
+
model,
|
|
48
|
+
choices: [{ index: 0, message: msg, finish_reason: toolCalls.length ? "tool_calls" : "stop" }],
|
|
49
|
+
usage: usage || { prompt_tokens: 0, completion_tokens: 0, total_tokens: 0 },
|
|
50
|
+
};
|
|
51
|
+
}
|