@numa-tech/numa 1.12.4 → 1.12.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 +80 -37
- package/dist/chatgpt-desktop.d.ts +38 -0
- package/dist/chatgpt-desktop.js +356 -0
- package/dist/chatgpt-desktop.js.map +1 -0
- package/dist/codex-module.js +9 -0
- package/dist/codex-module.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -23,23 +23,18 @@
|
|
|
23
23
|
npm config set @numa-tech:registry=https://registry.npmjs.org/
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
公共 npm 和公司私有 registry 的 `candidate` tag,不改动 `latest`。已存在且 integrity/tag 一致的目标会被跳过;部分失败时使用
|
|
30
|
-
`npm run release:resume` 从持久化状态补推,不会再次修改版本或重新生成 tarball。
|
|
31
|
-
可用 `NUMA_PUBLIC_NPM_REGISTRY`、`NUMA_PRIVATE_NPM_REGISTRY` 覆盖两个发布目标。旧版配置
|
|
32
|
-
中作为默认值保存的私有 registry 会自动迁移到公共 npm;迁移后显式设置的私有地址会保留。
|
|
26
|
+
客户端仍可通过 `numa config --set registryUrl=<url>` 或 shortcut 的 `--registry-url <url>`
|
|
27
|
+
选择兼容的 npm 镜像或代理;这只影响安装与启动。Numa 的正式发布目标固定为
|
|
28
|
+
`https://registry.npmjs.org/`,发布脚本不再向任何私有 registry 上传包。
|
|
33
29
|
|
|
34
|
-
发布前需要在用户或 CI 的 `.npmrc`
|
|
30
|
+
发布前需要在用户或 CI 的 `.npmrc` 中配置公共 npm 令牌:
|
|
35
31
|
|
|
36
32
|
```ini
|
|
37
33
|
//registry.npmjs.org/:_authToken=${NPM_PUBLIC_TOKEN}
|
|
38
|
-
//packages.aliyun.com/60371955c4393f5ed3b7baa8/npm/npm-registry/:_authToken=${NPM_PRIVATE_TOKEN}
|
|
39
34
|
```
|
|
40
35
|
|
|
41
|
-
脚本会先检查 Git 工作区干净、当前分支与 upstream
|
|
42
|
-
|
|
36
|
+
脚本会先检查 Git 工作区干净、当前分支与 upstream 完全同步,再于修改版本号之前检查公共
|
|
37
|
+
npm 身份以及 `@tokensrc`、`@numa-tech` scope 权限。使用验证器 App 的
|
|
43
38
|
本地交互发布会在公共 npm 推送前隐藏输入 6 位 OTP,并显式传给 `npm publish`;
|
|
44
39
|
使用带 bypass 2FA 权限的 granular token 时直接回车即可。非交互环境可以临时提供
|
|
45
40
|
`NUMA_PUBLIC_NPM_OTP`,更推荐使用 bypass 2FA granular token 或 npm trusted publishing。
|
|
@@ -53,44 +48,67 @@ npm org ls numa-tech --registry=https://registry.npmjs.org/
|
|
|
53
48
|
npm org ls tokensrc --registry=https://registry.npmjs.org/
|
|
54
49
|
```
|
|
55
50
|
|
|
56
|
-
|
|
51
|
+
## 标准发布流程
|
|
52
|
+
|
|
53
|
+
所有 workspace 包必须锁步发布,并严格执行 `candidate → 验收 → latest`。禁止直接发布到
|
|
54
|
+
`latest`,也不要单独手工发布某一个 workspace 包。
|
|
57
55
|
|
|
58
56
|
```bash
|
|
59
|
-
#
|
|
57
|
+
# 1. 确认 main 与远端同步,并验证公共 npm 身份
|
|
58
|
+
git switch main
|
|
59
|
+
git pull --ff-only
|
|
60
|
+
npm whoami --registry=https://registry.npmjs.org/
|
|
61
|
+
|
|
62
|
+
# 2. 预览下一个 patch 版本;不修改文件、不访问 npm
|
|
60
63
|
npm run release -- patch --dry-run
|
|
61
64
|
|
|
62
|
-
#
|
|
65
|
+
# 3. 发布 candidate;脚本自动检查、构建、打包、发布、提交、打 tag 并原子推送
|
|
63
66
|
npm run release -- patch --tag=candidate
|
|
64
67
|
|
|
65
|
-
#
|
|
66
|
-
|
|
68
|
+
# 4. 使用 candidate 做安装与功能验收
|
|
69
|
+
npx -y --prefer-online --registry=https://registry.npmjs.org/ @numa-tech/numa@candidate --version
|
|
70
|
+
npx -y --prefer-online --registry=https://registry.npmjs.org/ @numa-tech/numa@candidate codex status --json
|
|
67
71
|
|
|
68
|
-
#
|
|
69
|
-
npm run release --
|
|
70
|
-
npm run release -- 2.0.0
|
|
72
|
+
# 5. 验收通过后,将 X.Y.Z 替换为本次 candidate 的实际版本并晋级 latest
|
|
73
|
+
npm run release:promote -- X.Y.Z --from-tag=candidate
|
|
71
74
|
|
|
72
|
-
#
|
|
73
|
-
npm
|
|
75
|
+
# 6. 确认三个公共包的 latest 均已更新
|
|
76
|
+
npm dist-tag ls @numa-tech/cli-auth --registry=https://registry.npmjs.org/
|
|
77
|
+
npm dist-tag ls @tokensrc/codex --registry=https://registry.npmjs.org/
|
|
78
|
+
npm dist-tag ls @numa-tech/numa --registry=https://registry.npmjs.org/
|
|
74
79
|
```
|
|
75
80
|
|
|
76
|
-
|
|
77
|
-
`chore(release): vX.Y.Z` commit、附注 tag,并以一次 atomic push 推送分支和 tag
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
候选发布只有在三个公共包的 exact-version integrity 和 `candidate` tag 都校验成功后,脚本才会
|
|
82
|
+
创建 `chore(release): vX.Y.Z` commit、附注 tag,并以一次 atomic push 推送分支和 tag。
|
|
83
|
+
如果发布中断,运行 `npm run release:resume`;它会复用持久化的原始 tarball 和 integrity,跳过
|
|
84
|
+
已经成功的包。不要重新执行普通 patch 发布,否则可能开始下一个版本。晋级命令会验证干净且
|
|
85
|
+
同步的 release commit/tag、公共 npm 上的候选版本与 tag,再使用权威 `npm dist-tag ls` 接口
|
|
86
|
+
幂等更新并校验 `latest`;它不修改源码或 Git 历史。
|
|
87
|
+
|
|
88
|
+
发布 minor、major 或指定版本时,仅替换第 2、3 步的版本参数:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npm run release -- minor --dry-run
|
|
92
|
+
npm run release -- minor --tag=candidate
|
|
93
|
+
npm run release -- 2.0.0 --dry-run
|
|
94
|
+
npm run release -- 2.0.0 --tag=candidate
|
|
95
|
+
```
|
|
81
96
|
|
|
82
97
|
macOS / Windows 日常启动 Codex 的推荐方式:
|
|
83
98
|
|
|
84
99
|
```bash
|
|
85
100
|
npx -y --prefer-online --registry=https://registry.npmjs.org/ @numa-tech/numa@latest codex shortcut install
|
|
101
|
+
numa --version
|
|
102
|
+
numa codex list
|
|
86
103
|
numa-codex
|
|
87
104
|
numa-codex-app
|
|
88
105
|
```
|
|
89
106
|
|
|
90
107
|
面向业务同事的图文说明见 [`docs/chatgpt-cli-guide.html`](docs/chatgpt-cli-guide.html),其中分别介绍
|
|
91
|
-
CLI
|
|
108
|
+
CLI 与桌面版的适用场景、一次安装自动更新的 `numa` 命令与两个 Codex 入口、首次登录和常见问题排查。
|
|
92
109
|
|
|
93
|
-
|
|
110
|
+
上述安装器生成的 `numa` 是托管 launcher,完整管理命令也会自动解析 `@latest`。需要在 CI、离线环境
|
|
111
|
+
或其他可复现流程中固定版本时,才建议使用全局或精确版本安装:
|
|
94
112
|
|
|
95
113
|
```bash
|
|
96
114
|
npm install --global --registry=https://registry.npmjs.org/ @numa-tech/numa
|
|
@@ -184,7 +202,7 @@ numa config \
|
|
|
184
202
|
| `numa codex run` | 需登录 | 使用所选账号启动官方 Codex CLI |
|
|
185
203
|
| `numa codex app` | 需登录 | 使用官方 ChatGPT 登录启动桌面 App |
|
|
186
204
|
| `numa codex shortcut` | 公开 | 安装或删除 macOS/Windows 快捷命令与桌面入口 |
|
|
187
|
-
| `numa codex status` | 公开 |
|
|
205
|
+
| `numa codex status` | 公开 | 查看本地选择、官方登录状态和 ChatGPT Desktop 版本 |
|
|
188
206
|
| `numa codex reset` | 公开 | 重置本地选择和登录并清理旧 provider 残留 |
|
|
189
207
|
| `numa serve` | 公开 | 启动兼容 MCP 服务 |
|
|
190
208
|
|
|
@@ -509,12 +527,15 @@ ChatGPT 个人账号;无需把本地登录文件或令牌附在工单中。
|
|
|
509
527
|
### macOS / Windows 快捷入口
|
|
510
528
|
|
|
511
529
|
日常使用优先安装快捷入口,无需全局安装 `@numa-tech/numa`。安装命令显式解析
|
|
512
|
-
`@numa-tech/numa@latest
|
|
530
|
+
`@numa-tech/numa@latest`,生成的通用 `numa` launcher 与 Codex 快捷入口也会在每次启动时使用 `--prefer-online`
|
|
513
531
|
检查 npm 仓库中的最新客户端版本:
|
|
514
532
|
|
|
515
533
|
```bash
|
|
516
534
|
npx -y --prefer-online --registry=https://registry.npmjs.org/ @numa-tech/numa@latest codex shortcut install
|
|
517
535
|
|
|
536
|
+
# 完整 Numa 管理命令同样自动使用 latest
|
|
537
|
+
numa codex list
|
|
538
|
+
|
|
518
539
|
# 日常首选;首次运行会自动完成公司登录和账号选择
|
|
519
540
|
numa-codex
|
|
520
541
|
|
|
@@ -528,12 +549,14 @@ numa-codex-app
|
|
|
528
549
|
`--prefer-online` 会在启动时强制检查仓库元数据,`@latest` 避免复用项目内可能存在的旧版
|
|
529
550
|
`@numa-tech/numa`;已经缓存的相同版本仍由 npm 复用。自动更新要求配置的 npm registry 可访问,
|
|
530
551
|
并以仓库 `latest` dist-tag 指向的版本为准。已安装旧版快捷入口的用户重新执行一次上述安装
|
|
531
|
-
|
|
552
|
+
命令,即可升级为自动检查最新版的包装脚本。若 `numa` 是指向同一 `@numa-tech/numa` 包的旧 npm
|
|
553
|
+
symlink,安装器会先核验包名与 `bin` 入口,再将其迁移为托管 launcher;卸载快捷入口时会在原包仍
|
|
554
|
+
存在的前提下恢复该 symlink。快捷入口默认从公共 npm 获取 Numa CLI;
|
|
532
555
|
启动 Codex 时仍按 `NUMA_CODEX_BIN`、PATH 中可用版本、包内版本的顺序选择。
|
|
533
556
|
|
|
534
|
-
|
|
557
|
+
默认安装通用 `numa` launcher,以及 `run` 和 `app` 两种 Codex 入口。macOS 默认的 `--scope auto` 会先使用可写的
|
|
535
558
|
`/usr/local/bin` 与 `/Applications`;没有系统级权限时自动降级到
|
|
536
|
-
`~/.local/bin/numa-codex*` 与 `~/Applications/Numa Codex.app`,全程不会
|
|
559
|
+
`~/.local/bin/numa`、`~/.local/bin/numa-codex*` 与 `~/Applications/Numa Codex.app`,全程不会
|
|
537
560
|
调用 `sudo`。可用 `--scope system` 或 `--scope user` 显式指定。Windows 写入用户 npm 命令目录,并在开始菜单
|
|
538
561
|
创建 `Numa Codex`。macOS App Bundle 使用 ChatGPT macOS 应用内置图标,Windows 开始菜单
|
|
539
562
|
入口使用由同一图标转换的 Windows 图标;来源和商标说明见 `THIRD_PARTY_NOTICES.md`。桌面入口默认绑定安装命令
|
|
@@ -546,7 +569,8 @@ npx -y --prefer-online --registry=https://registry.npmjs.org/ @numa-tech/numa@la
|
|
|
546
569
|
```
|
|
547
570
|
|
|
548
571
|
安装是幂等的,并拒绝覆盖同名的用户文件;确需替换时使用 `--force`。删除只处理安装清单中
|
|
549
|
-
由 numa
|
|
572
|
+
由 numa 管理的入口。明确要保留现有全局 `numa` 时,可在安装或删除命令中使用
|
|
573
|
+
`--no-cli-wrapper`:
|
|
550
574
|
|
|
551
575
|
```bash
|
|
552
576
|
npx -y --prefer-online --registry=https://registry.npmjs.org/ @numa-tech/numa@latest codex shortcut remove
|
|
@@ -580,6 +604,10 @@ Codex 的主机不会受包内平台可选依赖缺失影响;外部版本不
|
|
|
580
604
|
|
|
581
605
|
### Codex 桌面 App
|
|
582
606
|
|
|
607
|
+
> **版本提醒:请勿主动升级 ChatGPT Desktop,也不要点击“检查更新”。** 如果应用弹出更新提示,
|
|
608
|
+
> 请选择“稍后”或“取消”,并继续通过 `Numa Codex`、`numa-codex-app` 或 `numa codex app`
|
|
609
|
+
> 启动,由 Numa 检查并使用公司批准版本。
|
|
610
|
+
|
|
583
611
|
官方 Codex CLI、IDE 扩展和桌面 App 共享 `~/.codex/auth.json`。macOS/Windows 可直接运行:
|
|
584
612
|
|
|
585
613
|
```bash
|
|
@@ -593,9 +621,24 @@ numa codex app . \
|
|
|
593
621
|
2. 从服务端领取不含 refresh token 的官方登录凭据;
|
|
594
622
|
3. 原子更新 ChatGPT 模式 `auth.json`;
|
|
595
623
|
4. 清理项目更名前旧版 `mcex-codex` provider 残留;
|
|
596
|
-
5.
|
|
597
|
-
|
|
598
|
-
|
|
624
|
+
5. Apple Silicon macOS 读取 `ChatGPT.app/Contents/Info.plist`;检测到 2026 年 8 月批次
|
|
625
|
+
(`26.8` / `26.8xx`)或更高版本时,自动回退到批准版本 `26.730.61639 (6234)`;
|
|
626
|
+
6. 直接启动官方 `codex app`。
|
|
627
|
+
|
|
628
|
+
回退包固定从
|
|
629
|
+
`https://mci-maint.oss-cn-shenzhen.aliyuncs.com/apps/chatgpt-26-730-61639.zip`
|
|
630
|
+
下载并缓存到用户缓存目录。客户端会先核验大小、固定 SHA-256、Bundle ID、目标版本以及
|
|
631
|
+
OpenAI Developer ID 签名,再停止正在运行的 ChatGPT,以同卷临时目录完成原子替换。下载、
|
|
632
|
+
解压或安装后校验失败时保留或恢复原 App;目标版本及更早的 2026 年 7 月批次不会下载或改动。
|
|
633
|
+
批准包 SHA-256 为
|
|
634
|
+
`da88c8a15eab1ddc8efdf50182d4aca7468d995193d952c344a4d10d38c45871`。
|
|
635
|
+
`NUMA_CHATGPT_APP_PATH` 可显式指定受管 App 路径。
|
|
636
|
+
该守卫不会修改 ChatGPT 自带更新策略,而是在每次通过 Numa 启动桌面版时重新检查;需要长期
|
|
637
|
+
禁止应用内更新时,应由组织管理员通过 ChatGPT Managed configuration/MDM 下发更新策略。
|
|
638
|
+
|
|
639
|
+
如果桌面 App 已经运行,需要完全退出后重新打开。`numa codex status` 可同时检查所选账号、
|
|
640
|
+
官方登录文件和本机 ChatGPT Desktop 版本。该回退属于企业批准版本部署;旧版本不获得单独的
|
|
641
|
+
安全补丁,发布负责人应持续评估兼容性并及时更新批准版本。
|
|
599
642
|
|
|
600
643
|
### 前台官方登录同步
|
|
601
644
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { CodexDesktopAppStatus } from "@tokensrc/codex";
|
|
2
|
+
export declare const MANAGED_CHATGPT_VERSION = "26.730.61639";
|
|
3
|
+
export declare const MANAGED_CHATGPT_BUILD = "6234";
|
|
4
|
+
export declare const CHATGPT_ROLLBACK_THRESHOLD = "26.8";
|
|
5
|
+
export declare const CHATGPT_DESKTOP_UPDATE_REMINDER = "\u3010\u7248\u672C\u63D0\u9192\u3011\u8BF7\u52FF\u4E3B\u52A8\u5347\u7EA7 ChatGPT Desktop\uFF0C\u4E5F\u4E0D\u8981\u70B9\u51FB\u201C\u68C0\u67E5\u66F4\u65B0\u201D\uFF1B\u5982\u51FA\u73B0\u66F4\u65B0\u63D0\u793A\uFF0C\u8BF7\u9009\u62E9\u201C\u7A0D\u540E\u201D\u6216\u201C\u53D6\u6D88\u201D\uFF0C\u5E76\u7EE7\u7EED\u901A\u8FC7 Numa \u542F\u52A8\u3002";
|
|
6
|
+
export declare const MANAGED_CHATGPT_DOWNLOAD_URL = "https://mci-maint.oss-cn-shenzhen.aliyuncs.com/apps/chatgpt-26-730-61639.zip";
|
|
7
|
+
export declare const MANAGED_CHATGPT_ARCHIVE_BYTES = 568041035;
|
|
8
|
+
export declare const MANAGED_CHATGPT_ARCHIVE_SHA256 = "da88c8a15eab1ddc8efdf50182d4aca7468d995193d952c344a4d10d38c45871";
|
|
9
|
+
interface BundleMetadata {
|
|
10
|
+
bundleId: string;
|
|
11
|
+
version: string;
|
|
12
|
+
build: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ChatGptDesktopDependencies {
|
|
15
|
+
platform?: NodeJS.Platform;
|
|
16
|
+
architecture?: string;
|
|
17
|
+
homeDirectory?: string;
|
|
18
|
+
env?: NodeJS.ProcessEnv;
|
|
19
|
+
appPaths?: string[];
|
|
20
|
+
cacheDirectory?: string;
|
|
21
|
+
fetch?: typeof fetch;
|
|
22
|
+
output?: NodeJS.WritableStream;
|
|
23
|
+
readMetadata?: (appPath: string) => Promise<BundleMetadata>;
|
|
24
|
+
obtainArchive?: () => Promise<string>;
|
|
25
|
+
extractArchive?: (archivePath: string, destination: string) => Promise<string>;
|
|
26
|
+
verifySignature?: (appPath: string) => Promise<void>;
|
|
27
|
+
stopApp?: () => Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
export interface ChatGptDesktopPreparation {
|
|
30
|
+
action: "not-supported" | "not-installed" | "not-required" | "reinstalled";
|
|
31
|
+
before: CodexDesktopAppStatus;
|
|
32
|
+
after?: CodexDesktopAppStatus;
|
|
33
|
+
}
|
|
34
|
+
/** ChatGPT release versions use YY.MDD.build; `26.8` means the start of August 2026. */
|
|
35
|
+
export declare function requiresChatGptRollback(version: string): boolean;
|
|
36
|
+
export declare function inspectChatGptDesktop(dependencies?: ChatGptDesktopDependencies): Promise<CodexDesktopAppStatus>;
|
|
37
|
+
export declare function ensureManagedChatGptDesktop(dependencies?: ChatGptDesktopDependencies): Promise<ChatGptDesktopPreparation>;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { execFile as execFileCallback } from "node:child_process";
|
|
2
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
3
|
+
import { createReadStream, constants } from "node:fs";
|
|
4
|
+
import { access, lstat, mkdir, mkdtemp, open, rename, rm } from "node:fs/promises";
|
|
5
|
+
import { homedir } from "node:os";
|
|
6
|
+
import { dirname, join, resolve } from "node:path";
|
|
7
|
+
import { promisify } from "node:util";
|
|
8
|
+
export const MANAGED_CHATGPT_VERSION = "26.730.61639";
|
|
9
|
+
export const MANAGED_CHATGPT_BUILD = "6234";
|
|
10
|
+
export const CHATGPT_ROLLBACK_THRESHOLD = "26.8";
|
|
11
|
+
export const CHATGPT_DESKTOP_UPDATE_REMINDER = "【版本提醒】请勿主动升级 ChatGPT Desktop,也不要点击“检查更新”;如出现更新提示,请选择“稍后”或“取消”,并继续通过 Numa 启动。";
|
|
12
|
+
export const MANAGED_CHATGPT_DOWNLOAD_URL = "https://mci-maint.oss-cn-shenzhen.aliyuncs.com/apps/chatgpt-26-730-61639.zip";
|
|
13
|
+
export const MANAGED_CHATGPT_ARCHIVE_BYTES = 568_041_035;
|
|
14
|
+
export const MANAGED_CHATGPT_ARCHIVE_SHA256 = "da88c8a15eab1ddc8efdf50182d4aca7468d995193d952c344a4d10d38c45871";
|
|
15
|
+
const CHATGPT_BUNDLE_ID = "com.openai.codex";
|
|
16
|
+
const OPENAI_TEAM_ID = "2DC432GLL2";
|
|
17
|
+
const MAX_DOWNLOAD_BYTES = 650 * 1024 * 1024;
|
|
18
|
+
const execFile = promisify(execFileCallback);
|
|
19
|
+
function appCandidates(dependencies) {
|
|
20
|
+
if (dependencies.appPaths)
|
|
21
|
+
return dependencies.appPaths;
|
|
22
|
+
const env = dependencies.env ?? process.env;
|
|
23
|
+
const home = dependencies.homeDirectory ?? homedir();
|
|
24
|
+
if (env.NUMA_CHATGPT_APP_PATH?.trim()) {
|
|
25
|
+
return [resolve(env.NUMA_CHATGPT_APP_PATH.trim())];
|
|
26
|
+
}
|
|
27
|
+
return [
|
|
28
|
+
join(home, "Applications", "ChatGPT.app"),
|
|
29
|
+
"/Applications/ChatGPT.app"
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
async function runCommand(command, args) {
|
|
33
|
+
const result = await execFile(command, args, {
|
|
34
|
+
encoding: "utf8",
|
|
35
|
+
maxBuffer: 4 * 1024 * 1024,
|
|
36
|
+
windowsHide: true
|
|
37
|
+
});
|
|
38
|
+
return {
|
|
39
|
+
stdout: result.stdout,
|
|
40
|
+
stderr: result.stderr
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async function plistValue(appPath, key) {
|
|
44
|
+
const { stdout } = await runCommand("/usr/bin/plutil", [
|
|
45
|
+
"-extract",
|
|
46
|
+
key,
|
|
47
|
+
"raw",
|
|
48
|
+
"-o",
|
|
49
|
+
"-",
|
|
50
|
+
join(appPath, "Contents", "Info.plist")
|
|
51
|
+
]);
|
|
52
|
+
return stdout.trim();
|
|
53
|
+
}
|
|
54
|
+
async function defaultReadMetadata(appPath) {
|
|
55
|
+
const [bundleId, version, build] = await Promise.all([
|
|
56
|
+
plistValue(appPath, "CFBundleIdentifier"),
|
|
57
|
+
plistValue(appPath, "CFBundleShortVersionString"),
|
|
58
|
+
plistValue(appPath, "CFBundleVersion")
|
|
59
|
+
]);
|
|
60
|
+
return { bundleId, version, build };
|
|
61
|
+
}
|
|
62
|
+
function numericVersionParts(version) {
|
|
63
|
+
const parts = version.trim().split(".");
|
|
64
|
+
return parts.length >= 2 && parts.every((part) => /^\d+$/u.test(part))
|
|
65
|
+
? parts
|
|
66
|
+
: undefined;
|
|
67
|
+
}
|
|
68
|
+
/** ChatGPT release versions use YY.MDD.build; `26.8` means the start of August 2026. */
|
|
69
|
+
export function requiresChatGptRollback(version) {
|
|
70
|
+
const parts = numericVersionParts(version);
|
|
71
|
+
const threshold = numericVersionParts(CHATGPT_ROLLBACK_THRESHOLD);
|
|
72
|
+
if (!parts || !threshold)
|
|
73
|
+
return false;
|
|
74
|
+
const year = Number(parts[0]);
|
|
75
|
+
const thresholdYear = Number(threshold[0]);
|
|
76
|
+
if (year !== thresholdYear)
|
|
77
|
+
return year > thresholdYear;
|
|
78
|
+
const releaseText = parts[1];
|
|
79
|
+
const thresholdReleaseText = threshold[1];
|
|
80
|
+
const release = Number(releaseText.padEnd(3, "0"));
|
|
81
|
+
const thresholdRelease = Number(thresholdReleaseText.padEnd(3, "0"));
|
|
82
|
+
return release >= thresholdRelease;
|
|
83
|
+
}
|
|
84
|
+
async function installedAppPath(paths) {
|
|
85
|
+
for (const path of paths) {
|
|
86
|
+
try {
|
|
87
|
+
const value = await lstat(path);
|
|
88
|
+
if (value.isSymbolicLink()) {
|
|
89
|
+
throw new Error(`拒绝管理符号链接形式的 ChatGPT App:${path}`);
|
|
90
|
+
}
|
|
91
|
+
if (value.isDirectory())
|
|
92
|
+
return path;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (error.code !== "ENOENT")
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
export async function inspectChatGptDesktop(dependencies = {}) {
|
|
102
|
+
const platform = dependencies.platform ?? process.platform;
|
|
103
|
+
const architecture = dependencies.architecture ?? process.arch;
|
|
104
|
+
if (platform !== "darwin" || architecture !== "arm64") {
|
|
105
|
+
return {
|
|
106
|
+
platform,
|
|
107
|
+
architecture,
|
|
108
|
+
supported: false,
|
|
109
|
+
installed: false,
|
|
110
|
+
targetVersion: MANAGED_CHATGPT_VERSION,
|
|
111
|
+
remediationRequired: false
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const candidates = appCandidates(dependencies);
|
|
115
|
+
const path = await installedAppPath(candidates);
|
|
116
|
+
if (!path) {
|
|
117
|
+
return {
|
|
118
|
+
platform,
|
|
119
|
+
architecture,
|
|
120
|
+
supported: true,
|
|
121
|
+
installed: false,
|
|
122
|
+
path: candidates[0],
|
|
123
|
+
targetVersion: MANAGED_CHATGPT_VERSION,
|
|
124
|
+
remediationRequired: false
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
const metadata = await (dependencies.readMetadata ?? defaultReadMetadata)(path);
|
|
128
|
+
return {
|
|
129
|
+
platform,
|
|
130
|
+
architecture,
|
|
131
|
+
supported: true,
|
|
132
|
+
installed: true,
|
|
133
|
+
path,
|
|
134
|
+
bundleId: metadata.bundleId,
|
|
135
|
+
version: metadata.version,
|
|
136
|
+
build: metadata.build,
|
|
137
|
+
targetVersion: MANAGED_CHATGPT_VERSION,
|
|
138
|
+
remediationRequired: metadata.bundleId === CHATGPT_BUNDLE_ID
|
|
139
|
+
&& requiresChatGptRollback(metadata.version)
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
async function hashFile(path) {
|
|
143
|
+
const digest = createHash("sha256");
|
|
144
|
+
let bytes = 0;
|
|
145
|
+
for await (const chunk of createReadStream(path)) {
|
|
146
|
+
const value = chunk;
|
|
147
|
+
bytes += value.byteLength;
|
|
148
|
+
digest.update(value);
|
|
149
|
+
}
|
|
150
|
+
return { bytes, sha256: digest.digest("hex") };
|
|
151
|
+
}
|
|
152
|
+
async function archiveIsValid(path) {
|
|
153
|
+
try {
|
|
154
|
+
const result = await hashFile(path);
|
|
155
|
+
return result.bytes === MANAGED_CHATGPT_ARCHIVE_BYTES
|
|
156
|
+
&& result.sha256 === MANAGED_CHATGPT_ARCHIVE_SHA256;
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async function writeAll(file, value) {
|
|
163
|
+
let offset = 0;
|
|
164
|
+
while (offset < value.byteLength) {
|
|
165
|
+
const result = await file.write(value, offset, value.byteLength - offset);
|
|
166
|
+
if (result.bytesWritten <= 0)
|
|
167
|
+
throw new Error("无法继续写入 ChatGPT 安装包。");
|
|
168
|
+
offset += result.bytesWritten;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async function downloadManagedArchive(dependencies) {
|
|
172
|
+
const env = dependencies.env ?? process.env;
|
|
173
|
+
const home = dependencies.homeDirectory ?? homedir();
|
|
174
|
+
const cacheDirectory = dependencies.cacheDirectory
|
|
175
|
+
?? join(env.XDG_CACHE_HOME?.trim() || join(home, "Library", "Caches"), "numa", "apps");
|
|
176
|
+
const archivePath = join(cacheDirectory, `chatgpt-${MANAGED_CHATGPT_VERSION}.zip`);
|
|
177
|
+
await mkdir(cacheDirectory, { recursive: true });
|
|
178
|
+
if (await archiveIsValid(archivePath))
|
|
179
|
+
return archivePath;
|
|
180
|
+
await rm(archivePath, { force: true });
|
|
181
|
+
const temporary = `${archivePath}.${process.pid}.${randomUUID()}.tmp`;
|
|
182
|
+
const fetchImpl = dependencies.fetch ?? fetch;
|
|
183
|
+
const response = await fetchImpl(MANAGED_CHATGPT_DOWNLOAD_URL, {
|
|
184
|
+
redirect: "follow",
|
|
185
|
+
signal: AbortSignal.timeout(15 * 60 * 1_000)
|
|
186
|
+
});
|
|
187
|
+
if (!response.ok || !response.body) {
|
|
188
|
+
throw new Error(`下载 ChatGPT 安装包失败:HTTP ${response.status}`);
|
|
189
|
+
}
|
|
190
|
+
const declaredLengthHeader = response.headers.get("content-length");
|
|
191
|
+
if (declaredLengthHeader !== null) {
|
|
192
|
+
const declaredLength = Number(declaredLengthHeader);
|
|
193
|
+
if (!Number.isFinite(declaredLength) || declaredLength !== MANAGED_CHATGPT_ARCHIVE_BYTES) {
|
|
194
|
+
throw new Error(`ChatGPT 安装包大小异常:${declaredLengthHeader}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
const digest = createHash("sha256");
|
|
198
|
+
const file = await open(temporary, "wx", 0o600);
|
|
199
|
+
let bytes = 0;
|
|
200
|
+
try {
|
|
201
|
+
const reader = response.body.getReader();
|
|
202
|
+
while (true) {
|
|
203
|
+
const item = await reader.read();
|
|
204
|
+
if (item.done)
|
|
205
|
+
break;
|
|
206
|
+
bytes += item.value.byteLength;
|
|
207
|
+
if (bytes > MAX_DOWNLOAD_BYTES)
|
|
208
|
+
throw new Error("ChatGPT 安装包超过允许的最大大小。");
|
|
209
|
+
digest.update(item.value);
|
|
210
|
+
await writeAll(file, item.value);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
await rm(temporary, { force: true });
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
217
|
+
finally {
|
|
218
|
+
await file.close();
|
|
219
|
+
}
|
|
220
|
+
const sha256 = digest.digest("hex");
|
|
221
|
+
if (bytes !== MANAGED_CHATGPT_ARCHIVE_BYTES || sha256 !== MANAGED_CHATGPT_ARCHIVE_SHA256) {
|
|
222
|
+
await rm(temporary, { force: true });
|
|
223
|
+
throw new Error(`ChatGPT 安装包完整性校验失败(bytes=${bytes}, sha256=${sha256})。`);
|
|
224
|
+
}
|
|
225
|
+
await rename(temporary, archivePath);
|
|
226
|
+
return archivePath;
|
|
227
|
+
}
|
|
228
|
+
async function defaultExtractArchive(archivePath, destination) {
|
|
229
|
+
await runCommand("/usr/bin/ditto", ["-x", "-k", archivePath, destination]);
|
|
230
|
+
const appPath = join(destination, "ChatGPT.app");
|
|
231
|
+
await access(appPath, constants.R_OK);
|
|
232
|
+
return appPath;
|
|
233
|
+
}
|
|
234
|
+
async function defaultVerifySignature(appPath) {
|
|
235
|
+
await runCommand("/usr/bin/codesign", ["--verify", "--deep", "--strict", appPath]);
|
|
236
|
+
const detail = await runCommand("/usr/bin/codesign", ["-dv", "--verbose=4", appPath]);
|
|
237
|
+
const text = `${detail.stdout}\n${detail.stderr}`;
|
|
238
|
+
if (!text.includes(`Identifier=${CHATGPT_BUNDLE_ID}`)
|
|
239
|
+
|| !text.includes(`TeamIdentifier=${OPENAI_TEAM_ID}`)) {
|
|
240
|
+
throw new Error("ChatGPT App 签名身份不符合预期。");
|
|
241
|
+
}
|
|
242
|
+
const architecture = await runCommand("/usr/bin/lipo", [
|
|
243
|
+
"-archs",
|
|
244
|
+
join(appPath, "Contents", "MacOS", "ChatGPT")
|
|
245
|
+
]);
|
|
246
|
+
if (!architecture.stdout.trim().split(/\s+/u).includes("arm64")) {
|
|
247
|
+
throw new Error("ChatGPT App 安装包不包含 arm64 可执行文件。");
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
async function processRunning(name) {
|
|
251
|
+
try {
|
|
252
|
+
await runCommand("/usr/bin/pgrep", ["-x", name]);
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
async function delay(milliseconds) {
|
|
260
|
+
await new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
261
|
+
}
|
|
262
|
+
async function defaultStopApp() {
|
|
263
|
+
if (!(await processRunning("ChatGPT")))
|
|
264
|
+
return;
|
|
265
|
+
try {
|
|
266
|
+
await runCommand("/usr/bin/pkill", ["-TERM", "-x", "ChatGPT"]);
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
if (await processRunning("ChatGPT"))
|
|
270
|
+
throw error;
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
for (let attempt = 0; attempt < 25; attempt += 1) {
|
|
274
|
+
if (!(await processRunning("ChatGPT")))
|
|
275
|
+
return;
|
|
276
|
+
await delay(200);
|
|
277
|
+
}
|
|
278
|
+
try {
|
|
279
|
+
await runCommand("/usr/bin/pkill", ["-KILL", "-x", "ChatGPT"]);
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
if (await processRunning("ChatGPT"))
|
|
283
|
+
throw error;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
async function validateManagedApp(appPath, dependencies) {
|
|
287
|
+
const metadata = await (dependencies.readMetadata ?? defaultReadMetadata)(appPath);
|
|
288
|
+
if (metadata.bundleId !== CHATGPT_BUNDLE_ID
|
|
289
|
+
|| metadata.version !== MANAGED_CHATGPT_VERSION
|
|
290
|
+
|| metadata.build !== MANAGED_CHATGPT_BUILD) {
|
|
291
|
+
throw new Error(`ChatGPT 安装包版本不符合预期:${metadata.bundleId} ${metadata.version} (${metadata.build})。`);
|
|
292
|
+
}
|
|
293
|
+
await (dependencies.verifySignature ?? defaultVerifySignature)(appPath);
|
|
294
|
+
return metadata;
|
|
295
|
+
}
|
|
296
|
+
export async function ensureManagedChatGptDesktop(dependencies = {}) {
|
|
297
|
+
const before = await inspectChatGptDesktop(dependencies);
|
|
298
|
+
if (!before.supported)
|
|
299
|
+
return { action: "not-supported", before };
|
|
300
|
+
if (!before.installed)
|
|
301
|
+
return { action: "not-installed", before };
|
|
302
|
+
if (!before.remediationRequired)
|
|
303
|
+
return { action: "not-required", before };
|
|
304
|
+
if (!before.path || before.bundleId !== CHATGPT_BUNDLE_ID) {
|
|
305
|
+
throw new Error("拒绝替换无法确认身份的 ChatGPT App。");
|
|
306
|
+
}
|
|
307
|
+
const output = dependencies.output ?? process.stderr;
|
|
308
|
+
output.write(`检测到 ChatGPT ${before.version},正在安装批准版本 ${MANAGED_CHATGPT_VERSION}…\n`);
|
|
309
|
+
await access(dirname(before.path), constants.W_OK);
|
|
310
|
+
const archivePath = await (dependencies.obtainArchive
|
|
311
|
+
? dependencies.obtainArchive()
|
|
312
|
+
: downloadManagedArchive(dependencies));
|
|
313
|
+
const stagingDirectory = await mkdtemp(join(dirname(before.path), ".numa-chatgpt-install-"));
|
|
314
|
+
const backupPath = join(dirname(before.path), `.ChatGPT.app.numa-backup-${process.pid}-${Date.now()}`);
|
|
315
|
+
let backupCreated = false;
|
|
316
|
+
try {
|
|
317
|
+
const stagedApp = await (dependencies.extractArchive ?? defaultExtractArchive)(archivePath, stagingDirectory);
|
|
318
|
+
await validateManagedApp(stagedApp, dependencies);
|
|
319
|
+
await (dependencies.stopApp ?? defaultStopApp)();
|
|
320
|
+
await rename(before.path, backupPath);
|
|
321
|
+
backupCreated = true;
|
|
322
|
+
try {
|
|
323
|
+
await rename(stagedApp, before.path);
|
|
324
|
+
await validateManagedApp(before.path, dependencies);
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
await rm(before.path, { recursive: true, force: true });
|
|
328
|
+
await rename(backupPath, before.path);
|
|
329
|
+
backupCreated = false;
|
|
330
|
+
throw error;
|
|
331
|
+
}
|
|
332
|
+
try {
|
|
333
|
+
await rm(backupPath, { recursive: true, force: true });
|
|
334
|
+
backupCreated = false;
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
output.write(`警告:旧版 ChatGPT 备份清理失败:${error.message}\n`);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
finally {
|
|
341
|
+
await rm(stagingDirectory, { recursive: true, force: true });
|
|
342
|
+
if (backupCreated) {
|
|
343
|
+
try {
|
|
344
|
+
await access(before.path);
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
await rename(backupPath, before.path);
|
|
348
|
+
backupCreated = false;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
const after = await inspectChatGptDesktop(dependencies);
|
|
353
|
+
output.write(`ChatGPT 已切换到 ${after.version} (${after.build})。\n`);
|
|
354
|
+
return { action: "reinstalled", before, after };
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=chatgpt-desktop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatgpt-desktop.js","sourceRoot":"","sources":["../src/chatgpt-desktop.ts"],"names":[],"mappings":"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"}
|
package/dist/codex-module.js
CHANGED
|
@@ -5,6 +5,7 @@ import { DEFAULT_CODEX_SERVER_URL } from "@tokensrc/codex/config";
|
|
|
5
5
|
import { appConfigDirectory, loadAppConfig } from "./app-config.js";
|
|
6
6
|
import { CLI_NAME, CODEX_APP_NAME, CODEX_SHORTCUT_NAME, PACKAGE_NAME } from "./branding.js";
|
|
7
7
|
import { loadConfig } from "./config.js";
|
|
8
|
+
import { CHATGPT_DESKTOP_UPDATE_REMINDER, ensureManagedChatGptDesktop, inspectChatGptDesktop } from "./chatgpt-desktop.js";
|
|
8
9
|
import { currentPlatformProfile, ModuleUnavailableError, requireProfileService } from "./platform-profile.js";
|
|
9
10
|
import { blockingBrowserLogin, ensureAccessToken, LoginRequiredError } from "./oauth.js";
|
|
10
11
|
export const NUMA_CODEX_COMMAND_DIRECTORY = createCodexCommandDirectory({
|
|
@@ -98,6 +99,7 @@ export async function createNumaCodexModule() {
|
|
|
98
99
|
appName: CODEX_APP_NAME
|
|
99
100
|
},
|
|
100
101
|
launcher: {
|
|
102
|
+
cliCommandName: CLI_NAME,
|
|
101
103
|
runCommandName: CODEX_SHORTCUT_NAME,
|
|
102
104
|
appCommandName: `${CODEX_SHORTCUT_NAME}-app`,
|
|
103
105
|
launchMode: "direct",
|
|
@@ -109,6 +111,13 @@ export async function createNumaCodexModule() {
|
|
|
109
111
|
manifestFileName: ".numa-codex-shortcuts.json",
|
|
110
112
|
bundleId: "tech.numa.codex-shortcut"
|
|
111
113
|
},
|
|
114
|
+
desktopApp: {
|
|
115
|
+
inspect: () => inspectChatGptDesktop({ env: process.env }),
|
|
116
|
+
prepare: async () => {
|
|
117
|
+
process.stderr.write(`${CHATGPT_DESKTOP_UPDATE_REMINDER}\n`);
|
|
118
|
+
await ensureManagedChatGptDesktop({ env: process.env, output: process.stderr });
|
|
119
|
+
}
|
|
120
|
+
},
|
|
112
121
|
env: process.env,
|
|
113
122
|
output: process.stdout,
|
|
114
123
|
errorOutput: process.stderr,
|
package/dist/codex-module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-module.js","sourceRoot":"","sources":["../src/codex-module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-module.js","sourceRoot":"","sources":["../src/codex-module.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@numa-tech/numa",
|
|
3
|
-
"version": "1.12.
|
|
3
|
+
"version": "1.12.6",
|
|
4
4
|
"description": "Cross-platform CLI for the Numa internal developer platform with Keycloak authentication and MCP support.",
|
|
5
5
|
"author": "numa-tech",
|
|
6
6
|
"keywords": [
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"typecheck": "turbo run typecheck root:typecheck",
|
|
33
33
|
"root:typecheck": "tsc --noEmit",
|
|
34
34
|
"test": "turbo run test root:test",
|
|
35
|
-
"root:test": "node --import tsx --test src/branding.test.ts src/app-config.test.ts src/platform-profile.test.ts src/identity.test.ts src/backend.test.ts src/oauth.test.ts src/web-console.test.ts src/cli-options.test.ts src/ai-registry/client.test.ts src/ai-registry/skill-installer.test.ts src/ai-registry/mcp-installer.test.ts src/media/client.test.ts src/media/commands.test.ts src/media/transfers.test.ts src/pipeline/client.test.ts src/pipeline/commands.test.ts src/codex-integration.test.ts scripts/release-all.test.mjs",
|
|
35
|
+
"root:test": "node --import tsx --test src/branding.test.ts src/app-config.test.ts src/platform-profile.test.ts src/identity.test.ts src/backend.test.ts src/oauth.test.ts src/web-console.test.ts src/cli-options.test.ts src/ai-registry/client.test.ts src/ai-registry/skill-installer.test.ts src/ai-registry/mcp-installer.test.ts src/media/client.test.ts src/media/commands.test.ts src/media/transfers.test.ts src/pipeline/client.test.ts src/pipeline/commands.test.ts src/chatgpt-desktop.test.ts src/codex-integration.test.ts scripts/release-all.test.mjs",
|
|
36
36
|
"pack:check": "turbo run pack:check root:pack:check",
|
|
37
37
|
"root:pack:check": "node scripts/check-root-package.mjs",
|
|
38
38
|
"boundaries": "node scripts/check-workspace-boundaries.mjs",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@clack/prompts": "^1.7.0",
|
|
57
57
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
58
|
-
"@numa-tech/cli-auth": "1.12.
|
|
59
|
-
"@tokensrc/codex": "1.12.
|
|
58
|
+
"@numa-tech/cli-auth": "1.12.6",
|
|
59
|
+
"@tokensrc/codex": "1.12.6",
|
|
60
60
|
"commander": "^14.0.3",
|
|
61
61
|
"open": "^10.2.0",
|
|
62
62
|
"yauzl": "^3.4.0",
|