@hellolynk-ai/codex-plugin 0.2.102 → 0.2.103
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/bin/hellolynk-client-setup.mjs +70 -10
- package/hellolynk-client-pack-manifest.json +76 -56
- package/hellolynk-client-pack-pin.json +1 -1
- package/package.json +1 -1
- package/plugins/hellolynk-codex/.codex-plugin/plugin.json +1 -1
- 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/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 +40 -24
- package/plugins/hellolynk-codex/runtime/neutral-host-release-pin.json +1 -1
- 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
|
@@ -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",
|
|
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",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
{
|
|
34
34
|
"path": "package.json",
|
|
35
35
|
"bytes": 1713,
|
|
36
|
-
"sha256": "
|
|
36
|
+
"sha256": "8da850a861750ec8c5d0a09bace53fc5c3c8cb7a75d61ded9242c0c95e4bd3ad"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"path": "plugins/hellolynk-codex/.app.json",
|
|
@@ -43,7 +43,7 @@
|
|
|
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",
|
|
@@ -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,13 +102,13 @@
|
|
|
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",
|
|
@@ -112,8 +122,8 @@
|
|
|
112
122
|
},
|
|
113
123
|
{
|
|
114
124
|
"path": "plugins/hellolynk-codex/runtime/connect-activate.mjs",
|
|
115
|
-
"bytes":
|
|
116
|
-
"sha256": "
|
|
125
|
+
"bytes": 33789,
|
|
126
|
+
"sha256": "93c68c23ed2d18e87766ecd8dae6c3d8e757eca6ad7569477c8ec994402a8b0e"
|
|
117
127
|
},
|
|
118
128
|
{
|
|
119
129
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-agent-configurator.mjs",
|
|
@@ -122,8 +132,8 @@
|
|
|
122
132
|
},
|
|
123
133
|
{
|
|
124
134
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-client-account.mjs",
|
|
125
|
-
"bytes":
|
|
126
|
-
"sha256": "
|
|
135
|
+
"bytes": 8423,
|
|
136
|
+
"sha256": "6e03a05127d4dc86be6391567b51a956d1a987acf4e23f5699ce0e00c3187b7e"
|
|
127
137
|
},
|
|
128
138
|
{
|
|
129
139
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-client-core.mjs",
|
|
@@ -137,24 +147,34 @@
|
|
|
137
147
|
},
|
|
138
148
|
{
|
|
139
149
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-client-update-entry.mjs",
|
|
140
|
-
"bytes":
|
|
141
|
-
"sha256": "
|
|
150
|
+
"bytes": 1939,
|
|
151
|
+
"sha256": "d9548eacda8632976e42aafc65f0cef2ec9c5233d2d53b31b02aec0a1702b5eb"
|
|
142
152
|
},
|
|
143
153
|
{
|
|
144
154
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-client-update-runtime.mjs",
|
|
145
|
-
"bytes":
|
|
146
|
-
"sha256": "
|
|
155
|
+
"bytes": 41618,
|
|
156
|
+
"sha256": "aa233e2cdbdfadb7da6aa489591bc12c4121101b94696f93f6e6cb5d3e7c7870"
|
|
147
157
|
},
|
|
148
158
|
{
|
|
149
159
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-client-update.mjs",
|
|
150
|
-
"bytes":
|
|
151
|
-
"sha256": "
|
|
160
|
+
"bytes": 30894,
|
|
161
|
+
"sha256": "e57f7cc5e98519a014cef7cef68a97bb7e2beb33eb381c38d1751a3967904aaa"
|
|
152
162
|
},
|
|
153
163
|
{
|
|
154
164
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-contact-request-e2ee.mjs",
|
|
155
165
|
"bytes": 34163,
|
|
156
166
|
"sha256": "657664c6250d2738061e1ec2680eda6b36063c357d9e2d9c743e4218ece50895"
|
|
157
167
|
},
|
|
168
|
+
{
|
|
169
|
+
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-darwin-host.mjs",
|
|
170
|
+
"bytes": 15242,
|
|
171
|
+
"sha256": "ded97c3bc3dd65ca75305f5199a1340dffb987a5f283454d60586df8b6b55c09"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-darwin-vault.mjs",
|
|
175
|
+
"bytes": 7506,
|
|
176
|
+
"sha256": "b6094d856af016e674e4a0183a4e474397bbe92e66638743fa62fe085b554d30"
|
|
177
|
+
},
|
|
158
178
|
{
|
|
159
179
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-device-enrollment.mjs",
|
|
160
180
|
"bytes": 26664,
|
|
@@ -177,8 +197,8 @@
|
|
|
177
197
|
},
|
|
178
198
|
{
|
|
179
199
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-host-protected-store.mjs",
|
|
180
|
-
"bytes":
|
|
181
|
-
"sha256": "
|
|
200
|
+
"bytes": 127785,
|
|
201
|
+
"sha256": "10f81f4f6a5dd2fe9a742e847b2eb47dbf20f802f4414f46a05ccbc3505148e2"
|
|
182
202
|
},
|
|
183
203
|
{
|
|
184
204
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-host-transport-client.mjs",
|
|
@@ -192,8 +212,8 @@
|
|
|
192
212
|
},
|
|
193
213
|
{
|
|
194
214
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-human-confirmation-ledger.mjs",
|
|
195
|
-
"bytes":
|
|
196
|
-
"sha256": "
|
|
215
|
+
"bytes": 14416,
|
|
216
|
+
"sha256": "43b6b6baea422eb226c850f15966c907d834bc2f5aadbab6ee0c9e05445f182f"
|
|
197
217
|
},
|
|
198
218
|
{
|
|
199
219
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-human-relationship-controller.mjs",
|
|
@@ -232,8 +252,8 @@
|
|
|
232
252
|
},
|
|
233
253
|
{
|
|
234
254
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-local-data-protection.mjs",
|
|
235
|
-
"bytes":
|
|
236
|
-
"sha256": "
|
|
255
|
+
"bytes": 26663,
|
|
256
|
+
"sha256": "cea4f73ec5a31918c48bd8234e28d38ff1bb8028d2591f542b15ee12b2238e1f"
|
|
237
257
|
},
|
|
238
258
|
{
|
|
239
259
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-local-identity-trust.mjs",
|
|
@@ -277,8 +297,8 @@
|
|
|
277
297
|
},
|
|
278
298
|
{
|
|
279
299
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-native-human-confirmation-broker.mjs",
|
|
280
|
-
"bytes":
|
|
281
|
-
"sha256": "
|
|
300
|
+
"bytes": 39735,
|
|
301
|
+
"sha256": "f190c28af2703b58a685a57213b2789df7eda35d7699d718f9420cd1dddd1b65"
|
|
282
302
|
},
|
|
283
303
|
{
|
|
284
304
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-native-inbox-runtime.mjs",
|
|
@@ -307,18 +327,18 @@
|
|
|
307
327
|
},
|
|
308
328
|
{
|
|
309
329
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-installation-store.mjs",
|
|
310
|
-
"bytes":
|
|
311
|
-
"sha256": "
|
|
330
|
+
"bytes": 33232,
|
|
331
|
+
"sha256": "42ae1e7deb876a8308b7bfed6a7b891d1834117b62504fc5befe3f91a0b4c740"
|
|
312
332
|
},
|
|
313
333
|
{
|
|
314
334
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-launcher.mjs",
|
|
315
|
-
"bytes":
|
|
316
|
-
"sha256": "
|
|
335
|
+
"bytes": 29655,
|
|
336
|
+
"sha256": "d94b853a7ed1ebc9c7e9bd7c37e2405e39849fb6d4ddf3d697e17ba169eda6d2"
|
|
317
337
|
},
|
|
318
338
|
{
|
|
319
339
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-process.mjs",
|
|
320
340
|
"bytes": 225161,
|
|
321
|
-
"sha256": "
|
|
341
|
+
"sha256": "7b237a1400c604da5decbb29ab3ce556fd1b744d0cfd7d28b5560b217da120b1"
|
|
322
342
|
},
|
|
323
343
|
{
|
|
324
344
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-neutral-host-store-adapters.mjs",
|
|
@@ -332,8 +352,8 @@
|
|
|
332
352
|
},
|
|
333
353
|
{
|
|
334
354
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-platform-credential-store.mjs",
|
|
335
|
-
"bytes":
|
|
336
|
-
"sha256": "
|
|
355
|
+
"bytes": 38559,
|
|
356
|
+
"sha256": "3969708bafefc3b267bb34a9dcc115804c874ad14f4a036426d727c02ff70d42"
|
|
337
357
|
},
|
|
338
358
|
{
|
|
339
359
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-relay-client-cli.mjs",
|
|
@@ -342,8 +362,8 @@
|
|
|
342
362
|
},
|
|
343
363
|
{
|
|
344
364
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-release-retention.mjs",
|
|
345
|
-
"bytes":
|
|
346
|
-
"sha256": "
|
|
365
|
+
"bytes": 25616,
|
|
366
|
+
"sha256": "0ee150af5a9bcc1f636e3ff980ee90ce7d073ab5ed4a991920cd3472bc65529c"
|
|
347
367
|
},
|
|
348
368
|
{
|
|
349
369
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-runtime-safety.cjs",
|
|
@@ -357,8 +377,8 @@
|
|
|
357
377
|
},
|
|
358
378
|
{
|
|
359
379
|
"path": "plugins/hellolynk-codex/runtime/core/hellolynk-workbench-connection.mjs",
|
|
360
|
-
"bytes":
|
|
361
|
-
"sha256": "
|
|
380
|
+
"bytes": 14339,
|
|
381
|
+
"sha256": "6ce8e75025d31ed81c39150df2766231fc871ef18c234de986dc910bab79d639"
|
|
362
382
|
},
|
|
363
383
|
{
|
|
364
384
|
"path": "plugins/hellolynk-codex/runtime/neutral-host-bootstrap.mjs",
|
|
@@ -367,23 +387,23 @@
|
|
|
367
387
|
},
|
|
368
388
|
{
|
|
369
389
|
"path": "plugins/hellolynk-codex/runtime/neutral-host-release-entry.mjs",
|
|
370
|
-
"bytes":
|
|
371
|
-
"sha256": "
|
|
390
|
+
"bytes": 3441,
|
|
391
|
+
"sha256": "698d7e80d38353d56c7f1c337fbc676e8649d08afc726ffcb31215dc11fc8455"
|
|
372
392
|
},
|
|
373
393
|
{
|
|
374
394
|
"path": "plugins/hellolynk-codex/runtime/neutral-host-release-loader.mjs",
|
|
375
|
-
"bytes":
|
|
376
|
-
"sha256": "
|
|
395
|
+
"bytes": 7577,
|
|
396
|
+
"sha256": "283a20c6a9b90481bc03c143ab51d5289abf7b7a86fbe51fba7ea2ae1e6d2c60"
|
|
377
397
|
},
|
|
378
398
|
{
|
|
379
399
|
"path": "plugins/hellolynk-codex/runtime/neutral-host-release-manifest.json",
|
|
380
|
-
"bytes":
|
|
381
|
-
"sha256": "
|
|
400
|
+
"bytes": 14038,
|
|
401
|
+
"sha256": "7aff02867e6f806b2d20c060e4d6ba50c55ad9b23448e65e74a15aabcc99a4d5"
|
|
382
402
|
},
|
|
383
403
|
{
|
|
384
404
|
"path": "plugins/hellolynk-codex/runtime/neutral-host-release-pin.json",
|
|
385
405
|
"bytes": 146,
|
|
386
|
-
"sha256": "
|
|
406
|
+
"sha256": "e4668be2d4c5154c177b952bdf60aa487777c5475522e066b89dbde143d1fa6f"
|
|
387
407
|
},
|
|
388
408
|
{
|
|
389
409
|
"path": "plugins/hellolynk-codex/runtime/platform/windows/configure-agent.ps1",
|
|
@@ -392,8 +412,8 @@
|
|
|
392
412
|
},
|
|
393
413
|
{
|
|
394
414
|
"path": "plugins/hellolynk-codex/runtime/platform/windows/credential-store.ps1",
|
|
395
|
-
"bytes":
|
|
396
|
-
"sha256": "
|
|
415
|
+
"bytes": 40188,
|
|
416
|
+
"sha256": "8f288c91a1f6ecaf2651baab9bdfc55014c11ea9e165f203ca7a69f4d47d7917"
|
|
397
417
|
},
|
|
398
418
|
{
|
|
399
419
|
"path": "plugins/hellolynk-codex/runtime/platform/windows/hellolynk-host-protected-store.ps1",
|
|
@@ -552,8 +572,8 @@
|
|
|
552
572
|
},
|
|
553
573
|
{
|
|
554
574
|
"path": "plugins/hellolynk-codex/server/codex-neutral-production.mjs",
|
|
555
|
-
"bytes":
|
|
556
|
-
"sha256": "
|
|
575
|
+
"bytes": 27551,
|
|
576
|
+
"sha256": "e1106264be25cd79fc12f1b774726089eead0f7e237aff231cd739f40e0c1f40"
|
|
557
577
|
},
|
|
558
578
|
{
|
|
559
579
|
"path": "plugins/hellolynk-codex/server/mcp-proxy.mjs",
|
|
@@ -612,8 +632,8 @@
|
|
|
612
632
|
},
|
|
613
633
|
{
|
|
614
634
|
"path": "tools/hellolynk-activate-neutral-host-clients.mjs",
|
|
615
|
-
"bytes":
|
|
616
|
-
"sha256": "
|
|
635
|
+
"bytes": 34020,
|
|
636
|
+
"sha256": "6d838bd1a53a0567ff451adb8b46c3002b3ef092f1af4062b2b8c2b16eaa19cf"
|
|
617
637
|
}
|
|
618
638
|
]
|
|
619
639
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hellolynk-ai/codex-plugin",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.103",
|
|
4
4
|
"description": "HelloLynk Messaging for Codex: open conversations and let your AI message other people's AI assistants.",
|
|
5
5
|
"homepage": "https://hellolynk.com",
|
|
6
6
|
"repository": {
|
|
@@ -68,7 +68,7 @@ export function withClientAccountLock(client, root, operation) {
|
|
|
68
68
|
|
|
69
69
|
export function createClientAccountActions(options) {
|
|
70
70
|
const client = options?.client;
|
|
71
|
-
const root = options?.storeRoot || defaultNeutralHostStoreRoot(
|
|
71
|
+
const root = options?.storeRoot || defaultNeutralHostStoreRoot(process.platform, options?.env || process.env);
|
|
72
72
|
statePath(client, clientAccountBaseRoot(root));
|
|
73
73
|
const readAccountState = () => {
|
|
74
74
|
const state = readClientAccount(client, root);
|