codex-threadripper 0.1.1 → 0.1.6

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 CHANGED
@@ -1,133 +1,7 @@
1
1
  # codex-threadripper
2
2
 
3
- `codex-threadripper` 是一个面向人的小型 CLI,用来让 `CODEX_HOME/state_5.sqlite` 持续对齐当前 `model_provider`。
3
+ This package is the npm entrypoint for `codex-threadripper`.
4
4
 
5
- 它的目标很直接:让 Codex 线程列表和 `resume` 流程始终落在同一个 provider 桶里,这样线程历史会更完整、更连续。
5
+ It installs the matching prebuilt platform package for your machine and runs the native binary from there.
6
6
 
7
- ## 适合谁
8
-
9
- - 经常在同一个 `CODEX_HOME` 下切换 provider 的人
10
- - 想让 `codex resume` 和基于 `app-server` 的线程列表看到同一批历史线程的人
11
- - 想把这件事做成后台常驻服务的人
12
-
13
- ## 功能
14
-
15
- - `status`
16
- - 查看当前 config provider、SQLite 分布和后台服务状态
17
- - `sync`
18
- - 立刻执行一次 SQLite 收敛
19
- - `watch`
20
- - 持续监听 `config.toml`,并定时收敛新增线程
21
- - `print-plist`
22
- - 打印 `launchd` plist
23
- - `install-launchd`
24
- - 安装并加载后台服务
25
- - `uninstall-launchd`
26
- - 卸载后台服务
27
-
28
- ## 安装
29
-
30
- ```bash
31
- cargo install codex-threadripper
32
- ```
33
-
34
- 也可以从源码目录直接运行:
35
-
36
- ```bash
37
- cargo run -- --help
38
- ```
39
-
40
- ## 示例
41
-
42
- ```bash
43
- codex-threadripper status
44
- codex-threadripper sync
45
- codex-threadripper watch
46
- codex-threadripper install-launchd
47
- ```
48
-
49
- ## 本地化
50
-
51
- 当前支持两种语言:
52
-
53
- - 简体中文
54
- - 英文
55
-
56
- 语言选择顺序:
57
-
58
- 1. `CODEX_THREADRIPPER_LANG`
59
- 2. `LC_ALL`
60
- 3. `LC_MESSAGES`
61
- 4. `LANG`
62
- 5. macOS 系统语言
63
-
64
- ## 平台
65
-
66
- `launchd` 相关命令面向 macOS。
67
- `status`、`sync` 和 `watch` 这类核心命令适合任何能访问 `CODEX_HOME/state_5.sqlite` 的环境。
68
-
69
- ## English
70
-
71
- `codex-threadripper` is a human-first CLI that keeps `CODEX_HOME/state_5.sqlite` aligned with the current `model_provider`.
72
-
73
- It helps Codex thread lists and resume flows stay in one provider bucket, so thread history remains complete and continuous.
74
-
75
- ### Install
76
-
77
- ```bash
78
- cargo install codex-threadripper
79
- ```
80
-
81
- ### Commands
82
-
83
- - `status` shows the current provider, SQLite distribution, and background service state
84
- - `sync` reconciles SQLite once right now
85
- - `watch` keeps listening for provider changes and new thread rows
86
- - `print-plist` prints the generated `launchd` plist
87
- - `install-launchd` installs the background service
88
- - `uninstall-launchd` removes the background service
89
-
90
- ## Release flow
91
-
92
- This project uses a tag-driven `cargo-release` + `cargo-dist` flow.
93
-
94
- Preview the next release:
95
-
96
- ```bash
97
- cargo release patch --dry-run
98
- ```
99
-
100
- Publish a real release:
101
-
102
- ```bash
103
- cargo release patch --execute
104
- ```
105
-
106
- The release tag format is:
107
-
108
- ```text
109
- vX.Y.Z
110
- ```
111
-
112
- After the tag is pushed, GitHub Actions runs `cargo-dist` and builds release artifacts for:
113
-
114
- - macOS Intel
115
- - macOS Apple Silicon
116
- - Linux x64
117
- - Linux ARM64
118
- - Windows x64
119
- - Windows ARM64
120
-
121
- Generated installers and package outputs include:
122
-
123
- - shell installer
124
- - PowerShell installer
125
- - npm package
126
- - Homebrew formula artifact
127
- - Windows MSI
128
-
129
- Whenever you change `dist-workspace.toml`, rerun:
130
-
131
- ```bash
132
- cargo dist init --yes
133
- ```
7
+ Published from release `v0.1.6`.
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { spawnSync } = require("node:child_process");
4
+ const { dirname, join } = require("node:path");
5
+
6
+ const platformPackages = {
7
+ "darwin:arm64": { packageName: "@wangnov/codex-threadripper-macos-arm64", binaryName: "codex-threadripper" },
8
+ "darwin:x64": { packageName: "@wangnov/codex-threadripper-macos-x64", binaryName: "codex-threadripper" },
9
+ "linux:arm64": { packageName: "@wangnov/codex-threadripper-linux-arm64", binaryName: "codex-threadripper" },
10
+ "linux:x64": { packageName: "@wangnov/codex-threadripper-linux-x64", binaryName: "codex-threadripper" },
11
+ "win32:x64": { packageName: "@wangnov/codex-threadripper-windows-x64", binaryName: "codex-threadripper.exe" }
12
+ };
13
+
14
+ const supported = Object.keys(platformPackages);
15
+ const key = `${process.platform}:${process.arch}`;
16
+ const selected = platformPackages[key];
17
+
18
+ if (!selected) {
19
+ console.error(`codex-threadripper is available for: ${supported.join(", ")}`);
20
+ process.exit(1);
21
+ }
22
+
23
+ let packageJsonPath;
24
+ try {
25
+ packageJsonPath = require.resolve(`${selected.packageName}/package.json`);
26
+ } catch (error) {
27
+ console.error(`Missing optional dependency ${selected.packageName}. Reinstall without skipping optional dependencies.`);
28
+ process.exit(1);
29
+ }
30
+
31
+ const binaryPath = join(dirname(packageJsonPath), "bin", selected.binaryName);
32
+ const result = spawnSync(binaryPath, process.argv.slice(2), { stdio: "inherit" });
33
+
34
+ if (result.error) {
35
+ console.error(result.error.message);
36
+ process.exit(1);
37
+ }
38
+
39
+ process.exit(result.status ?? 1);
package/package.json CHANGED
@@ -1,99 +1,32 @@
1
1
  {
2
- "artifactDownloadUrl": "https://github.com/wangnov/codex-threadripper/releases/download/v0.1.1",
3
- "author": "Wangnov",
4
- "bin": {
5
- "codex-threadripper": "run-codex-threadripper.js"
6
- },
7
- "dependencies": {
8
- "axios": "^1.13.2",
9
- "axios-proxy-builder": "^0.1.2",
10
- "console.table": "^0.10.0",
11
- "detect-libc": "^2.1.2",
12
- "rimraf": "^6.1.2"
13
- },
2
+ "name": "codex-threadripper",
3
+ "version": "0.1.6",
14
4
  "description": "Human-first CLI that keeps Codex thread history aligned to one provider bucket.",
15
- "devDependencies": {
16
- "prettier": "^3.7.4"
17
- },
18
- "engines": {
19
- "node": ">=14",
20
- "npm": ">=6"
21
- },
22
- "glibcMinimum": {
23
- "major": 2,
24
- "series": 35
5
+ "author": "Wangnov",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/Wangnov/codex-threadripper.git"
25
10
  },
26
- "homepage": "https://github.com/wangnov/codex-threadripper",
11
+ "homepage": "https://github.com/Wangnov/codex-threadripper",
27
12
  "keywords": [
28
- "command-line-utilities",
29
13
  "codex",
30
14
  "cli",
31
15
  "sqlite",
32
16
  "launchd"
33
17
  ],
34
- "license": "MIT",
35
- "name": "codex-threadripper",
36
- "preferUnplugged": true,
37
- "repository": "https://github.com/wangnov/codex-threadripper",
38
- "scripts": {
39
- "fmt": "prettier --write **/*.js",
40
- "fmt:check": "prettier --check **/*.js",
41
- "postinstall": "node ./install.js"
42
- },
43
- "supportedPlatforms": {
44
- "aarch64-apple-darwin": {
45
- "artifactName": "codex-threadripper-aarch64-apple-darwin.tar.xz",
46
- "bins": {
47
- "codex-threadripper": "codex-threadripper"
48
- },
49
- "zipExt": ".tar.xz"
50
- },
51
- "aarch64-pc-windows-msvc": {
52
- "artifactName": "codex-threadripper-x86_64-pc-windows-msvc.zip",
53
- "bins": {
54
- "codex-threadripper": "codex-threadripper.exe"
55
- },
56
- "zipExt": ".zip"
57
- },
58
- "aarch64-unknown-linux-gnu": {
59
- "artifactName": "codex-threadripper-aarch64-unknown-linux-gnu.tar.xz",
60
- "bins": {
61
- "codex-threadripper": "codex-threadripper"
62
- },
63
- "zipExt": ".tar.xz"
64
- },
65
- "x86_64-apple-darwin": {
66
- "artifactName": "codex-threadripper-x86_64-apple-darwin.tar.xz",
67
- "bins": {
68
- "codex-threadripper": "codex-threadripper"
69
- },
70
- "zipExt": ".tar.xz"
71
- },
72
- "x86_64-pc-windows-gnu": {
73
- "artifactName": "codex-threadripper-x86_64-pc-windows-msvc.zip",
74
- "bins": {
75
- "codex-threadripper": "codex-threadripper.exe"
76
- },
77
- "zipExt": ".zip"
78
- },
79
- "x86_64-pc-windows-msvc": {
80
- "artifactName": "codex-threadripper-x86_64-pc-windows-msvc.zip",
81
- "bins": {
82
- "codex-threadripper": "codex-threadripper.exe"
83
- },
84
- "zipExt": ".zip"
85
- },
86
- "x86_64-unknown-linux-gnu": {
87
- "artifactName": "codex-threadripper-x86_64-unknown-linux-gnu.tar.xz",
88
- "bins": {
89
- "codex-threadripper": "codex-threadripper"
90
- },
91
- "zipExt": ".tar.xz"
92
- }
18
+ "files": [
19
+ "bin",
20
+ "README.md"
21
+ ],
22
+ "bin": {
23
+ "codex-threadripper": "bin/codex-threadripper.js"
93
24
  },
94
- "version": "0.1.1",
95
- "volta": {
96
- "node": "18.14.1",
97
- "npm": "9.5.0"
25
+ "optionalDependencies": {
26
+ "@wangnov/codex-threadripper-macos-arm64": "0.1.6",
27
+ "@wangnov/codex-threadripper-macos-x64": "0.1.6",
28
+ "@wangnov/codex-threadripper-linux-arm64": "0.1.6",
29
+ "@wangnov/codex-threadripper-linux-x64": "0.1.6",
30
+ "@wangnov/codex-threadripper-windows-x64": "0.1.6"
98
31
  }
99
- }
32
+ }
package/binary-install.js DELETED
@@ -1,212 +0,0 @@
1
- const { createWriteStream, existsSync, mkdirSync, mkdtemp } = require("fs");
2
- const { join, sep } = require("path");
3
- const { spawnSync } = require("child_process");
4
- const { tmpdir } = require("os");
5
-
6
- const axios = require("axios");
7
- const rimraf = require("rimraf");
8
- const tmpDir = tmpdir();
9
-
10
- const error = (msg) => {
11
- console.error(msg);
12
- process.exit(1);
13
- };
14
-
15
- class Package {
16
- constructor(platform, name, url, filename, zipExt, binaries) {
17
- let errors = [];
18
- if (typeof url !== "string") {
19
- errors.push("url must be a string");
20
- } else {
21
- try {
22
- new URL(url);
23
- } catch (e) {
24
- errors.push(e);
25
- }
26
- }
27
- if (name && typeof name !== "string") {
28
- errors.push("package name must be a string");
29
- }
30
- if (!name) {
31
- errors.push("You must specify the name of your package");
32
- }
33
- if (binaries && typeof binaries !== "object") {
34
- errors.push("binaries must be a string => string map");
35
- }
36
- if (!binaries) {
37
- errors.push("You must specify the binaries in the package");
38
- }
39
-
40
- if (errors.length > 0) {
41
- let errorMsg =
42
- "One or more of the parameters you passed to the Binary constructor are invalid:\n";
43
- errors.forEach((error) => {
44
- errorMsg += error;
45
- });
46
- errorMsg +=
47
- '\n\nCorrect usage: new Package("my-binary", "https://example.com/binary/download.tar.gz", {"my-binary": "my-binary"})';
48
- error(errorMsg);
49
- }
50
-
51
- this.platform = platform;
52
- this.url = url;
53
- this.name = name;
54
- this.filename = filename;
55
- this.zipExt = zipExt;
56
- this.installDirectory = join(__dirname, "node_modules", ".bin_real");
57
- this.binaries = binaries;
58
-
59
- if (!existsSync(this.installDirectory)) {
60
- mkdirSync(this.installDirectory, { recursive: true });
61
- }
62
- }
63
-
64
- exists() {
65
- for (const binaryName in this.binaries) {
66
- const binRelPath = this.binaries[binaryName];
67
- const binPath = join(this.installDirectory, binRelPath);
68
- if (!existsSync(binPath)) {
69
- return false;
70
- }
71
- }
72
- return true;
73
- }
74
-
75
- install(fetchOptions, suppressLogs = false) {
76
- if (this.exists()) {
77
- if (!suppressLogs) {
78
- console.error(
79
- `${this.name} is already installed, skipping installation.`,
80
- );
81
- }
82
- return Promise.resolve();
83
- }
84
-
85
- if (existsSync(this.installDirectory)) {
86
- rimraf.sync(this.installDirectory);
87
- }
88
-
89
- mkdirSync(this.installDirectory, { recursive: true });
90
-
91
- if (!suppressLogs) {
92
- console.error(`Downloading release from ${this.url}`);
93
- }
94
-
95
- return axios({ ...fetchOptions, url: this.url, responseType: "stream" })
96
- .then((res) => {
97
- return new Promise((resolve, reject) => {
98
- mkdtemp(`${tmpDir}${sep}`, (err, directory) => {
99
- let tempFile = join(directory, this.filename);
100
- const sink = res.data.pipe(createWriteStream(tempFile));
101
- sink.on("error", (err) => reject(err));
102
- sink.on("close", () => {
103
- if (/\.tar\.*/.test(this.zipExt)) {
104
- const result = spawnSync("tar", [
105
- "xf",
106
- tempFile,
107
- // The tarballs are stored with a leading directory
108
- // component; we strip one component in the
109
- // shell installers too.
110
- "--strip-components",
111
- "1",
112
- "-C",
113
- this.installDirectory,
114
- ]);
115
- if (result.status == 0) {
116
- resolve();
117
- } else if (result.error) {
118
- reject(result.error);
119
- } else {
120
- reject(
121
- new Error(
122
- `An error occurred untarring the artifact: stdout: ${result.stdout}; stderr: ${result.stderr}`,
123
- ),
124
- );
125
- }
126
- } else if (this.zipExt == ".zip") {
127
- let result;
128
- if (this.platform.artifactName.includes("windows")) {
129
- // Windows does not have "unzip" by default on many installations, instead
130
- // we use Expand-Archive from powershell
131
- result = spawnSync("powershell.exe", [
132
- "-NoProfile",
133
- "-NonInteractive",
134
- "-Command",
135
- `& {
136
- param([string]$LiteralPath, [string]$DestinationPath)
137
- Expand-Archive -LiteralPath $LiteralPath -DestinationPath $DestinationPath -Force
138
- }`,
139
- tempFile,
140
- this.installDirectory,
141
- ]);
142
- } else {
143
- result = spawnSync("unzip", [
144
- "-q",
145
- tempFile,
146
- "-d",
147
- this.installDirectory,
148
- ]);
149
- }
150
-
151
- if (result.status == 0) {
152
- resolve();
153
- } else if (result.error) {
154
- reject(result.error);
155
- } else {
156
- reject(
157
- new Error(
158
- `An error occurred unzipping the artifact: stdout: ${result.stdout}; stderr: ${result.stderr}`,
159
- ),
160
- );
161
- }
162
- } else {
163
- reject(
164
- new Error(`Unrecognized file extension: ${this.zipExt}`),
165
- );
166
- }
167
- });
168
- });
169
- });
170
- })
171
- .then(() => {
172
- if (!suppressLogs) {
173
- console.error(`${this.name} has been installed!`);
174
- }
175
- })
176
- .catch((e) => {
177
- error(`Error fetching release: ${e.message}`);
178
- });
179
- }
180
-
181
- run(binaryName, fetchOptions) {
182
- const promise = !this.exists()
183
- ? this.install(fetchOptions, true)
184
- : Promise.resolve();
185
-
186
- promise
187
- .then(() => {
188
- const [, , ...args] = process.argv;
189
-
190
- const options = { cwd: process.cwd(), stdio: "inherit" };
191
-
192
- const binRelPath = this.binaries[binaryName];
193
- if (!binRelPath) {
194
- error(`${binaryName} is not a known binary in ${this.name}`);
195
- }
196
- const binPath = join(this.installDirectory, binRelPath);
197
- const result = spawnSync(binPath, args, options);
198
-
199
- if (result.error) {
200
- error(result.error);
201
- }
202
-
203
- process.exit(result.status);
204
- })
205
- .catch((e) => {
206
- error(e.message);
207
- process.exit(1);
208
- });
209
- }
210
- }
211
-
212
- module.exports.Package = Package;
package/binary.js DELETED
@@ -1,126 +0,0 @@
1
- const { Package } = require("./binary-install");
2
- const os = require("os");
3
- const cTable = require("console.table");
4
- const libc = require("detect-libc");
5
- const { configureProxy } = require("axios-proxy-builder");
6
-
7
- const error = (msg) => {
8
- console.error(msg);
9
- process.exit(1);
10
- };
11
-
12
- const {
13
- name,
14
- artifactDownloadUrl,
15
- supportedPlatforms,
16
- glibcMinimum,
17
- } = require("./package.json");
18
-
19
- const builderGlibcMajorVersion = glibcMinimum.major;
20
- const builderGlibcMInorVersion = glibcMinimum.series;
21
-
22
- const getPlatform = () => {
23
- const rawOsType = os.type();
24
- const rawArchitecture = os.arch();
25
-
26
- // We want to use rust-style target triples as the canonical key
27
- // for a platform, so translate the "os" library's concepts into rust ones
28
- let osType = "";
29
- switch (rawOsType) {
30
- case "Windows_NT":
31
- osType = "pc-windows-msvc";
32
- break;
33
- case "Darwin":
34
- osType = "apple-darwin";
35
- break;
36
- case "Linux":
37
- osType = "unknown-linux-gnu";
38
- break;
39
- }
40
-
41
- let arch = "";
42
- switch (rawArchitecture) {
43
- case "x64":
44
- arch = "x86_64";
45
- break;
46
- case "arm64":
47
- arch = "aarch64";
48
- break;
49
- }
50
-
51
- if (rawOsType === "Linux") {
52
- if (libc.familySync() == "musl") {
53
- osType = "unknown-linux-musl-dynamic";
54
- } else if (libc.isNonGlibcLinuxSync()) {
55
- console.warn(
56
- "Your libc is neither glibc nor musl; trying static musl binary instead",
57
- );
58
- osType = "unknown-linux-musl-static";
59
- } else {
60
- let libcVersion = libc.versionSync();
61
- let splitLibcVersion = libcVersion.split(".");
62
- let libcMajorVersion = splitLibcVersion[0];
63
- let libcMinorVersion = splitLibcVersion[1];
64
- if (
65
- libcMajorVersion != builderGlibcMajorVersion ||
66
- libcMinorVersion < builderGlibcMInorVersion
67
- ) {
68
- // We can't run the glibc binaries, but we can run the static musl ones
69
- // if they exist
70
- console.warn(
71
- "Your glibc isn't compatible; trying static musl binary instead",
72
- );
73
- osType = "unknown-linux-musl-static";
74
- }
75
- }
76
- }
77
-
78
- // Assume the above succeeded and build a target triple to look things up with.
79
- // If any of it failed, this lookup will fail and we'll handle it like normal.
80
- let targetTriple = `${arch}-${osType}`;
81
- let platform = supportedPlatforms[targetTriple];
82
-
83
- if (!platform) {
84
- error(
85
- `Platform with type "${rawOsType}" and architecture "${rawArchitecture}" is not supported by ${name}.\nYour system must be one of the following:\n\n${Object.keys(
86
- supportedPlatforms,
87
- ).join(",")}`,
88
- );
89
- }
90
-
91
- return platform;
92
- };
93
-
94
- const getPackage = () => {
95
- const platform = getPlatform();
96
- const url = `${artifactDownloadUrl}/${platform.artifactName}`;
97
- let filename = platform.artifactName;
98
- let ext = platform.zipExt;
99
- let binary = new Package(platform, name, url, filename, ext, platform.bins);
100
-
101
- return binary;
102
- };
103
-
104
- const install = (suppressLogs) => {
105
- if (!artifactDownloadUrl || artifactDownloadUrl.length === 0) {
106
- console.warn("in demo mode, not installing binaries");
107
- return;
108
- }
109
- const package = getPackage();
110
- const proxy = configureProxy(package.url);
111
-
112
- return package.install(proxy, suppressLogs);
113
- };
114
-
115
- const run = (binaryName) => {
116
- const package = getPackage();
117
- const proxy = configureProxy(package.url);
118
-
119
- package.run(binaryName, proxy);
120
- };
121
-
122
- module.exports = {
123
- install,
124
- run,
125
- getPackage,
126
- };
package/install.js DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- const { install } = require("./binary");
4
- install(false);
@@ -1,519 +0,0 @@
1
- {
2
- "lockfileVersion": 3,
3
- "name": "codex-threadripper",
4
- "packages": {
5
- "": {
6
- "bin": {
7
- "codex-threadripper": "run-codex-threadripper.js"
8
- },
9
- "dependencies": {
10
- "axios": "^1.13.2",
11
- "axios-proxy-builder": "^0.1.2",
12
- "console.table": "^0.10.0",
13
- "detect-libc": "^2.1.2",
14
- "rimraf": "^6.1.2"
15
- },
16
- "devDependencies": {
17
- "prettier": "^3.7.4"
18
- },
19
- "engines": {
20
- "node": ">=14",
21
- "npm": ">=6"
22
- },
23
- "hasInstallScript": true,
24
- "license": "MIT",
25
- "name": "codex-threadripper",
26
- "version": "0.1.1"
27
- },
28
- "node_modules/@isaacs/balanced-match": {
29
- "engines": {
30
- "node": "20 || >=22"
31
- },
32
- "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
33
- "license": "MIT",
34
- "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
35
- "version": "4.0.1"
36
- },
37
- "node_modules/@isaacs/brace-expansion": {
38
- "dependencies": {
39
- "@isaacs/balanced-match": "^4.0.1"
40
- },
41
- "engines": {
42
- "node": "20 || >=22"
43
- },
44
- "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
45
- "license": "MIT",
46
- "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
47
- "version": "5.0.0"
48
- },
49
- "node_modules/asynckit": {
50
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
51
- "license": "MIT",
52
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
53
- "version": "0.4.0"
54
- },
55
- "node_modules/axios": {
56
- "dependencies": {
57
- "follow-redirects": "^1.15.6",
58
- "form-data": "^4.0.4",
59
- "proxy-from-env": "^1.1.0"
60
- },
61
- "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
62
- "license": "MIT",
63
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz",
64
- "version": "1.13.2"
65
- },
66
- "node_modules/axios-proxy-builder": {
67
- "dependencies": {
68
- "tunnel": "^0.0.6"
69
- },
70
- "integrity": "sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA==",
71
- "license": "MIT",
72
- "resolved": "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz",
73
- "version": "0.1.2"
74
- },
75
- "node_modules/call-bind-apply-helpers": {
76
- "dependencies": {
77
- "es-errors": "^1.3.0",
78
- "function-bind": "^1.1.2"
79
- },
80
- "engines": {
81
- "node": ">= 0.4"
82
- },
83
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
84
- "license": "MIT",
85
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
86
- "version": "1.0.2"
87
- },
88
- "node_modules/clone": {
89
- "engines": {
90
- "node": ">=0.8"
91
- },
92
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
93
- "license": "MIT",
94
- "optional": true,
95
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
96
- "version": "1.0.4"
97
- },
98
- "node_modules/combined-stream": {
99
- "dependencies": {
100
- "delayed-stream": "~1.0.0"
101
- },
102
- "engines": {
103
- "node": ">= 0.8"
104
- },
105
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
106
- "license": "MIT",
107
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
108
- "version": "1.0.8"
109
- },
110
- "node_modules/console.table": {
111
- "dependencies": {
112
- "easy-table": "1.1.0"
113
- },
114
- "engines": {
115
- "node": "> 0.10"
116
- },
117
- "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==",
118
- "license": "MIT",
119
- "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz",
120
- "version": "0.10.0"
121
- },
122
- "node_modules/defaults": {
123
- "dependencies": {
124
- "clone": "^1.0.2"
125
- },
126
- "funding": {
127
- "url": "https://github.com/sponsors/sindresorhus"
128
- },
129
- "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
130
- "license": "MIT",
131
- "optional": true,
132
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
133
- "version": "1.0.4"
134
- },
135
- "node_modules/delayed-stream": {
136
- "engines": {
137
- "node": ">=0.4.0"
138
- },
139
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
140
- "license": "MIT",
141
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
142
- "version": "1.0.0"
143
- },
144
- "node_modules/detect-libc": {
145
- "engines": {
146
- "node": ">=8"
147
- },
148
- "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
149
- "license": "Apache-2.0",
150
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
151
- "version": "2.1.2"
152
- },
153
- "node_modules/dunder-proto": {
154
- "dependencies": {
155
- "call-bind-apply-helpers": "^1.0.1",
156
- "es-errors": "^1.3.0",
157
- "gopd": "^1.2.0"
158
- },
159
- "engines": {
160
- "node": ">= 0.4"
161
- },
162
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
163
- "license": "MIT",
164
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
165
- "version": "1.0.1"
166
- },
167
- "node_modules/easy-table": {
168
- "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==",
169
- "license": "MIT",
170
- "optionalDependencies": {
171
- "wcwidth": ">=1.0.1"
172
- },
173
- "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
174
- "version": "1.1.0"
175
- },
176
- "node_modules/es-define-property": {
177
- "engines": {
178
- "node": ">= 0.4"
179
- },
180
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
181
- "license": "MIT",
182
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
183
- "version": "1.0.1"
184
- },
185
- "node_modules/es-errors": {
186
- "engines": {
187
- "node": ">= 0.4"
188
- },
189
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
190
- "license": "MIT",
191
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
192
- "version": "1.3.0"
193
- },
194
- "node_modules/es-object-atoms": {
195
- "dependencies": {
196
- "es-errors": "^1.3.0"
197
- },
198
- "engines": {
199
- "node": ">= 0.4"
200
- },
201
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
202
- "license": "MIT",
203
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
204
- "version": "1.1.1"
205
- },
206
- "node_modules/es-set-tostringtag": {
207
- "dependencies": {
208
- "es-errors": "^1.3.0",
209
- "get-intrinsic": "^1.2.6",
210
- "has-tostringtag": "^1.0.2",
211
- "hasown": "^2.0.2"
212
- },
213
- "engines": {
214
- "node": ">= 0.4"
215
- },
216
- "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
217
- "license": "MIT",
218
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
219
- "version": "2.1.0"
220
- },
221
- "node_modules/follow-redirects": {
222
- "engines": {
223
- "node": ">=4.0"
224
- },
225
- "funding": [
226
- {
227
- "type": "individual",
228
- "url": "https://github.com/sponsors/RubenVerborgh"
229
- }
230
- ],
231
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
232
- "license": "MIT",
233
- "peerDependenciesMeta": {
234
- "debug": {
235
- "optional": true
236
- }
237
- },
238
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
239
- "version": "1.15.6"
240
- },
241
- "node_modules/form-data": {
242
- "dependencies": {
243
- "asynckit": "^0.4.0",
244
- "combined-stream": "^1.0.8",
245
- "es-set-tostringtag": "^2.1.0",
246
- "hasown": "^2.0.2",
247
- "mime-types": "^2.1.12"
248
- },
249
- "engines": {
250
- "node": ">= 6"
251
- },
252
- "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
253
- "license": "MIT",
254
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
255
- "version": "4.0.4"
256
- },
257
- "node_modules/function-bind": {
258
- "funding": {
259
- "url": "https://github.com/sponsors/ljharb"
260
- },
261
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
262
- "license": "MIT",
263
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
264
- "version": "1.1.2"
265
- },
266
- "node_modules/get-intrinsic": {
267
- "dependencies": {
268
- "call-bind-apply-helpers": "^1.0.2",
269
- "es-define-property": "^1.0.1",
270
- "es-errors": "^1.3.0",
271
- "es-object-atoms": "^1.1.1",
272
- "function-bind": "^1.1.2",
273
- "get-proto": "^1.0.1",
274
- "gopd": "^1.2.0",
275
- "has-symbols": "^1.1.0",
276
- "hasown": "^2.0.2",
277
- "math-intrinsics": "^1.1.0"
278
- },
279
- "engines": {
280
- "node": ">= 0.4"
281
- },
282
- "funding": {
283
- "url": "https://github.com/sponsors/ljharb"
284
- },
285
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
286
- "license": "MIT",
287
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
288
- "version": "1.3.0"
289
- },
290
- "node_modules/get-proto": {
291
- "dependencies": {
292
- "dunder-proto": "^1.0.1",
293
- "es-object-atoms": "^1.0.0"
294
- },
295
- "engines": {
296
- "node": ">= 0.4"
297
- },
298
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
299
- "license": "MIT",
300
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
301
- "version": "1.0.1"
302
- },
303
- "node_modules/glob": {
304
- "dependencies": {
305
- "minimatch": "^10.1.1",
306
- "minipass": "^7.1.2",
307
- "path-scurry": "^2.0.0"
308
- },
309
- "engines": {
310
- "node": "20 || >=22"
311
- },
312
- "funding": {
313
- "url": "https://github.com/sponsors/isaacs"
314
- },
315
- "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
316
- "license": "BlueOak-1.0.0",
317
- "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
318
- "version": "13.0.0"
319
- },
320
- "node_modules/gopd": {
321
- "engines": {
322
- "node": ">= 0.4"
323
- },
324
- "funding": {
325
- "url": "https://github.com/sponsors/ljharb"
326
- },
327
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
328
- "license": "MIT",
329
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
330
- "version": "1.2.0"
331
- },
332
- "node_modules/has-symbols": {
333
- "engines": {
334
- "node": ">= 0.4"
335
- },
336
- "funding": {
337
- "url": "https://github.com/sponsors/ljharb"
338
- },
339
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
340
- "license": "MIT",
341
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
342
- "version": "1.1.0"
343
- },
344
- "node_modules/has-tostringtag": {
345
- "dependencies": {
346
- "has-symbols": "^1.0.3"
347
- },
348
- "engines": {
349
- "node": ">= 0.4"
350
- },
351
- "funding": {
352
- "url": "https://github.com/sponsors/ljharb"
353
- },
354
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
355
- "license": "MIT",
356
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
357
- "version": "1.0.2"
358
- },
359
- "node_modules/hasown": {
360
- "dependencies": {
361
- "function-bind": "^1.1.2"
362
- },
363
- "engines": {
364
- "node": ">= 0.4"
365
- },
366
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
367
- "license": "MIT",
368
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
369
- "version": "2.0.2"
370
- },
371
- "node_modules/lru-cache": {
372
- "engines": {
373
- "node": "20 || >=22"
374
- },
375
- "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
376
- "license": "BlueOak-1.0.0",
377
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
378
- "version": "11.2.4"
379
- },
380
- "node_modules/math-intrinsics": {
381
- "engines": {
382
- "node": ">= 0.4"
383
- },
384
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
385
- "license": "MIT",
386
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
387
- "version": "1.1.0"
388
- },
389
- "node_modules/mime-db": {
390
- "engines": {
391
- "node": ">= 0.6"
392
- },
393
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
394
- "license": "MIT",
395
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
396
- "version": "1.52.0"
397
- },
398
- "node_modules/mime-types": {
399
- "dependencies": {
400
- "mime-db": "1.52.0"
401
- },
402
- "engines": {
403
- "node": ">= 0.6"
404
- },
405
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
406
- "license": "MIT",
407
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
408
- "version": "2.1.35"
409
- },
410
- "node_modules/minimatch": {
411
- "dependencies": {
412
- "@isaacs/brace-expansion": "^5.0.0"
413
- },
414
- "engines": {
415
- "node": "20 || >=22"
416
- },
417
- "funding": {
418
- "url": "https://github.com/sponsors/isaacs"
419
- },
420
- "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
421
- "license": "BlueOak-1.0.0",
422
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
423
- "version": "10.1.1"
424
- },
425
- "node_modules/minipass": {
426
- "engines": {
427
- "node": ">=16 || 14 >=14.17"
428
- },
429
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
430
- "license": "ISC",
431
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
432
- "version": "7.1.2"
433
- },
434
- "node_modules/package-json-from-dist": {
435
- "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
436
- "license": "BlueOak-1.0.0",
437
- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
438
- "version": "1.0.1"
439
- },
440
- "node_modules/path-scurry": {
441
- "dependencies": {
442
- "lru-cache": "^11.0.0",
443
- "minipass": "^7.1.2"
444
- },
445
- "engines": {
446
- "node": "20 || >=22"
447
- },
448
- "funding": {
449
- "url": "https://github.com/sponsors/isaacs"
450
- },
451
- "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
452
- "license": "BlueOak-1.0.0",
453
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
454
- "version": "2.0.1"
455
- },
456
- "node_modules/prettier": {
457
- "bin": {
458
- "prettier": "bin/prettier.cjs"
459
- },
460
- "dev": true,
461
- "engines": {
462
- "node": ">=14"
463
- },
464
- "funding": {
465
- "url": "https://github.com/prettier/prettier?sponsor=1"
466
- },
467
- "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
468
- "license": "MIT",
469
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz",
470
- "version": "3.7.4"
471
- },
472
- "node_modules/proxy-from-env": {
473
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
474
- "license": "MIT",
475
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
476
- "version": "1.1.0"
477
- },
478
- "node_modules/rimraf": {
479
- "bin": {
480
- "rimraf": "dist/esm/bin.mjs"
481
- },
482
- "dependencies": {
483
- "glob": "^13.0.0",
484
- "package-json-from-dist": "^1.0.1"
485
- },
486
- "engines": {
487
- "node": "20 || >=22"
488
- },
489
- "funding": {
490
- "url": "https://github.com/sponsors/isaacs"
491
- },
492
- "integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==",
493
- "license": "BlueOak-1.0.0",
494
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz",
495
- "version": "6.1.2"
496
- },
497
- "node_modules/tunnel": {
498
- "engines": {
499
- "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
500
- },
501
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
502
- "license": "MIT",
503
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
504
- "version": "0.0.6"
505
- },
506
- "node_modules/wcwidth": {
507
- "dependencies": {
508
- "defaults": "^1.0.3"
509
- },
510
- "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
511
- "license": "MIT",
512
- "optional": true,
513
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
514
- "version": "1.0.1"
515
- }
516
- },
517
- "requires": true,
518
- "version": "0.1.1"
519
- }
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- const { run } = require("./binary");
4
- run("codex-threadripper");