@aidotnet/nextcowork-device-service 2.8.1 → 2.8.4
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/RUNTIME.json +1 -1
- package/bin.mjs +43 -2
- package/bin.mjs.map +1 -1
- package/package.json +1 -1
package/RUNTIME.json
CHANGED
package/bin.mjs
CHANGED
|
@@ -5455,6 +5455,11 @@ function shellDialect(shell) {
|
|
|
5455
5455
|
if (name === "powershell" || name === "pwsh" || name === "pwsh-preview") return "powershell";
|
|
5456
5456
|
return name === "fish" ? "fish" : "posix";
|
|
5457
5457
|
}
|
|
5458
|
+
function terminalShellArgs(shell, platform = process.platform) {
|
|
5459
|
+
if (platform === "win32") return [];
|
|
5460
|
+
const name = shell.split("/").pop()?.toLowerCase();
|
|
5461
|
+
return name !== void 0 && ["sh", "bash", "zsh", "dash", "ksh", "mksh", "fish"].includes(name) ? ["-l"] : [];
|
|
5462
|
+
}
|
|
5458
5463
|
function quoteShellArg(shell, arg) {
|
|
5459
5464
|
switch (shellDialect(shell)) {
|
|
5460
5465
|
case "cmd":
|
|
@@ -7433,6 +7438,21 @@ const PROVIDER_PRESETS = [
|
|
|
7433
7438
|
notes: "模型列表需要 API Key,可用模型取决于密钥的分组与权限。使用模型列表返回的完整 ID(如 gpt-6.1-sol),无需添加厂商前缀。",
|
|
7434
7439
|
verification: "probed"
|
|
7435
7440
|
},
|
|
7441
|
+
{
|
|
7442
|
+
id: "atlascloud",
|
|
7443
|
+
name: "Atlas Cloud",
|
|
7444
|
+
category: "aggregator",
|
|
7445
|
+
endpoints: [
|
|
7446
|
+
oa("https://api.atlascloud.ai/v1", true, true),
|
|
7447
|
+
resp("https://api.atlascloud.ai/v1", true),
|
|
7448
|
+
anth$1("https://api.atlascloud.ai")
|
|
7449
|
+
],
|
|
7450
|
+
docsUrl: "https://www.atlascloud.ai/docs",
|
|
7451
|
+
apiKeyUrl: "https://console.atlascloud.ai/api-keys",
|
|
7452
|
+
suggestedModels: ["deepseek-ai/deepseek-v4-flash", "moonshotai/kimi-k3", "zai-org/glm-5.2"],
|
|
7453
|
+
notes: "模型 ID 带厂商前缀(如 deepseek-ai/deepseek-v4-flash),请使用模型列表返回的完整 ID。模型列表免鉴权就能拉,没填 key 也能先看有哪些模型(因此列表能拉到不代表 key 有效)。同一个 key 也可走 OpenAI Responses 与 Anthropic 协议。",
|
|
7454
|
+
verification: "documented"
|
|
7455
|
+
},
|
|
7436
7456
|
{
|
|
7437
7457
|
id: "siliconflow",
|
|
7438
7458
|
name: "硅基流动(国内)",
|
|
@@ -28749,6 +28769,24 @@ const DEEPSEEK$1 = [
|
|
|
28749
28769
|
source: source$1("https://api-docs.deepseek.com/"),
|
|
28750
28770
|
verificationStatus: "unverified"
|
|
28751
28771
|
}),
|
|
28772
|
+
// NextCoWork 内置渠道的极速档。规格取自 https://nextco.work/models/deepseek-v4.1-flash-ultrafast
|
|
28773
|
+
// (1M 上下文 / 384K 输出、视觉输入、函数调用、结构化输出、prompt 缓存);页面未列思考档位,
|
|
28774
|
+
// 沿用 V4 系的方言。
|
|
28775
|
+
model("deepseek", "deepseek-v4.1-flash-ultrafast", "DeepSeek V4.1 Flash Ultrafast", {
|
|
28776
|
+
capabilities: visionCapabilities({
|
|
28777
|
+
thinking: true,
|
|
28778
|
+
tools: true,
|
|
28779
|
+
caching: true,
|
|
28780
|
+
structuredOutput: true,
|
|
28781
|
+
streaming: true
|
|
28782
|
+
}),
|
|
28783
|
+
contextWindow: 1e6,
|
|
28784
|
+
maxOutputTokens: 384e3,
|
|
28785
|
+
thinkingConfig: DEEPSEEK_EFFORT_THINKING,
|
|
28786
|
+
reasoningEfforts: ["none", "low", "high", "max"],
|
|
28787
|
+
source: source$1("https://nextco.work/models/deepseek-v4.1-flash-ultrafast"),
|
|
28788
|
+
verificationStatus: "unverified"
|
|
28789
|
+
}),
|
|
28752
28790
|
model("deepseek", "deepseek-v4-pro", "DeepSeek V4 Pro", {
|
|
28753
28791
|
capabilities: textCapabilities({
|
|
28754
28792
|
thinking: true,
|
|
@@ -31861,6 +31899,9 @@ const DEEPSEEK = [
|
|
|
31861
31899
|
ds("deepseek-v4-flash", "DeepSeek V4 Flash", one({ input: 0.22, output: 0.66, cacheRead: 7e-3 }), {
|
|
31862
31900
|
windows: PEAK_WINDOWS
|
|
31863
31901
|
}),
|
|
31902
|
+
ds("deepseek-v4.1-flash-ultrafast", "DeepSeek V4.1 Flash Ultrafast", one({ input: 0.3, output: 1.2, cacheRead: 6e-3 }), {
|
|
31903
|
+
source: "https://nextco.work/models/deepseek-v4.1-flash-ultrafast"
|
|
31904
|
+
}),
|
|
31864
31905
|
ds("deepseek-v4-pro", "DeepSeek V4 Pro", one({ input: 0.66, output: 1.98, cacheRead: 0.022 }), {
|
|
31865
31906
|
windows: PEAK_WINDOWS
|
|
31866
31907
|
}),
|
|
@@ -33517,7 +33558,7 @@ function localEnvironment(host2, rootPath) {
|
|
|
33517
33558
|
},
|
|
33518
33559
|
openTerminal: async (options) => {
|
|
33519
33560
|
const pty = await import("node-pty");
|
|
33520
|
-
return pty.spawn(terminalShell,
|
|
33561
|
+
return pty.spawn(terminalShell, terminalShellArgs(terminalShell), {
|
|
33521
33562
|
...options,
|
|
33522
33563
|
name: "xterm-256color",
|
|
33523
33564
|
env: { ...process.env, TERM: "xterm-256color", ...options.env ?? {} }
|
|
@@ -43405,7 +43446,7 @@ async function main() {
|
|
|
43405
43446
|
try {
|
|
43406
43447
|
service = await runDeviceService(parseArgs(process.argv.slice(2)), io);
|
|
43407
43448
|
} catch (error) {
|
|
43408
|
-
io.err(error instanceof UsageError ? `usage: ${error.message}` :
|
|
43449
|
+
io.err(error instanceof UsageError ? `usage: ${error.message}` : `device service failed to start${error instanceof Error ? `: ${error.message}` : ""}`);
|
|
43409
43450
|
process.exitCode = error instanceof UsageError ? 64 : 1;
|
|
43410
43451
|
return;
|
|
43411
43452
|
}
|