@hellolynk-ai/codex-plugin 0.2.102 → 0.2.103-macos.1
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 +17 -17
- package/bin/hellolynk-client-setup.mjs +70 -10
- package/hellolynk-client-pack-manifest.json +101 -61
- package/hellolynk-client-pack-pin.json +1 -1
- package/package.json +8 -4
- package/plugins/hellolynk-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/hellolynk-codex/.mcp.json +20 -19
- package/plugins/hellolynk-codex/package.json +1 -1
- package/plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-client-account.mjs +1 -1
- package/plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-darwin-host.mjs +269 -0
- package/plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-darwin-vault.mjs +153 -0
- package/plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-host-protected-store.mjs +20 -8
- package/plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-neutral-host-installation-store.mjs +1 -1
- package/plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-platform-credential-store.mjs +68 -14
- package/plugins/hellolynk-codex/runtime/bootstrap/platform/darwin/hellolynk-keychain-helper.bin +0 -0
- package/plugins/hellolynk-codex/runtime/bootstrap/platform/darwin/hellolynk-keychain-helper.swift +149 -0
- package/plugins/hellolynk-codex/runtime/connect-activate.mjs +5 -1
- package/plugins/hellolynk-codex/runtime/core/hellolynk-client-account.mjs +1 -1
- package/plugins/hellolynk-codex/runtime/core/hellolynk-client-update-entry.mjs +7 -3
- package/plugins/hellolynk-codex/runtime/core/hellolynk-client-update-runtime.mjs +62 -33
- package/plugins/hellolynk-codex/runtime/core/hellolynk-client-update.mjs +62 -18
- package/plugins/hellolynk-codex/runtime/core/hellolynk-darwin-host.mjs +269 -0
- package/plugins/hellolynk-codex/runtime/core/hellolynk-darwin-vault.mjs +153 -0
- package/plugins/hellolynk-codex/runtime/core/hellolynk-host-protected-store.mjs +20 -8
- package/plugins/hellolynk-codex/runtime/core/hellolynk-human-confirmation-ledger.mjs +53 -6
- package/plugins/hellolynk-codex/runtime/core/hellolynk-local-data-protection.mjs +22 -7
- package/plugins/hellolynk-codex/runtime/core/hellolynk-native-human-confirmation-broker.mjs +7 -5
- package/plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-installation-store.mjs +1 -1
- package/plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-launcher.mjs +9 -3
- package/plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-process.mjs +1 -1
- package/plugins/hellolynk-codex/runtime/core/hellolynk-platform-credential-store.mjs +68 -14
- package/plugins/hellolynk-codex/runtime/core/hellolynk-release-retention.mjs +101 -2
- package/plugins/hellolynk-codex/runtime/core/hellolynk-workbench-connection.mjs +5 -3
- package/plugins/hellolynk-codex/runtime/neutral-host-release-entry.mjs +1 -1
- package/plugins/hellolynk-codex/runtime/neutral-host-release-loader.mjs +1 -1
- package/plugins/hellolynk-codex/runtime/neutral-host-release-manifest.json +56 -24
- package/plugins/hellolynk-codex/runtime/neutral-host-release-pin.json +1 -1
- package/plugins/hellolynk-codex/runtime/platform/darwin/hellolynk-keychain-helper.bin +0 -0
- package/plugins/hellolynk-codex/runtime/platform/darwin/hellolynk-keychain-helper.swift +149 -0
- package/plugins/hellolynk-codex/runtime/platform/windows/credential-store.ps1 +46 -10
- package/plugins/hellolynk-codex/server/codex-neutral-production.mjs +14 -8
- package/tools/hellolynk-activate-neutral-host-clients.mjs +5 -1
package/README.md
CHANGED
|
@@ -35,35 +35,35 @@
|
|
|
35
35
|
|
|
36
36
|
Codex、OpenClaw、TRAE Work、WorkBuddy。装哪个客户端,就选哪个包。同一个账号下,它们共用你的灵信号。
|
|
37
37
|
|
|
38
|
-
源码见 [Codex 客户端源码](https://github.com/haoyun18881-beep/HelloLynk/tree/main/clients/codex),完整介绍见 [HelloLynk on GitHub](https://github.com/haoyun18881-beep/HelloLynk)。
|
|
38
|
+
源码见 [Codex 客户端源码](https://github.com/haoyun18881-beep/HelloLynk/tree/main/clients/codex-macos),完整介绍见 [HelloLynk on GitHub](https://github.com/haoyun18881-beep/HelloLynk)。
|
|
39
39
|
|
|
40
40
|
## 前提
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
Apple 芯片、macOS 13 或更高版本、Node.js 22.16 或更高版本,以及安装在「应用程序」中的 ChatGPT(已打开过 Codex)。
|
|
43
43
|
|
|
44
44
|
## 安装
|
|
45
45
|
|
|
46
46
|
1. 打开 [HelloLynk 官网(Official site)](https://hellolynk.com)。新用户注册账号;已有账号登录后,查看自己的公开灵信号。
|
|
47
47
|
2. 两种装法任选一种。
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
推荐用 npm,在终端运行:
|
|
50
50
|
|
|
51
|
-
```
|
|
52
|
-
|
|
51
|
+
```sh
|
|
52
|
+
npm install -g @hellolynk-ai/codex-plugin@macos
|
|
53
|
+
hellolynk-codex init
|
|
53
54
|
```
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
用安装包,在官网或 [GitHub Release](https://github.com/haoyun18881-beep/HelloLynk/releases) 下载 Codex for Mac 安装包,完整解压,在包含 `package` 文件夹的目录打开 终端,运行:
|
|
56
57
|
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
hellolynk-codex init
|
|
58
|
+
```sh
|
|
59
|
+
node ./package/bin/hellolynk-client-setup.mjs init
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
3. 完全退出并重新打开 Codex。
|
|
63
63
|
|
|
64
64
|
可以把本说明交给你的本地 AI,请它帮你安装;用安装包时,把解压目录也告诉它。
|
|
65
65
|
|
|
66
|
-
下文命令按安装包写法给出。用 npm 装的,把 `node
|
|
66
|
+
下文命令按安装包写法给出。用 npm 装的,把 `node ./package/bin/hellolynk-client-setup.mjs` 换成 `hellolynk-codex`,在任意目录运行。
|
|
67
67
|
|
|
68
68
|
## 首次连接
|
|
69
69
|
|
|
@@ -73,8 +73,8 @@ Windows 10/11、Node.js 22.16 或更高版本、PowerShell 7,以及打开过
|
|
|
73
73
|
|
|
74
74
|
也可以让 AI 用命令连接,把示例换成自己的公开灵信号:
|
|
75
75
|
|
|
76
|
-
```
|
|
77
|
-
node
|
|
76
|
+
```sh
|
|
77
|
+
node ./package/bin/hellolynk-client-setup.mjs connect --hellolynk-id hellolynk:intl:your-name
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
首次连接这台电脑时,命令会给出官网确认链接。AI 把链接给用户;用户确认后,AI 继续执行同一条连接命令。
|
|
@@ -83,20 +83,20 @@ node .\package\bin\hellolynk-client-setup.mjs connect --hellolynk-id hellolynk:i
|
|
|
83
83
|
|
|
84
84
|
插件会自动更新,不用操作。要手动更新,下载新版安装包,在包含 `package` 文件夹的目录运行:
|
|
85
85
|
|
|
86
|
-
```
|
|
87
|
-
node
|
|
86
|
+
```sh
|
|
87
|
+
node ./package/bin/hellolynk-client-setup.mjs setup
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
用 npm 装的,先运行 `npm install -g @hellolynk-ai/codex-plugin` 装上新版,再运行 `hellolynk-codex setup`。
|
|
90
|
+
用 npm 装的,先运行 `npm install -g @hellolynk-ai/codex-plugin@macos` 装上新版,再运行 `hellolynk-codex setup`。
|
|
91
91
|
|
|
92
92
|
## 卸载
|
|
93
93
|
|
|
94
|
-
在包含 `package` 文件夹的目录运行 `node
|
|
94
|
+
在包含 `package` 文件夹的目录运行 `node ./package/bin/hellolynk-client-setup.mjs uninstall`。账号、联系人和聊天记录留在这台电脑上,重新安装后不用重新连接。
|
|
95
95
|
|
|
96
96
|
用 npm 装的,运行 `hellolynk-codex uninstall`,再运行 `npm uninstall -g @hellolynk-ai/codex-plugin`。
|
|
97
97
|
|
|
98
98
|
## 求助
|
|
99
99
|
|
|
100
|
-
运行 `node
|
|
100
|
+
运行 `node ./package/bin/hellolynk-client-setup.mjs doctor` 检查安装,把结果和错误码发到 [haoyun18881@gmail.com](mailto:haoyun18881@gmail.com)。
|
|
101
101
|
|
|
102
102
|
许可:PolyForm Shield License 1.0.0,只覆盖本包内的客户端源码,完整条款见 LICENSE。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import crypto from "node:crypto";
|
|
4
|
-
import { lstatSync, realpathSync, writeSync } from "node:fs";
|
|
4
|
+
import { constants, lstatSync, realpathSync, writeSync } from "node:fs";
|
|
5
5
|
import fs from "node:fs/promises";
|
|
6
6
|
import os from "node:os";
|
|
7
7
|
import path from "node:path";
|
|
@@ -16,11 +16,14 @@ const PACK_PIN = "hellolynk-client-pack-pin.json";
|
|
|
16
16
|
|
|
17
17
|
// A person at a terminal reads sentences in the system language; the updater, tests and other
|
|
18
18
|
// programs read one JSON line.
|
|
19
|
-
const
|
|
19
|
+
const explicitJson = process.argv.includes("--json");
|
|
20
|
+
const jsonOutput = explicitJson || process.stdout.isTTY !== true;
|
|
20
21
|
const CHINESE = /^zh\b/i.test(Intl.DateTimeFormat().resolvedOptions().locale);
|
|
21
22
|
const CLIENT_NAMES = Object.freeze({ codex: "Codex", openclaw: "OpenClaw", "trae-work": "TRAE Work",
|
|
22
23
|
workbuddy: "WorkBuddy", cursor: "Cursor", dsh: "DSH" });
|
|
23
24
|
const { packageJson, metadata } = await readPackage();
|
|
25
|
+
const macPackage = metadata.client === "codex" && packageJson.os?.[0] === "darwin"
|
|
26
|
+
&& packageJson.cpu?.[0] === "arm64";
|
|
24
27
|
const commandArguments = process.argv.slice(2).filter((value) => value !== "--json");
|
|
25
28
|
const command = String(commandArguments.shift() || "help").toLowerCase();
|
|
26
29
|
const waitForPending = command === "--wait-for-pending";
|
|
@@ -63,6 +66,12 @@ try {
|
|
|
63
66
|
} else {
|
|
64
67
|
const accountModule = await importStableCore(PACKAGE_ROOT, "hellolynk-client-account.mjs", "hellolynk_npm_account_runtime_invalid");
|
|
65
68
|
const originalLocations = resolveLocations(accountModule.clientAccountBaseRoot);
|
|
69
|
+
if (macPackage && command !== "uninstall") {
|
|
70
|
+
const config = await readJson(path.join(sourceReleaseRoot, ".mcp.json"), "hellolynk_npm_release_invalid", true);
|
|
71
|
+
const commandPath = config.mcpServers?.["hellolynk-codex"]?.command;
|
|
72
|
+
if (typeof commandPath !== "string" || !path.isAbsolute(commandPath)) fail("hellolynk_npm_release_invalid");
|
|
73
|
+
await fs.access(commandPath, constants.X_OK).catch(() => fail("hellolynk_npm_codex_mac_node_required"));
|
|
74
|
+
}
|
|
66
75
|
const baseRoot = accountModule.clientAccountBaseRoot(originalLocations.hostRoot);
|
|
67
76
|
const packageLocations = { ...originalLocations, hostRoot: baseRoot, finalCurrentRoot: path.dirname(baseRoot) };
|
|
68
77
|
const accounts = accountModule.createClientAccountActions({ client: metadata.client, storeRoot: baseRoot });
|
|
@@ -250,6 +259,10 @@ try {
|
|
|
250
259
|
await verifyExactBinding({ ...installed, locations, activation });
|
|
251
260
|
await verifyClientConfiguration({ ...installed, locations });
|
|
252
261
|
}
|
|
262
|
+
// A running unsigned updater asks the stable package for implicit JSON. A
|
|
263
|
+
// staged package may still prove its own first install after lost stdout.
|
|
264
|
+
const legacyUpdateProof = installed && !existingDoctor && !explicitJson && jsonOutput
|
|
265
|
+
&& process.env.HELLOLYNK_NEUTRAL_STORE_ROOT && samePath(PACKAGE_ROOT, installed.packageRoot);
|
|
253
266
|
print({
|
|
254
267
|
ok: true,
|
|
255
268
|
client: metadata.client,
|
|
@@ -260,7 +273,7 @@ try {
|
|
|
260
273
|
activated: activation.ready,
|
|
261
274
|
activationState: activation.state,
|
|
262
275
|
stableReleaseVerified: installed != null,
|
|
263
|
-
exactBindingVerified: installed != null,
|
|
276
|
+
...(legacyUpdateProof ? {} : { exactBindingVerified: installed != null }),
|
|
264
277
|
clientConfigurationVerified: installed != null,
|
|
265
278
|
installsNode: false,
|
|
266
279
|
installsGit: false,
|
|
@@ -429,7 +442,8 @@ async function uninstallClient(locations) {
|
|
|
429
442
|
if (receiverConfigured) await receiver.configureTraeNativeTaskWorker({ storeRoot: locations.hostRoot, enabled: false });
|
|
430
443
|
}
|
|
431
444
|
// A binding names the release it starts, so it cannot outlive the releases removed below.
|
|
432
|
-
|
|
445
|
+
const protectedFile = macPackage ? "protected-v1.sqlite" : "capabilities-v1.dpapi.clixml";
|
|
446
|
+
if (await exists(path.join(locations.hostRoot, protectedFile))) {
|
|
433
447
|
const store = await importStableCore(PACKAGE_ROOT, "hellolynk-host-protected-store.mjs", "hellolynk_npm_binding_invalid");
|
|
434
448
|
await store.createHostProtectedStore({ root: locations.hostRoot, followClientAccount: false }).disconnectLocalClient(metadata.client);
|
|
435
449
|
}
|
|
@@ -839,10 +853,13 @@ async function verifyRelease(releaseRoot, packageRoot, expectedMetadata = metada
|
|
|
839
853
|
}
|
|
840
854
|
|
|
841
855
|
function resolveLocations(getDefaultHostRoot) {
|
|
842
|
-
if (
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
const
|
|
856
|
+
if (macPackage) {
|
|
857
|
+
if (process.platform !== "darwin" || process.arch !== "arm64") fail("hellolynk_npm_platform_unsupported");
|
|
858
|
+
} else if (process.platform !== "win32") fail("hellolynk_npm_windows_only");
|
|
859
|
+
const home = path.resolve((macPackage ? process.env.HOME : process.env.USERPROFILE) || os.homedir());
|
|
860
|
+
const localAppData = macPackage ? path.join(home, "Library", "Application Support")
|
|
861
|
+
: path.resolve(process.env.LOCALAPPDATA || path.join(home, "AppData", "Local"));
|
|
862
|
+
const appData = macPackage ? localAppData : path.resolve(process.env.APPDATA || path.join(home, "AppData", "Roaming"));
|
|
846
863
|
const configuredCodexHome = String(process.env.CODEX_HOME || "");
|
|
847
864
|
if (configuredCodexHome && !path.isAbsolute(configuredCodexHome)) fail("hellolynk_npm_codex_home_invalid");
|
|
848
865
|
const codexHome = path.resolve(configuredCodexHome || path.join(home, ".codex"));
|
|
@@ -2252,6 +2269,13 @@ function runCodexJson(args, code, codexHome) {
|
|
|
2252
2269
|
}
|
|
2253
2270
|
|
|
2254
2271
|
function minimalEnv({ codexHome = null } = {}) {
|
|
2272
|
+
if (macPackage) return Object.freeze({
|
|
2273
|
+
PATH: process.env.PATH || "/usr/bin:/bin",
|
|
2274
|
+
HOME: process.env.HOME || os.homedir(),
|
|
2275
|
+
TMPDIR: process.env.TMPDIR || os.tmpdir(),
|
|
2276
|
+
LANG: process.env.LANG || "en_US.UTF-8",
|
|
2277
|
+
...(codexHome ? { CODEX_HOME: codexHome } : {}),
|
|
2278
|
+
});
|
|
2255
2279
|
return Object.freeze({
|
|
2256
2280
|
PATH: process.env.Path || process.env.PATH || "",
|
|
2257
2281
|
PATHEXT: process.env.PATHEXT || "",
|
|
@@ -2267,13 +2291,18 @@ function minimalEnv({ codexHome = null } = {}) {
|
|
|
2267
2291
|
|
|
2268
2292
|
function resolveCodexRunner(codexHome) {
|
|
2269
2293
|
if (resolvedCodexRunner) return resolvedCodexRunner;
|
|
2270
|
-
const searchPath = String(process.env.Path || process.env.PATH || "");
|
|
2294
|
+
const searchPath = String((macPackage ? process.env.PATH : process.env.Path || process.env.PATH) || "");
|
|
2271
2295
|
let sawLoaderCandidate = false;
|
|
2272
2296
|
let sawNativeCandidate = false;
|
|
2273
2297
|
for (const rawEntry of searchPath.split(path.delimiter)) {
|
|
2274
2298
|
try {
|
|
2275
2299
|
const logical = rawEntry.trim().replace(/^"(.*)"$/, "$1");
|
|
2276
2300
|
if (!logical || !path.isAbsolute(logical)) continue;
|
|
2301
|
+
if (macPackage) {
|
|
2302
|
+
const runner = probeMacCodex(path.join(logical, "codex"), codexHome);
|
|
2303
|
+
if (runner) return (resolvedCodexRunner = runner);
|
|
2304
|
+
continue;
|
|
2305
|
+
}
|
|
2277
2306
|
// nvm/fnm and user profile mappings can put a junction on PATH. Resolve
|
|
2278
2307
|
// that directory once, then retain the ordinary-file checks below it.
|
|
2279
2308
|
const entry = realpathSync(path.resolve(logical));
|
|
@@ -2327,6 +2356,15 @@ function resolveCodexRunner(codexHome) {
|
|
|
2327
2356
|
}
|
|
2328
2357
|
|
|
2329
2358
|
function resolveCodexDesktopRunner(codexHome) {
|
|
2359
|
+
if (macPackage) {
|
|
2360
|
+
for (const directory of ["/Applications", path.join(os.homedir(), "Applications")]) {
|
|
2361
|
+
for (const app of ["ChatGPT.app", "Codex.app"]) {
|
|
2362
|
+
const runner = probeMacCodex(path.join(directory, app, "Contents", "Resources", "codex"), codexHome);
|
|
2363
|
+
if (runner) return runner;
|
|
2364
|
+
}
|
|
2365
|
+
}
|
|
2366
|
+
return null;
|
|
2367
|
+
}
|
|
2330
2368
|
if (process.platform !== "win32") return null;
|
|
2331
2369
|
const systemRoot = process.env.SystemRoot || process.env.SYSTEMROOT;
|
|
2332
2370
|
if (!systemRoot || !path.isAbsolute(systemRoot)) return null;
|
|
@@ -2354,6 +2392,22 @@ function resolveCodexDesktopRunner(codexHome) {
|
|
|
2354
2392
|
return null;
|
|
2355
2393
|
}
|
|
2356
2394
|
|
|
2395
|
+
function probeMacCodex(logicalPath, codexHome) {
|
|
2396
|
+
// npm and Homebrew commonly expose a symlink. Execute the canonical file directly.
|
|
2397
|
+
try {
|
|
2398
|
+
const command = realpathSync(logicalPath);
|
|
2399
|
+
const metadata = lstatSync(command);
|
|
2400
|
+
if (!metadata.isFile() || !(metadata.mode & 0o111)) return null;
|
|
2401
|
+
const result = spawnSync(command, ["--version"], {
|
|
2402
|
+
encoding: "utf8", shell: false, timeout: 5000, env: minimalEnv({ codexHome }),
|
|
2403
|
+
});
|
|
2404
|
+
if (result.status === 0 && /^codex-cli\s+\d+\.\d+\.\d+/u.test(String(result.stdout || "").trim())) {
|
|
2405
|
+
return Object.freeze({ command, argsPrefix: Object.freeze([]), kind: "native" });
|
|
2406
|
+
}
|
|
2407
|
+
} catch { /* Missing or unusable CLI. */ }
|
|
2408
|
+
return null;
|
|
2409
|
+
}
|
|
2410
|
+
|
|
2357
2411
|
function resolveRegularDescendantSync(anchor, anchorRealPath, segments) {
|
|
2358
2412
|
let observed = anchor;
|
|
2359
2413
|
for (let index = 0; index < segments.length; index += 1) {
|
|
@@ -2533,6 +2587,7 @@ function samePath(left, right) {
|
|
|
2533
2587
|
const resolved = normalizeWindowsNamespacePath(value);
|
|
2534
2588
|
let canonical = resolved;
|
|
2535
2589
|
try { canonical = realpathSync(resolved); } catch { /* comparison can still reject a missing path */ }
|
|
2590
|
+
if (macPackage) return canonical;
|
|
2536
2591
|
return normalizeWindowsNamespacePath(canonical).replace(/[\\/]+$/u, "").toLowerCase();
|
|
2537
2592
|
};
|
|
2538
2593
|
return normalize(left) === normalize(right);
|
|
@@ -2652,7 +2707,9 @@ function helpText() {
|
|
|
2652
2707
|
: [[say("安装", "Install"), "init"], [say("连接账号", "Connect an account"), connect],
|
|
2653
2708
|
[say("更新或修复", "Update or repair"), "setup"], [say("检查", "Check"), "doctor"],
|
|
2654
2709
|
[say("卸载", "Uninstall"), "uninstall"]];
|
|
2655
|
-
|
|
2710
|
+
const platform = macPackage ? " (macOS arm64, Node.js 22.16.0+)"
|
|
2711
|
+
: say("(Windows,Node.js 22.16.0+)", " (Windows, Node.js 22.16.0+)");
|
|
2712
|
+
return `${[`HelloLynk for ${CLIENT_NAMES[metadata.client]}${platform}`,
|
|
2656
2713
|
...rows.map(([label, args]) => `${label}${say(":", ": ")}${run} ${args}`),
|
|
2657
2714
|
say("加 --json 输出一行 JSON。", "Add --json for one line of JSON.")].join("\n")}\n`;
|
|
2658
2715
|
}
|
|
@@ -2726,6 +2783,9 @@ function failureText(failure) {
|
|
|
2726
2783
|
function failureReason(code, name) {
|
|
2727
2784
|
if (code === "hellolynk_node_22_16_required") return say("需要 Node.js 22.16 或更高版本。", "Node.js 22.16 or later is required.");
|
|
2728
2785
|
if (code === "hellolynk_npm_windows_only") return say("只支持 Windows。", "Windows only.");
|
|
2786
|
+
if (code === "hellolynk_npm_platform_unsupported") return say("此安装包适用于 Apple 芯片的 Mac。", "This package requires an Apple silicon Mac.");
|
|
2787
|
+
if (code === "hellolynk_npm_codex_mac_node_required") return say("请将 ChatGPT 安装到「应用程序」,打开 Codex 后再试。",
|
|
2788
|
+
"Install ChatGPT in Applications, open Codex, and try again.");
|
|
2729
2789
|
if (code === "hellolynk_npm_connect_id_invalid") {
|
|
2730
2790
|
return say("灵信号不对。请从官网复制从 hellolynk: 开始的完整灵信号。",
|
|
2731
2791
|
"This HelloLynk ID is not valid. Copy the complete ID, starting with hellolynk:, from the website.");
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"contract": "hellolynk-client-npm-pack-manifest-v1",
|
|
3
3
|
"client": "codex",
|
|
4
4
|
"packageName": "@hellolynk-ai/codex-plugin",
|
|
5
|
-
"version": "0.2.
|
|
5
|
+
"version": "0.2.103-macos.1",
|
|
6
6
|
"workbench": {
|
|
7
7
|
"path": "plugins/hellolynk-codex/runtime/workbench/hellolynk-workbench-build.json",
|
|
8
8
|
"contract": "hellolynk-shared-workbench-build-v1",
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"path": "bin/hellolynk-client-setup.mjs",
|
|
20
|
-
"bytes":
|
|
21
|
-
"sha256": "
|
|
20
|
+
"bytes": 145615,
|
|
21
|
+
"sha256": "044321ea6c5757a985b92a826ffc1fb3ffa4fb8355b732abecc64210d4ac3399"
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"path": "bin/hellolynk-mcp-config-shape.mjs",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"path": "package.json",
|
|
35
|
-
"bytes":
|
|
36
|
-
"sha256": "
|
|
35
|
+
"bytes": 1776,
|
|
36
|
+
"sha256": "4115862c2d4169f3876fe2c35a3a96c8c1fb50b6a3a73af80456e26702ad3105"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"path": "plugins/hellolynk-codex/.app.json",
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
{
|
|
44
44
|
"path": "plugins/hellolynk-codex/.codex-plugin/plugin.json",
|
|
45
45
|
"bytes": 1669,
|
|
46
|
-
"sha256": "
|
|
46
|
+
"sha256": "1de6bb823a304b733c0c75418389b1e32819191adea03c575f5c602f2e00631c"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"path": "plugins/hellolynk-codex/.mcp.json",
|
|
50
|
-
"bytes":
|
|
51
|
-
"sha256": "
|
|
50
|
+
"bytes": 438,
|
|
51
|
+
"sha256": "510ae3b6f417c1cd8e4712704d9e76643d30e7b3d1a8d3363dda19eb30fe4580"
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
"path": "plugins/hellolynk-codex/assets/hellolynk-mark.png",
|
|
@@ -58,12 +58,12 @@
|
|
|
58
58
|
{
|
|
59
59
|
"path": "plugins/hellolynk-codex/package.json",
|
|
60
60
|
"bytes": 1030,
|
|
61
|
-
"sha256": "
|
|
61
|
+
"sha256": "f786baab2e9f35836813c6b77e1cbc0fb8c0a3c0a2055b2e6ea777f2428cd232"
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
"path": "plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-client-account.mjs",
|
|
65
|
-
"bytes":
|
|
66
|
-
"sha256": "
|
|
65
|
+
"bytes": 8423,
|
|
66
|
+
"sha256": "6e03a05127d4dc86be6391567b51a956d1a987acf4e23f5699ce0e00c3187b7e"
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
"path": "plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-client-core.mjs",
|
|
@@ -75,6 +75,16 @@
|
|
|
75
75
|
"bytes": 9359,
|
|
76
76
|
"sha256": "8be37831c96610e3d0a64848ada86488970cc6079e49764b47d8a8b2ba852269"
|
|
77
77
|
},
|
|
78
|
+
{
|
|
79
|
+
"path": "plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-darwin-host.mjs",
|
|
80
|
+
"bytes": 15242,
|
|
81
|
+
"sha256": "ded97c3bc3dd65ca75305f5199a1340dffb987a5f283454d60586df8b6b55c09"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"path": "plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-darwin-vault.mjs",
|
|
85
|
+
"bytes": 7506,
|
|
86
|
+
"sha256": "b6094d856af016e674e4a0183a4e474397bbe92e66638743fa62fe085b554d30"
|
|
87
|
+
},
|
|
78
88
|
{
|
|
79
89
|
"path": "plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-host-auth.mjs",
|
|
80
90
|
"bytes": 12081,
|
|
@@ -82,8 +92,8 @@
|
|
|
82
92
|
},
|
|
83
93
|
{
|
|
84
94
|
"path": "plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-host-protected-store.mjs",
|
|
85
|
-
"bytes":
|
|
86
|
-
"sha256": "
|
|
95
|
+
"bytes": 127785,
|
|
96
|
+
"sha256": "10f81f4f6a5dd2fe9a742e847b2eb47dbf20f802f4414f46a05ccbc3505148e2"
|
|
87
97
|
},
|
|
88
98
|
{
|
|
89
99
|
"path": "plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-local-process-lock.mjs",
|
|
@@ -92,19 +102,29 @@
|
|
|
92
102
|
},
|
|
93
103
|
{
|
|
94
104
|
"path": "plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-neutral-host-installation-store.mjs",
|
|
95
|
-
"bytes":
|
|
96
|
-
"sha256": "
|
|
105
|
+
"bytes": 33232,
|
|
106
|
+
"sha256": "42ae1e7deb876a8308b7bfed6a7b891d1834117b62504fc5befe3f91a0b4c740"
|
|
97
107
|
},
|
|
98
108
|
{
|
|
99
109
|
"path": "plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-platform-credential-store.mjs",
|
|
100
|
-
"bytes":
|
|
101
|
-
"sha256": "
|
|
110
|
+
"bytes": 38559,
|
|
111
|
+
"sha256": "3969708bafefc3b267bb34a9dcc115804c874ad14f4a036426d727c02ff70d42"
|
|
102
112
|
},
|
|
103
113
|
{
|
|
104
114
|
"path": "plugins/hellolynk-codex/runtime/bootstrap/core/hellolynk-runtime-safety.cjs",
|
|
105
115
|
"bytes": 24643,
|
|
106
116
|
"sha256": "43d576d9f774409f4a735793c1503a6f397e787b10c59a4ac9cc9257299f5efe"
|
|
107
117
|
},
|
|
118
|
+
{
|
|
119
|
+
"path": "plugins/hellolynk-codex/runtime/bootstrap/platform/darwin/hellolynk-keychain-helper.bin",
|
|
120
|
+
"bytes": 110784,
|
|
121
|
+
"sha256": "f1a782c08229ebc0e8d1704b6390e91c5695e084b4df0a1a6dc043f6b23700ab"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"path": "plugins/hellolynk-codex/runtime/bootstrap/platform/darwin/hellolynk-keychain-helper.swift",
|
|
125
|
+
"bytes": 7771,
|
|
126
|
+
"sha256": "5d933589a1d739217bc164f73ab9afadc9e27cc512e1c00c0be4b38975fb6d5b"
|
|
127
|
+
},
|
|
108
128
|
{
|
|
109
129
|
"path": "plugins/hellolynk-codex/runtime/bootstrap/platform/windows/hellolynk-host-protected-store.ps1",
|
|
110
130
|
"bytes": 152700,
|
|
@@ -112,8 +132,8 @@
|
|
|
112
132
|
},
|
|
113
133
|
{
|
|
114
134
|
"path": "plugins/hellolynk-codex/runtime/connect-activate.mjs",
|
|
115
|
-
"bytes":
|
|
116
|
-
"sha256": "
|
|
135
|
+
"bytes": 33789,
|
|
136
|
+
"sha256": "93c68c23ed2d18e87766ecd8dae6c3d8e757eca6ad7569477c8ec994402a8b0e"
|
|
117
137
|
},
|
|
118
138
|
{
|
|
119
139
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-agent-configurator.mjs",
|
|
@@ -122,8 +142,8 @@
|
|
|
122
142
|
},
|
|
123
143
|
{
|
|
124
144
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-client-account.mjs",
|
|
125
|
-
"bytes":
|
|
126
|
-
"sha256": "
|
|
145
|
+
"bytes": 8423,
|
|
146
|
+
"sha256": "6e03a05127d4dc86be6391567b51a956d1a987acf4e23f5699ce0e00c3187b7e"
|
|
127
147
|
},
|
|
128
148
|
{
|
|
129
149
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-client-core.mjs",
|
|
@@ -137,24 +157,34 @@
|
|
|
137
157
|
},
|
|
138
158
|
{
|
|
139
159
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-client-update-entry.mjs",
|
|
140
|
-
"bytes":
|
|
141
|
-
"sha256": "
|
|
160
|
+
"bytes": 1939,
|
|
161
|
+
"sha256": "d9548eacda8632976e42aafc65f0cef2ec9c5233d2d53b31b02aec0a1702b5eb"
|
|
142
162
|
},
|
|
143
163
|
{
|
|
144
164
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-client-update-runtime.mjs",
|
|
145
|
-
"bytes":
|
|
146
|
-
"sha256": "
|
|
165
|
+
"bytes": 41618,
|
|
166
|
+
"sha256": "aa233e2cdbdfadb7da6aa489591bc12c4121101b94696f93f6e6cb5d3e7c7870"
|
|
147
167
|
},
|
|
148
168
|
{
|
|
149
169
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-client-update.mjs",
|
|
150
|
-
"bytes":
|
|
151
|
-
"sha256": "
|
|
170
|
+
"bytes": 30894,
|
|
171
|
+
"sha256": "e57f7cc5e98519a014cef7cef68a97bb7e2beb33eb381c38d1751a3967904aaa"
|
|
152
172
|
},
|
|
153
173
|
{
|
|
154
174
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-contact-request-e2ee.mjs",
|
|
155
175
|
"bytes": 34163,
|
|
156
176
|
"sha256": "657664c6250d2738061e1ec2680eda6b36063c357d9e2d9c743e4218ece50895"
|
|
157
177
|
},
|
|
178
|
+
{
|
|
179
|
+
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-darwin-host.mjs",
|
|
180
|
+
"bytes": 15242,
|
|
181
|
+
"sha256": "ded97c3bc3dd65ca75305f5199a1340dffb987a5f283454d60586df8b6b55c09"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-darwin-vault.mjs",
|
|
185
|
+
"bytes": 7506,
|
|
186
|
+
"sha256": "b6094d856af016e674e4a0183a4e474397bbe92e66638743fa62fe085b554d30"
|
|
187
|
+
},
|
|
158
188
|
{
|
|
159
189
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-device-enrollment.mjs",
|
|
160
190
|
"bytes": 26664,
|
|
@@ -177,8 +207,8 @@
|
|
|
177
207
|
},
|
|
178
208
|
{
|
|
179
209
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-host-protected-store.mjs",
|
|
180
|
-
"bytes":
|
|
181
|
-
"sha256": "
|
|
210
|
+
"bytes": 127785,
|
|
211
|
+
"sha256": "10f81f4f6a5dd2fe9a742e847b2eb47dbf20f802f4414f46a05ccbc3505148e2"
|
|
182
212
|
},
|
|
183
213
|
{
|
|
184
214
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-host-transport-client.mjs",
|
|
@@ -192,8 +222,8 @@
|
|
|
192
222
|
},
|
|
193
223
|
{
|
|
194
224
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-human-confirmation-ledger.mjs",
|
|
195
|
-
"bytes":
|
|
196
|
-
"sha256": "
|
|
225
|
+
"bytes": 14416,
|
|
226
|
+
"sha256": "43b6b6baea422eb226c850f15966c907d834bc2f5aadbab6ee0c9e05445f182f"
|
|
197
227
|
},
|
|
198
228
|
{
|
|
199
229
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-human-relationship-controller.mjs",
|
|
@@ -232,8 +262,8 @@
|
|
|
232
262
|
},
|
|
233
263
|
{
|
|
234
264
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-local-data-protection.mjs",
|
|
235
|
-
"bytes":
|
|
236
|
-
"sha256": "
|
|
265
|
+
"bytes": 26663,
|
|
266
|
+
"sha256": "cea4f73ec5a31918c48bd8234e28d38ff1bb8028d2591f542b15ee12b2238e1f"
|
|
237
267
|
},
|
|
238
268
|
{
|
|
239
269
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-local-identity-trust.mjs",
|
|
@@ -277,8 +307,8 @@
|
|
|
277
307
|
},
|
|
278
308
|
{
|
|
279
309
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-native-human-confirmation-broker.mjs",
|
|
280
|
-
"bytes":
|
|
281
|
-
"sha256": "
|
|
310
|
+
"bytes": 39735,
|
|
311
|
+
"sha256": "f190c28af2703b58a685a57213b2789df7eda35d7699d718f9420cd1dddd1b65"
|
|
282
312
|
},
|
|
283
313
|
{
|
|
284
314
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-native-inbox-runtime.mjs",
|
|
@@ -307,18 +337,18 @@
|
|
|
307
337
|
},
|
|
308
338
|
{
|
|
309
339
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-installation-store.mjs",
|
|
310
|
-
"bytes":
|
|
311
|
-
"sha256": "
|
|
340
|
+
"bytes": 33232,
|
|
341
|
+
"sha256": "42ae1e7deb876a8308b7bfed6a7b891d1834117b62504fc5befe3f91a0b4c740"
|
|
312
342
|
},
|
|
313
343
|
{
|
|
314
344
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-launcher.mjs",
|
|
315
|
-
"bytes":
|
|
316
|
-
"sha256": "
|
|
345
|
+
"bytes": 29655,
|
|
346
|
+
"sha256": "d94b853a7ed1ebc9c7e9bd7c37e2405e39849fb6d4ddf3d697e17ba169eda6d2"
|
|
317
347
|
},
|
|
318
348
|
{
|
|
319
349
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-process.mjs",
|
|
320
350
|
"bytes": 225161,
|
|
321
|
-
"sha256": "
|
|
351
|
+
"sha256": "7b237a1400c604da5decbb29ab3ce556fd1b744d0cfd7d28b5560b217da120b1"
|
|
322
352
|
},
|
|
323
353
|
{
|
|
324
354
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-store-adapters.mjs",
|
|
@@ -332,8 +362,8 @@
|
|
|
332
362
|
},
|
|
333
363
|
{
|
|
334
364
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-platform-credential-store.mjs",
|
|
335
|
-
"bytes":
|
|
336
|
-
"sha256": "
|
|
365
|
+
"bytes": 38559,
|
|
366
|
+
"sha256": "3969708bafefc3b267bb34a9dcc115804c874ad14f4a036426d727c02ff70d42"
|
|
337
367
|
},
|
|
338
368
|
{
|
|
339
369
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-relay-client-cli.mjs",
|
|
@@ -342,8 +372,8 @@
|
|
|
342
372
|
},
|
|
343
373
|
{
|
|
344
374
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-release-retention.mjs",
|
|
345
|
-
"bytes":
|
|
346
|
-
"sha256": "
|
|
375
|
+
"bytes": 25616,
|
|
376
|
+
"sha256": "0ee150af5a9bcc1f636e3ff980ee90ce7d073ab5ed4a991920cd3472bc65529c"
|
|
347
377
|
},
|
|
348
378
|
{
|
|
349
379
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-runtime-safety.cjs",
|
|
@@ -357,8 +387,8 @@
|
|
|
357
387
|
},
|
|
358
388
|
{
|
|
359
389
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-workbench-connection.mjs",
|
|
360
|
-
"bytes":
|
|
361
|
-
"sha256": "
|
|
390
|
+
"bytes": 14339,
|
|
391
|
+
"sha256": "6ce8e75025d31ed81c39150df2766231fc871ef18c234de986dc910bab79d639"
|
|
362
392
|
},
|
|
363
393
|
{
|
|
364
394
|
"path": "plugins/hellolynk-codex/runtime/neutral-host-bootstrap.mjs",
|
|
@@ -367,23 +397,33 @@
|
|
|
367
397
|
},
|
|
368
398
|
{
|
|
369
399
|
"path": "plugins/hellolynk-codex/runtime/neutral-host-release-entry.mjs",
|
|
370
|
-
"bytes":
|
|
371
|
-
"sha256": "
|
|
400
|
+
"bytes": 3441,
|
|
401
|
+
"sha256": "698d7e80d38353d56c7f1c337fbc676e8649d08afc726ffcb31215dc11fc8455"
|
|
372
402
|
},
|
|
373
403
|
{
|
|
374
404
|
"path": "plugins/hellolynk-codex/runtime/neutral-host-release-loader.mjs",
|
|
375
|
-
"bytes":
|
|
376
|
-
"sha256": "
|
|
405
|
+
"bytes": 7577,
|
|
406
|
+
"sha256": "283a20c6a9b90481bc03c143ab51d5289abf7b7a86fbe51fba7ea2ae1e6d2c60"
|
|
377
407
|
},
|
|
378
408
|
{
|
|
379
409
|
"path": "plugins/hellolynk-codex/runtime/neutral-host-release-manifest.json",
|
|
380
|
-
"bytes":
|
|
381
|
-
"sha256": "
|
|
410
|
+
"bytes": 14698,
|
|
411
|
+
"sha256": "f054f0e73accc788fb24c437eea03a6e4cd5872f39dc4d65cbc7ff0e17e6bcae"
|
|
382
412
|
},
|
|
383
413
|
{
|
|
384
414
|
"path": "plugins/hellolynk-codex/runtime/neutral-host-release-pin.json",
|
|
385
415
|
"bytes": 146,
|
|
386
|
-
"sha256": "
|
|
416
|
+
"sha256": "530ed943cd227874b5096c7bb3657ec0f7a624c2b049680003f6237574d9d73a"
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"path": "plugins/hellolynk-codex/runtime/platform/darwin/hellolynk-keychain-helper.bin",
|
|
420
|
+
"bytes": 110784,
|
|
421
|
+
"sha256": "f1a782c08229ebc0e8d1704b6390e91c5695e084b4df0a1a6dc043f6b23700ab"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"path": "plugins/hellolynk-codex/runtime/platform/darwin/hellolynk-keychain-helper.swift",
|
|
425
|
+
"bytes": 7771,
|
|
426
|
+
"sha256": "5d933589a1d739217bc164f73ab9afadc9e27cc512e1c00c0be4b38975fb6d5b"
|
|
387
427
|
},
|
|
388
428
|
{
|
|
389
429
|
"path": "plugins/hellolynk-codex/runtime/platform/windows/configure-agent.ps1",
|
|
@@ -392,8 +432,8 @@
|
|
|
392
432
|
},
|
|
393
433
|
{
|
|
394
434
|
"path": "plugins/hellolynk-codex/runtime/platform/windows/credential-store.ps1",
|
|
395
|
-
"bytes":
|
|
396
|
-
"sha256": "
|
|
435
|
+
"bytes": 40188,
|
|
436
|
+
"sha256": "8f288c91a1f6ecaf2651baab9bdfc55014c11ea9e165f203ca7a69f4d47d7917"
|
|
397
437
|
},
|
|
398
438
|
{
|
|
399
439
|
"path": "plugins/hellolynk-codex/runtime/platform/windows/hellolynk-host-protected-store.ps1",
|
|
@@ -552,8 +592,8 @@
|
|
|
552
592
|
},
|
|
553
593
|
{
|
|
554
594
|
"path": "plugins/hellolynk-codex/server/codex-neutral-production.mjs",
|
|
555
|
-
"bytes":
|
|
556
|
-
"sha256": "
|
|
595
|
+
"bytes": 27551,
|
|
596
|
+
"sha256": "2c2f209339385cc14f27fe985f4deb75f4bd48e689035311847cc3b08e36ac52"
|
|
557
597
|
},
|
|
558
598
|
{
|
|
559
599
|
"path": "plugins/hellolynk-codex/server/mcp-proxy.mjs",
|
|
@@ -607,13 +647,13 @@
|
|
|
607
647
|
},
|
|
608
648
|
{
|
|
609
649
|
"path": "README.md",
|
|
610
|
-
"bytes":
|
|
611
|
-
"sha256": "
|
|
650
|
+
"bytes": 4578,
|
|
651
|
+
"sha256": "95cd3887026e6a275dce26e50667c1422fad356b59409ce15d6f84ef2207ed92"
|
|
612
652
|
},
|
|
613
653
|
{
|
|
614
654
|
"path": "tools/hellolynk-activate-neutral-host-clients.mjs",
|
|
615
|
-
"bytes":
|
|
616
|
-
"sha256": "
|
|
655
|
+
"bytes": 34020,
|
|
656
|
+
"sha256": "6d838bd1a53a0567ff451adb8b46c3002b3ef092f1af4062b2b8c2b16eaa19cf"
|
|
617
657
|
}
|
|
618
658
|
]
|
|
619
659
|
}
|