@cairnkeep/cli 2.15.0 → 2.15.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/CHANGELOG.md +12 -1
- package/docs/learning/CURRICULUM-MAP.md +1 -1
- package/docs/learning/FEATURE-GUIDE.md +1 -1
- package/docs/learning/lessons/L00-why-cairnkeep.md +1 -1
- package/docs/learning/lessons/L01-safe-trial.md +1 -1
- package/docs/learning/lessons/L02-installation.md +1 -1
- package/docs/learning/lessons/L03-first-project.md +1 -1
- package/docs/learning/lessons/L19-validated-skill-improvement.md +1 -1
- package/docs/learning/lessons/L20-mcp-tool-profiles.md +1 -1
- package/docs/learning/lessons/L21-context-packs.md +1 -1
- package/docs/learning/lessons/L22-native-windows.md +1 -1
- package/docs/learning/lessons/L23-guided-setup.md +1 -1
- package/docs/learning/lessons/L24-okf-exchange.md +1 -1
- package/docs/learning/lessons/L25-playbooks.md +1 -1
- package/examples/eval/bundled-fake.json +1 -1
- package/mcp-memory-server/dist/playbook.js +17 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@ All notable user-facing changes are documented here. This project follows
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [2.15.1] - 2026-08-17
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Make concurrent playbook policy updates tolerate lock handoff races,
|
|
13
|
+
including transient Windows directory-removal errors, while retaining
|
|
14
|
+
fail-closed validation for unsafe lock objects.
|
|
15
|
+
- Strengthen the playbook concurrency regression with repeated mixed profile
|
|
16
|
+
and reset operations across the supported Node and Windows CI matrix.
|
|
17
|
+
|
|
8
18
|
## [2.15.0] - 2026-08-17
|
|
9
19
|
|
|
10
20
|
### Added
|
|
@@ -398,7 +408,8 @@ stored memories.
|
|
|
398
408
|
- Preserve executable permissions and Bash 3.2 portability on macOS.
|
|
399
409
|
- Add backup-first uninstall and SQLite-safe memory export/import guidance.
|
|
400
410
|
|
|
401
|
-
[Unreleased]: https://github.com/cairnkeep/cairnkeep/compare/v2.15.
|
|
411
|
+
[Unreleased]: https://github.com/cairnkeep/cairnkeep/compare/v2.15.1...HEAD
|
|
412
|
+
[2.15.1]: https://github.com/cairnkeep/cairnkeep/compare/v2.15.0...v2.15.1
|
|
402
413
|
[2.15.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.14.0...v2.15.0
|
|
403
414
|
[2.14.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.13.1...v2.14.0
|
|
404
415
|
[2.13.1]: https://github.com/cairnkeep/cairnkeep/compare/v2.13.0...v2.13.1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"identifier":"cairn-offline-fake-v1","package_version":"2.15.
|
|
1
|
+
{"identifier":"cairn-offline-fake-v1","package_version":"2.15.1","schema_version":1,"task_set_digest":"13e95379f35839593047ec34521a65a8fa3ab92bd3993bca9dc8bf5c4a9ff36f"}
|
|
@@ -187,11 +187,24 @@ async function acquireLock(lock) {
|
|
|
187
187
|
return () => rm(lock, { recursive: true, force: true });
|
|
188
188
|
}
|
|
189
189
|
catch (error) {
|
|
190
|
-
|
|
190
|
+
const code = error.code;
|
|
191
|
+
if (code !== "EEXIST" && !(process.platform === "win32" && code === "EPERM"))
|
|
191
192
|
throw error;
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
try {
|
|
194
|
+
const info = await lstat(lock);
|
|
195
|
+
if (!info.isDirectory() || info.isSymbolicLink())
|
|
196
|
+
throw new Error("Playbook configuration lock is unsafe.");
|
|
197
|
+
}
|
|
198
|
+
catch (inspectionError) {
|
|
199
|
+
const inspectionCode = inspectionError.code;
|
|
200
|
+
if (inspectionCode === "ENOENT")
|
|
201
|
+
continue;
|
|
202
|
+
if (process.platform === "win32" && (inspectionCode === "EPERM" || inspectionCode === "EBUSY")) {
|
|
203
|
+
await delay(LOCK_WAIT_MS);
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
throw inspectionError;
|
|
207
|
+
}
|
|
195
208
|
await delay(LOCK_WAIT_MS);
|
|
196
209
|
}
|
|
197
210
|
}
|