flower-trellis 0.6.10 → 0.6.11
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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flower-trellis",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.11",
|
|
4
4
|
"description": "一键安装/升级 Trellis 并自动融合 skill-garden 强化包(默认 Claude + agents)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -70,9 +70,9 @@
|
|
|
70
70
|
"commit-and-tag-version": "^12.7.3"
|
|
71
71
|
},
|
|
72
72
|
"flowerReleaseNotes": {
|
|
73
|
-
"version": "0.6.
|
|
73
|
+
"version": "0.6.11",
|
|
74
74
|
"source": "CHANGELOG.md",
|
|
75
|
-
"body": "###
|
|
75
|
+
"body": "### 🐛 修复 Bug Fixes\n\n* **telemetry:** 修复 Windows 遥测锁释放时的读取竞争 ([ce05278](https://github.com/SilentFlower/flower-trellis/commit/ce05278ae1f6e9e3bc73cb57819f8c254da1f436))",
|
|
76
76
|
"truncated": false
|
|
77
77
|
},
|
|
78
78
|
"optionalDependencies": {
|
|
@@ -93,10 +93,19 @@ export function withTelemetryLock(callback, options = {}) {
|
|
|
93
93
|
} catch (error) {
|
|
94
94
|
if (error.code !== "EEXIST") throw error;
|
|
95
95
|
let stat;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
let owner;
|
|
97
|
+
try {
|
|
98
|
+
stat = fs.lstatSync(lock);
|
|
99
|
+
if (!stat.isDirectory() || stat.isSymbolicLink()) throw new Error("遥测锁无效");
|
|
100
|
+
owner = readTelemetryJson(path.join(lock, "owner.json"));
|
|
101
|
+
} catch (failure) {
|
|
102
|
+
if (!["ENOENT", "EPERM", "EACCES"].includes(failure.code)) throw failure;
|
|
103
|
+
// Windows 删除中的竞争锁可能暂时拒绝读取;仅在原预算内重试,重新取得锁前不写状态。
|
|
104
|
+
const remaining = deadline - Date.now();
|
|
105
|
+
if (remaining <= 0) throw new Error("遥测锁繁忙");
|
|
106
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, Math.min(10, remaining));
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
100
109
|
let dead = false;
|
|
101
110
|
if (Number.isSafeInteger(owner?.pid) && owner.pid > 0) {
|
|
102
111
|
try { process.kill(owner.pid, 0); } catch (failure) { dead = failure.code === "ESRCH"; }
|