cicy-desktop 2.1.175 → 2.1.176
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/package.json +1 -1
- package/src/sidecar/cicy-code.js +2 -8
- package/src/sidecar/native.js +2 -4
- package/src/sidecar/runtime.js +11 -46
package/package.json
CHANGED
package/src/sidecar/cicy-code.js
CHANGED
|
@@ -82,12 +82,6 @@ async function startFromRuntime({ logPath, port }) {
|
|
|
82
82
|
CICY_CODE_PORT: String(port),
|
|
83
83
|
PORT: String(port),
|
|
84
84
|
};
|
|
85
|
-
if (process.platform === "win32") {
|
|
86
|
-
try {
|
|
87
|
-
const msys = runtime.binPath("msys2") || runtime.ensureFromBundle("msys2");
|
|
88
|
-
if (msys) env.CICY_MSYS_ROOT = msys; // w-10084 exe 探测约定
|
|
89
|
-
} catch {}
|
|
90
|
-
}
|
|
91
85
|
const c = spawn(exe, ["--desktop"], { stdio, detached: false, windowsHide: true, env });
|
|
92
86
|
console.log(`[cicy-code-sidecar] spawned runtime ${exe} --desktop (v${runtime.currentVersion("cicy-code")}) pid=${c.pid} port=${port}`);
|
|
93
87
|
c.on("exit", (code, signal) => {
|
|
@@ -141,8 +135,8 @@ async function start({ logPath, port = DEFAULT_PORT, force = false, version = nu
|
|
|
141
135
|
PORT: String(port),
|
|
142
136
|
};
|
|
143
137
|
// --helper removed (主人指令): Windows now runs cicy-code in normal mode (full
|
|
144
|
-
// tmux-based multi-agent
|
|
145
|
-
//
|
|
138
|
+
// tmux-based multi-agent), same as mac/linux — no longer the single headless
|
|
139
|
+
// 团队助手.
|
|
146
140
|
const args = ["--desktop"];
|
|
147
141
|
child = spawn(exe, args, { stdio, detached: false, windowsHide: true, env });
|
|
148
142
|
console.log(`[cicy-code-sidecar] spawned ${exe} ${args.join(" ")} pid=${child.pid} port=${port} log=${logPath || "(none)"}`);
|
package/src/sidecar/native.js
CHANGED
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
// WSL. (2026-06 方向变更: the Docker route in docker.js is transitional and
|
|
3
3
|
// being retired; this module replaces it once stable.)
|
|
4
4
|
//
|
|
5
|
-
// The exe is a native Go build (w-10084's line).
|
|
6
|
-
//
|
|
7
|
-
// CICY_MSYS_ROOT probing — nothing to do here beyond optionally passing the
|
|
8
|
-
// env through. Known exe-side behaviors we rely on:
|
|
5
|
+
// The exe is a native Go build (w-10084's line). Known exe-side behaviors we
|
|
6
|
+
// rely on:
|
|
9
7
|
// - reads PORT / CICY_CODE_PORT for the listen port
|
|
10
8
|
// - missing optional deps degrade to warnings (never os.Exit)
|
|
11
9
|
// - cold tmux-server start may need ConPTY (w-10084's ensureTmuxServer, WIP)
|
package/src/sidecar/runtime.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
// Runtime Bundle v1 — versioned component store for everything cicy-desktop
|
|
2
|
-
// runs locally (cicy-code, mihomo
|
|
2
|
+
// runs locally (cicy-code, mihomo).
|
|
3
3
|
//
|
|
4
4
|
// Layout:
|
|
5
5
|
// ~/cicy-ai/runtime/
|
|
6
6
|
// versions.json { "<comp>": { "current": "<ver>" }, ... }
|
|
7
7
|
// cicy-code/<ver>/cicy-code(.exe)
|
|
8
8
|
// mihomo/<ver>/mihomo(.exe)
|
|
9
|
-
// msys2/<ver>/usr/bin/bash.exe (win32 only, directory component)
|
|
10
9
|
//
|
|
11
10
|
// Sourcing order:
|
|
12
11
|
// 1. first run: copy out of cicy-desktop's own node_modules — the platform
|
|
@@ -32,8 +31,8 @@ const IS_WIN = process.platform === "win32";
|
|
|
32
31
|
|
|
33
32
|
// npm subpackage platform suffix. NOTE: Windows is "windows" not "win32" —
|
|
34
33
|
// npm's spam filter 403s NEW package names containing 'win32', so EVERY cicy
|
|
35
|
-
// subpackage (code/mihomo
|
|
36
|
-
//
|
|
34
|
+
// subpackage (code/mihomo) is published as *-windows-*. This must match the
|
|
35
|
+
// published names exactly or both the bundled-dir lookup AND the npm-pull
|
|
37
36
|
// fallback fail (a 404 that stranded first start on Windows).
|
|
38
37
|
function plat() {
|
|
39
38
|
const osStr = IS_WIN ? "windows" : process.platform === "darwin" ? "darwin" : "linux";
|
|
@@ -42,7 +41,6 @@ function plat() {
|
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
// kind "bin": single executable at the package root.
|
|
45
|
-
// kind "dir": a directory tree (msys2) — `check` is the file proving it's intact.
|
|
46
44
|
const COMPONENTS = {
|
|
47
45
|
"cicy-code": {
|
|
48
46
|
kind: "bin",
|
|
@@ -54,12 +52,6 @@ const COMPONENTS = {
|
|
|
54
52
|
pkg: () => `cicy-mihomo-${plat()}`,
|
|
55
53
|
bin: () => (IS_WIN ? "mihomo.exe" : "mihomo"),
|
|
56
54
|
},
|
|
57
|
-
"msys2": {
|
|
58
|
-
kind: "dir",
|
|
59
|
-
winOnly: true,
|
|
60
|
-
pkg: () => "cicy-msys2-windows-x64",
|
|
61
|
-
check: path.join("usr", "bin", "bash.exe"),
|
|
62
|
-
},
|
|
63
55
|
};
|
|
64
56
|
|
|
65
57
|
function readVersions() {
|
|
@@ -83,19 +75,13 @@ function versionDir(comp, ver) {
|
|
|
83
75
|
return path.join(RUNTIME_DIR, comp, ver);
|
|
84
76
|
}
|
|
85
77
|
|
|
86
|
-
// Absolute path of the component's current
|
|
87
|
-
// components, the root dir for "dir" components. null when not installed.
|
|
78
|
+
// Absolute path of the component's current executable. null when not installed.
|
|
88
79
|
function binPath(comp) {
|
|
89
80
|
const c = COMPONENTS[comp];
|
|
90
81
|
const ver = currentVersion(comp);
|
|
91
82
|
if (!c || !ver) return null;
|
|
92
|
-
const p =
|
|
93
|
-
|
|
94
|
-
return fs.existsSync(probe) ? p : null;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
function cpDirSync(src, dst) {
|
|
98
|
-
fs.cpSync(src, dst, { recursive: true });
|
|
83
|
+
const p = path.join(versionDir(comp, ver), c.bin());
|
|
84
|
+
return fs.existsSync(p) ? p : null;
|
|
99
85
|
}
|
|
100
86
|
|
|
101
87
|
// Install a payload directory as <comp>@<ver> and return the version dir.
|
|
@@ -108,31 +94,10 @@ function installPayload(comp, ver, payloadDir) {
|
|
|
108
94
|
const staging = dst + ".staging";
|
|
109
95
|
fs.rmSync(staging, { recursive: true, force: true });
|
|
110
96
|
fs.mkdirSync(staging, { recursive: true });
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const tgz = (() => { try { return fs.readdirSync(payloadDir).find((f) => /\.tar\.gz$/i.test(f)); } catch { return null; } })();
|
|
116
|
-
if (tgz) {
|
|
117
|
-
require("child_process").execFileSync("tar", ["-xzf", path.join(payloadDir, tgz), "-C", staging], { windowsHide: true });
|
|
118
|
-
} else {
|
|
119
|
-
cpDirSync(payloadDir, staging);
|
|
120
|
-
}
|
|
121
|
-
if (!fs.existsSync(path.join(staging, c.check))) {
|
|
122
|
-
// the tree may be nested one level (package/msys64/usr/... or root/usr/...)
|
|
123
|
-
const sub = fs.readdirSync(staging).find((d) =>
|
|
124
|
-
fs.existsSync(path.join(staging, d, c.check)));
|
|
125
|
-
if (!sub) { fs.rmSync(staging, { recursive: true, force: true }); throw new Error(`${comp}: ${c.check} missing in package`); }
|
|
126
|
-
fs.renameSync(path.join(staging, sub), staging + ".inner");
|
|
127
|
-
fs.rmSync(staging, { recursive: true, force: true });
|
|
128
|
-
fs.renameSync(staging + ".inner", staging);
|
|
129
|
-
}
|
|
130
|
-
} else {
|
|
131
|
-
const src = path.join(payloadDir, c.bin());
|
|
132
|
-
if (!fs.existsSync(src)) { fs.rmSync(staging, { recursive: true, force: true }); throw new Error(`${comp}: ${c.bin()} missing in package`); }
|
|
133
|
-
fs.copyFileSync(src, path.join(staging, c.bin()));
|
|
134
|
-
if (!IS_WIN) fs.chmodSync(path.join(staging, c.bin()), 0o755);
|
|
135
|
-
}
|
|
97
|
+
const src = path.join(payloadDir, c.bin());
|
|
98
|
+
if (!fs.existsSync(src)) { fs.rmSync(staging, { recursive: true, force: true }); throw new Error(`${comp}: ${c.bin()} missing in package`); }
|
|
99
|
+
fs.copyFileSync(src, path.join(staging, c.bin()));
|
|
100
|
+
if (!IS_WIN) fs.chmodSync(path.join(staging, c.bin()), 0o755);
|
|
136
101
|
fs.renameSync(staging, dst);
|
|
137
102
|
return dst;
|
|
138
103
|
}
|
|
@@ -175,7 +140,7 @@ function bundledPkgDir(comp) {
|
|
|
175
140
|
// sourcing from the bundled subpackage. Never touches the network.
|
|
176
141
|
function ensureFromBundle(comp) {
|
|
177
142
|
const c = COMPONENTS[comp];
|
|
178
|
-
if (!c
|
|
143
|
+
if (!c) return null;
|
|
179
144
|
const existing = binPath(comp);
|
|
180
145
|
if (existing) return existing;
|
|
181
146
|
const pkgDir = bundledPkgDir(comp);
|