deepseek-tui 0.8.39 → 0.8.42
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/README.md +9 -83
- package/package.json +8 -23
- package/scripts/deprecation-notice.js +22 -0
- package/bin/deepseek-tui.js +0 -8
- package/bin/deepseek.js +0 -8
- package/scripts/artifacts.js +0 -126
- package/scripts/install.js +0 -1174
- package/scripts/preflight-glibc.js +0 -135
- package/scripts/run.js +0 -58
- package/scripts/verify-release-assets.js +0 -140
- package/test/artifacts.test.js +0 -66
- package/test/install.test.js +0 -180
- package/test/postinstall.test.js +0 -157
- package/test/run.test.js +0 -11
package/README.md
CHANGED
|
@@ -1,89 +1,15 @@
|
|
|
1
|
-
# deepseek-tui
|
|
1
|
+
# deepseek-tui (deprecated)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Install
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install -g deepseek-tui
|
|
9
|
-
# or
|
|
10
|
-
pnpm add -g deepseek-tui
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
For project-local usage:
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
npm install deepseek-tui
|
|
17
|
-
npx deepseek-tui --help
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
`postinstall` tries to download platform binaries into `bin/downloads/` and
|
|
21
|
-
exposes `deepseek` and `deepseek-tui` commands. If GitHub release assets are
|
|
22
|
-
temporarily unreachable, install continues and the wrapper retries the download
|
|
23
|
-
on first run.
|
|
24
|
-
|
|
25
|
-
## First run
|
|
3
|
+
This package has been renamed to **codewhale**. Install that instead:
|
|
26
4
|
|
|
27
5
|
```bash
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
deepseek
|
|
6
|
+
npm uninstall -g deepseek-tui
|
|
7
|
+
npm install -g codewhale
|
|
31
8
|
```
|
|
32
9
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
`deepseek sessions`, and `deepseek resume --last`.
|
|
37
|
-
|
|
38
|
-
The app talks to DeepSeek's documented OpenAI-compatible Chat Completions API.
|
|
39
|
-
Set `DEEPSEEK_BASE_URL` only if you need the China endpoint or DeepSeek beta
|
|
40
|
-
features such as strict tool mode, chat prefix completion, or FIM completion.
|
|
41
|
-
|
|
42
|
-
NVIDIA NIM-hosted DeepSeek V4 Pro is also supported:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
deepseek auth set --provider nvidia-nim --api-key "YOUR_NVIDIA_API_KEY"
|
|
46
|
-
deepseek --provider nvidia-nim
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
For a single process, set `DEEPSEEK_PROVIDER=nvidia-nim` and `NVIDIA_API_KEY`
|
|
50
|
-
or `NVIDIA_NIM_API_KEY` (with `DEEPSEEK_API_KEY` as a compatibility fallback).
|
|
51
|
-
The NIM default model is `deepseek-ai/deepseek-v4-pro` and the default base URL
|
|
52
|
-
is `https://integrate.api.nvidia.com/v1`. With `--provider nvidia-nim`,
|
|
53
|
-
`--model deepseek-v4-flash` maps to `deepseek-ai/deepseek-v4-flash`.
|
|
54
|
-
|
|
55
|
-
## Supported platforms
|
|
56
|
-
|
|
57
|
-
Prebuilt binaries for the GitHub release are downloaded automatically:
|
|
58
|
-
|
|
59
|
-
- Linux x64
|
|
60
|
-
- Linux arm64 (v0.8.8+)
|
|
61
|
-
- macOS x64 / arm64
|
|
62
|
-
- Windows x64
|
|
63
|
-
|
|
64
|
-
Other platform/architecture combinations (musl, riscv64, FreeBSD, …) aren't
|
|
65
|
-
shipped as prebuilts. Unsupported platforms, checksum failures, and glibc
|
|
66
|
-
compatibility problems still fail with a clear error pointing you at
|
|
67
|
-
`cargo install deepseek-tui-cli deepseek-tui --locked` and the full
|
|
68
|
-
[docs/INSTALL.md](https://github.com/Hmbown/DeepSeek-TUI/blob/main/docs/INSTALL.md)
|
|
69
|
-
build-from-source guide.
|
|
70
|
-
|
|
71
|
-
## Configuration
|
|
72
|
-
|
|
73
|
-
- Default binary version comes from `deepseekBinaryVersion` in `package.json`.
|
|
74
|
-
- Set `DEEPSEEK_TUI_VERSION` or `DEEPSEEK_VERSION` to override the release version.
|
|
75
|
-
- Set `DEEPSEEK_TUI_GITHUB_REPO` or `DEEPSEEK_GITHUB_REPO` to override the source repo (defaults to `Hmbown/DeepSeek-TUI`).
|
|
76
|
-
- Set `DEEPSEEK_TUI_RELEASE_BASE_URL` to use an internal or mirrored
|
|
77
|
-
release-asset directory when GitHub Releases is unavailable. The directory
|
|
78
|
-
must contain `deepseek-artifacts-sha256.txt` and the platform binaries.
|
|
79
|
-
- Set `DEEPSEEK_TUI_FORCE_DOWNLOAD=1` to force download even when the cached binary is already present.
|
|
80
|
-
- Set `DEEPSEEK_TUI_DISABLE_INSTALL=1` to skip install-time download.
|
|
81
|
-
- Set `DEEPSEEK_TUI_OPTIONAL_INSTALL=1` to make install-time retryable download
|
|
82
|
-
failures warn and exit `0` instead of failing `npm install`.
|
|
83
|
-
|
|
84
|
-
## Release integrity
|
|
10
|
+
`codewhale` ships the same `codewhale` and `codewhale-tui` binaries plus
|
|
11
|
+
deprecation shims under the old `deepseek` / `deepseek-tui` names so existing
|
|
12
|
+
scripts keep working through the v0.8.x transition.
|
|
85
13
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
- Install-time downloads are verified against the release checksum manifest before
|
|
89
|
-
the wrapper marks them executable.
|
|
14
|
+
See [docs/REBRAND.md](https://github.com/Hmbown/CodeWhale/blob/main/docs/REBRAND.md)
|
|
15
|
+
for the full migration story.
|
package/package.json
CHANGED
|
@@ -1,37 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deepseek-tui",
|
|
3
|
-
"version": "0.8.
|
|
4
|
-
"
|
|
5
|
-
"description": "Install and run deepseek and deepseek-tui binaries from GitHub release artifacts.",
|
|
3
|
+
"version": "0.8.42",
|
|
4
|
+
"description": "Deprecated. Renamed to `codewhale`. Run `npm install -g codewhale` instead.",
|
|
6
5
|
"author": "Hmbown",
|
|
7
6
|
"license": "MIT",
|
|
8
|
-
"homepage": "https://github.com/Hmbown/
|
|
7
|
+
"homepage": "https://github.com/Hmbown/CodeWhale/blob/main/docs/REBRAND.md",
|
|
9
8
|
"repository": {
|
|
10
9
|
"type": "git",
|
|
11
|
-
"url": "git+https://github.com/Hmbown/
|
|
10
|
+
"url": "git+https://github.com/Hmbown/CodeWhale.git"
|
|
12
11
|
},
|
|
13
12
|
"bugs": {
|
|
14
|
-
"url": "https://github.com/Hmbown/
|
|
13
|
+
"url": "https://github.com/Hmbown/CodeWhale/issues"
|
|
15
14
|
},
|
|
16
15
|
"keywords": [
|
|
16
|
+
"deprecated",
|
|
17
17
|
"deepseek",
|
|
18
|
-
"
|
|
19
|
-
"tui",
|
|
20
|
-
"rust",
|
|
21
|
-
"binary",
|
|
22
|
-
"terminal"
|
|
18
|
+
"codewhale"
|
|
23
19
|
],
|
|
24
20
|
"type": "commonjs",
|
|
25
|
-
"bin": {
|
|
26
|
-
"deepseek": "bin/deepseek.js",
|
|
27
|
-
"deepseek-tui": "bin/deepseek-tui.js"
|
|
28
|
-
},
|
|
29
21
|
"scripts": {
|
|
30
|
-
"
|
|
31
|
-
"postinstall": "node scripts/install.js --optional",
|
|
32
|
-
"prepublishOnly": "node scripts/verify-release-assets.js",
|
|
33
|
-
"prepack": "node scripts/install.js",
|
|
34
|
-
"test": "node --test test/*.test.js"
|
|
22
|
+
"postinstall": "node scripts/deprecation-notice.js"
|
|
35
23
|
},
|
|
36
24
|
"engines": {
|
|
37
25
|
"node": ">=18"
|
|
@@ -39,11 +27,8 @@
|
|
|
39
27
|
"publishConfig": {
|
|
40
28
|
"access": "public"
|
|
41
29
|
},
|
|
42
|
-
"preferGlobal": true,
|
|
43
30
|
"files": [
|
|
44
|
-
"bin/*.js",
|
|
45
31
|
"scripts/*.js",
|
|
46
|
-
"test/*.js",
|
|
47
32
|
"README.md",
|
|
48
33
|
"package.json"
|
|
49
34
|
]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const notice = [
|
|
4
|
+
"",
|
|
5
|
+
" ╭───────────────────────────────────────────────────────────────────╮",
|
|
6
|
+
" │ │",
|
|
7
|
+
" │ deepseek-tui has been renamed to `codewhale`. │",
|
|
8
|
+
" │ │",
|
|
9
|
+
" │ Please uninstall this package and install codewhale instead: │",
|
|
10
|
+
" │ │",
|
|
11
|
+
" │ npm uninstall -g deepseek-tui │",
|
|
12
|
+
" │ npm install -g codewhale │",
|
|
13
|
+
" │ │",
|
|
14
|
+
" │ codewhale ships the same `codewhale` and `codewhale-tui` │",
|
|
15
|
+
" │ binaries plus deprecation shims under the old names. See: │",
|
|
16
|
+
" │ https://github.com/Hmbown/CodeWhale/blob/main/docs/REBRAND.md │",
|
|
17
|
+
" │ │",
|
|
18
|
+
" ╰───────────────────────────────────────────────────────────────────╯",
|
|
19
|
+
"",
|
|
20
|
+
].join("\n");
|
|
21
|
+
|
|
22
|
+
process.stderr.write(notice);
|
package/bin/deepseek-tui.js
DELETED
package/bin/deepseek.js
DELETED
package/scripts/artifacts.js
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
const path = require("path");
|
|
2
|
-
const os = require("os");
|
|
3
|
-
|
|
4
|
-
const CHECKSUM_MANIFEST = "deepseek-artifacts-sha256.txt";
|
|
5
|
-
|
|
6
|
-
const ASSET_MATRIX = {
|
|
7
|
-
linux: {
|
|
8
|
-
x64: ["deepseek-linux-x64", "deepseek-tui-linux-x64"],
|
|
9
|
-
arm64: ["deepseek-linux-arm64", "deepseek-tui-linux-arm64"],
|
|
10
|
-
},
|
|
11
|
-
darwin: {
|
|
12
|
-
x64: ["deepseek-macos-x64", "deepseek-tui-macos-x64"],
|
|
13
|
-
arm64: ["deepseek-macos-arm64", "deepseek-tui-macos-arm64"],
|
|
14
|
-
},
|
|
15
|
-
win32: {
|
|
16
|
-
x64: ["deepseek-windows-x64.exe", "deepseek-tui-windows-x64.exe"],
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
// HarmonyPC (openharmony) is an x86_64 Linux-compatible environment; map it to
|
|
21
|
-
// the linux binary family so npm install succeeds without a separate build target.
|
|
22
|
-
const PLATFORM_ALIASES = {
|
|
23
|
-
openharmony: "linux",
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
function detectBinaryNames() {
|
|
27
|
-
const rawPlatform = os.platform();
|
|
28
|
-
const platform = PLATFORM_ALIASES[rawPlatform] || rawPlatform;
|
|
29
|
-
const arch = os.arch();
|
|
30
|
-
const defaults = ASSET_MATRIX[platform];
|
|
31
|
-
if (!defaults) {
|
|
32
|
-
const supported = Object.keys(ASSET_MATRIX).map(p => `'${p}'`).join(', ');
|
|
33
|
-
throw new Error(
|
|
34
|
-
`Unsupported platform: ${rawPlatform}. Supported platforms: ${supported}.\n\n` +
|
|
35
|
-
unsupportedBuildHint(),
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
const pair = defaults[arch];
|
|
39
|
-
if (!pair) {
|
|
40
|
-
const supported = Object.keys(defaults).map(a => `'${a}'`).join(', ');
|
|
41
|
-
throw new Error(
|
|
42
|
-
`Unsupported architecture: ${arch} on platform ${platform}. ` +
|
|
43
|
-
`Supported architectures: ${supported}.\n\n` +
|
|
44
|
-
unsupportedBuildHint(),
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
platform,
|
|
49
|
-
arch,
|
|
50
|
-
deepseek: pair[0],
|
|
51
|
-
tui: pair[1],
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function unsupportedBuildHint() {
|
|
56
|
-
return [
|
|
57
|
-
"No prebuilt binary is available for this platform/architecture combo.",
|
|
58
|
-
"You can still run DeepSeek TUI by building from source with Cargo:",
|
|
59
|
-
"",
|
|
60
|
-
" # Requires Rust 1.88+ (https://rustup.rs)",
|
|
61
|
-
" cargo install deepseek-tui-cli --locked # provides `deepseek`",
|
|
62
|
-
" cargo install deepseek-tui --locked # provides `deepseek-tui`",
|
|
63
|
-
"",
|
|
64
|
-
"Or build from a checkout:",
|
|
65
|
-
"",
|
|
66
|
-
" git clone https://github.com/Hmbown/DeepSeek-TUI.git",
|
|
67
|
-
" cd DeepSeek-TUI",
|
|
68
|
-
" cargo install --path crates/cli --locked",
|
|
69
|
-
" cargo install --path crates/tui --locked",
|
|
70
|
-
"",
|
|
71
|
-
"See https://github.com/Hmbown/DeepSeek-TUI/blob/main/docs/INSTALL.md",
|
|
72
|
-
"for cross-compilation, mirror, and Linux ARM64 specifics.",
|
|
73
|
-
].join("\n");
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
function executableName(base, platform) {
|
|
77
|
-
return platform === "win32" ? `${base}.exe` : base;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function releaseBaseUrl(version, repo = "Hmbown/DeepSeek-TUI") {
|
|
81
|
-
const override =
|
|
82
|
-
process.env.DEEPSEEK_TUI_RELEASE_BASE_URL || process.env.DEEPSEEK_RELEASE_BASE_URL;
|
|
83
|
-
if (override) {
|
|
84
|
-
const trimmed = String(override).trim();
|
|
85
|
-
return trimmed.endsWith("/") ? trimmed : `${trimmed}/`;
|
|
86
|
-
}
|
|
87
|
-
return `https://github.com/${repo}/releases/download/v${version}/`;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
function releaseAssetUrl(baseName, version, repo = "Hmbown/DeepSeek-TUI") {
|
|
91
|
-
return new URL(baseName, releaseBaseUrl(version, repo)).toString();
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function checksumManifestUrl(version, repo = "Hmbown/DeepSeek-TUI") {
|
|
95
|
-
return releaseAssetUrl(CHECKSUM_MANIFEST, version, repo);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
function releaseBinaryDirectory() {
|
|
99
|
-
return path.join(__dirname, "..", "bin", "downloads");
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
function allAssetNames() {
|
|
103
|
-
const names = [];
|
|
104
|
-
for (const platformAssets of Object.values(ASSET_MATRIX)) {
|
|
105
|
-
for (const pair of Object.values(platformAssets)) {
|
|
106
|
-
names.push(pair[0], pair[1]);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return Array.from(new Set(names));
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
function allReleaseAssetNames() {
|
|
113
|
-
return [...allAssetNames(), CHECKSUM_MANIFEST];
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
module.exports = {
|
|
117
|
-
allAssetNames,
|
|
118
|
-
allReleaseAssetNames,
|
|
119
|
-
CHECKSUM_MANIFEST,
|
|
120
|
-
checksumManifestUrl,
|
|
121
|
-
detectBinaryNames,
|
|
122
|
-
executableName,
|
|
123
|
-
releaseAssetUrl,
|
|
124
|
-
releaseBaseUrl,
|
|
125
|
-
releaseBinaryDirectory,
|
|
126
|
-
};
|