@lousy-agents/mcp 5.22.11 → 5.22.12

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.
Files changed (2) hide show
  1. package/dist/mcp-server.js +60 -24
  2. package/package.json +1 -1
@@ -6559,7 +6559,7 @@ function escapeJsonPtr(str) {
6559
6559
 
6560
6560
 
6561
6561
  },
6562
- 7046(__unused_rspack_module, __unused_rspack___webpack_exports__, __webpack_require__) {
6562
+ 8363(__unused_rspack_module, __unused_rspack___webpack_exports__, __webpack_require__) {
6563
6563
  // NAMESPACE OBJECT: ../../node_modules/micromark/lib/constructs.js
6564
6564
  var constructs_namespaceObject = {};
6565
6565
  __webpack_require__.r(constructs_namespaceObject);
@@ -38347,6 +38347,39 @@ async function transferFileHandleCore(source, target, sizeHint, maxBytes, target
38347
38347
  }
38348
38348
  }
38349
38349
 
38350
+ // EXTERNAL MODULE: external "node:os"
38351
+ var external_node_os_ = __webpack_require__(8161);
38352
+ ;// CONCATENATED MODULE: ../../node_modules/@openclaw/fs-safe/dist/error-detail.js
38353
+
38354
+
38355
+ const UNSAFE_ERROR_DETAIL_CHARACTERS = /[\u0000-\u001f\u007f-\u009f\u2028\u2029]/gu;
38356
+ function formatErrorDetail(value) {
38357
+ return value.replace(UNSAFE_ERROR_DETAIL_CHARACTERS, (character) => `\\u${character.charCodeAt(0).toString(16).padStart(4, "0")}`);
38358
+ }
38359
+ function shortPath(value) {
38360
+ const home = external_node_os_.homedir();
38361
+ const prefix = home.endsWith(external_node_path_.sep) ? home : `${home}${external_node_path_.sep}`;
38362
+ const shortened = value === home ? "~"
38363
+ : value.startsWith(prefix) ? `~${external_node_path_.sep}${value.slice(prefix.length)}` : value;
38364
+ return formatErrorDetail(shortened);
38365
+ }
38366
+
38367
+ ;// CONCATENATED MODULE: ../../node_modules/@openclaw/fs-safe/dist/file-open-error.js
38368
+
38369
+ /** Enrich only an attempted open whose absolute pathname is known by its owner. */
38370
+ function annotateReadOnlyOpenError(error, filePath) {
38371
+ if (!(error instanceof Error) || error.code !== "EROFS")
38372
+ return;
38373
+ // Keep the original error, code and errno, even if a caller froze its diagnostics.
38374
+ try {
38375
+ const failure = error;
38376
+ failure.path = filePath;
38377
+ failure.syscall = "open";
38378
+ failure.message = `EROFS: read-only filesystem, open '${formatErrorDetail(filePath)}'`;
38379
+ }
38380
+ catch { /* Diagnostics must not replace the I/O failure. */ }
38381
+ }
38382
+
38350
38383
  ;// CONCATENATED MODULE: ../../node_modules/@openclaw/fs-safe/dist/copy-file-input.js
38351
38384
 
38352
38385
 
@@ -38355,6 +38388,7 @@ async function transferFileHandleCore(source, target, sizeHint, maxBytes, target
38355
38388
 
38356
38389
 
38357
38390
 
38391
+
38358
38392
  function resolveFileCopyCloneMode(mode) {
38359
38393
  const clone = resolveCopyCloneMode(mode, "never");
38360
38394
  if (clone === "always" && !native_getNativeBinding()?.copyFileExclusive) {
@@ -38377,7 +38411,7 @@ async function writeCopyFileToFd(fd, input, maxBytes, assertBeforeMutation) {
38377
38411
  maxBytes, sizeHint: input.size, signal: input.signal, assertBeforeMutation,
38378
38412
  });
38379
38413
  }
38380
- async function createNativeCopyFile(native, input, parentFd, basename, maxBytes) {
38414
+ async function createNativeCopyFile(native, input, parentFd, basename, maxBytes, targetPath) {
38381
38415
  input.signal?.throwIfAborted();
38382
38416
  const copier = selectNativeBinding(native, "copyFileExclusive");
38383
38417
  if (!copier) {
@@ -38393,6 +38427,7 @@ async function createNativeCopyFile(native, input, parentFd, basename, maxBytes)
38393
38427
  return await copier.copyFileExclusive(input.handle.fd, parentFd, basename, input.clone, maxBytes !== undefined && Number.isFinite(maxBytes) ? maxBytes : undefined, nativeSignal);
38394
38428
  }
38395
38429
  catch (error) {
38430
+ annotateReadOnlyOpenError(error, targetPath);
38396
38431
  const code = error?.code;
38397
38432
  if (code === "Cancelled" || code === "ABORT_ERR")
38398
38433
  input.signal?.throwIfAborted();
@@ -39096,8 +39131,6 @@ function errorCauseOptions(error) {
39096
39131
  return { cause: error instanceof Error ? error : undefined };
39097
39132
  }
39098
39133
 
39099
- // EXTERNAL MODULE: external "node:os"
39100
- var external_node_os_ = __webpack_require__(8161);
39101
39134
  ;// CONCATENATED MODULE: ../../node_modules/@openclaw/fs-safe/dist/windows-appcontainer.js
39102
39135
 
39103
39136
 
@@ -40861,21 +40894,6 @@ function __resetNativeFallbackWarningsForTest() {
40861
40894
  var external_node_child_process_ = __webpack_require__(1421);
40862
40895
  // EXTERNAL MODULE: external "node:url"
40863
40896
  var external_node_url_ = __webpack_require__(3136);
40864
- ;// CONCATENATED MODULE: ../../node_modules/@openclaw/fs-safe/dist/error-detail.js
40865
-
40866
-
40867
- const UNSAFE_ERROR_DETAIL_CHARACTERS = /[\u0000-\u001f\u007f-\u009f\u2028\u2029]/gu;
40868
- function formatErrorDetail(value) {
40869
- return value.replace(UNSAFE_ERROR_DETAIL_CHARACTERS, (character) => `\\u${character.charCodeAt(0).toString(16).padStart(4, "0")}`);
40870
- }
40871
- function shortPath(value) {
40872
- const home = external_node_os_.homedir();
40873
- const prefix = home.endsWith(external_node_path_.sep) ? home : `${home}${external_node_path_.sep}`;
40874
- const shortened = value === home ? "~"
40875
- : value.startsWith(prefix) ? `~${external_node_path_.sep}${value.slice(prefix.length)}` : value;
40876
- return formatErrorDetail(shortened);
40877
- }
40878
-
40879
40897
  ;// CONCATENATED MODULE: ../../node_modules/@openclaw/fs-safe/dist/permission-exec.js
40880
40898
 
40881
40899
 
@@ -47073,6 +47091,7 @@ var root_create_native_disposeResources = (undefined && undefined.__disposeResou
47073
47091
 
47074
47092
 
47075
47093
 
47094
+
47076
47095
 
47077
47096
 
47078
47097
  function rootWriteQueueKey(root, relativePath) {
@@ -47483,6 +47502,7 @@ async function tryOpenCreateRootNative(params) {
47483
47502
  catch (error) {
47484
47503
  if (hasNodeErrorCode(error, "EEXIST") && typeof error === "object" && error !== null)
47485
47504
  nativeCreateCollisions.add(error);
47505
+ annotateReadOnlyOpenError(error, params.target);
47486
47506
  throw error;
47487
47507
  }
47488
47508
  let rawOpen = true;
@@ -49542,6 +49562,7 @@ function syncFileBestEffortSync(fd, fsModule = external_node_fs_) {
49542
49562
 
49543
49563
 
49544
49564
 
49565
+
49545
49566
  function nativeOpenFlags(flags) {
49546
49567
  const closeOnExec = external_node_fs_.constants.O_CLOEXEC;
49547
49568
  return (flags |
@@ -49594,6 +49615,7 @@ async function createNativeExclusiveFile(targetPath, mode) {
49594
49615
  if (process.platform === "win32" && openError.code === "EPERM") {
49595
49616
  openError.path = targetPath;
49596
49617
  }
49618
+ annotateReadOnlyOpenError(error, targetPath);
49597
49619
  throw error;
49598
49620
  }
49599
49621
  fd = opened.fd;
@@ -49833,6 +49855,7 @@ async function settleStagedFile(params) {
49833
49855
 
49834
49856
 
49835
49857
 
49858
+
49836
49859
 
49837
49860
 
49838
49861
  function closeWriteFd(closeFd, fd) {
@@ -49899,7 +49922,7 @@ async function runPinnedWriteWindows(binding, params, root, parentFd, parentGuar
49899
49922
  tempName = `.fs-safe-${(0,external_node_crypto_.randomUUID)()}.tmp`;
49900
49923
  params.assertBeforeMutation?.();
49901
49924
  const copied = params.input.kind === "file" && !params.private
49902
- ? await createNativeCopyFile(binding, params.input, parentFd, tempName, params.maxBytes)
49925
+ ? await createNativeCopyFile(binding, params.input, parentFd, tempName, params.maxBytes, external_node_path_.join(parentPath, tempName))
49903
49926
  : undefined;
49904
49927
  if (params.private) {
49905
49928
  const parentIdentity = external_node_fs_.fstatSync(parentFd, { bigint: true });
@@ -49918,7 +49941,13 @@ async function runPinnedWriteWindows(binding, params, root, parentFd, parentGuar
49918
49941
  tempFd = copied.fd;
49919
49942
  }
49920
49943
  else {
49921
- tempFd = binding.openBeneath(parentFd, tempName, nativeOpenFlags(external_node_fs_.constants.O_WRONLY | external_node_fs_.constants.O_CREAT | external_node_fs_.constants.O_EXCL)).fd;
49944
+ try {
49945
+ tempFd = binding.openBeneath(parentFd, tempName, nativeOpenFlags(external_node_fs_.constants.O_WRONLY | external_node_fs_.constants.O_CREAT | external_node_fs_.constants.O_EXCL)).fd;
49946
+ }
49947
+ catch (error) {
49948
+ annotateReadOnlyOpenError(error, external_node_path_.join(parentPath, tempName));
49949
+ throw error;
49950
+ }
49922
49951
  }
49923
49952
  const verificationIdentity = strict_file_identity_inspectFileIdentitySync(() => external_node_fs_.fstatSync(tempFd, { bigint: true }));
49924
49953
  tempIdentity = verificationIdentity;
@@ -50188,6 +50217,7 @@ var native_staged_file_disposeResources = (undefined && undefined.__disposeResou
50188
50217
 
50189
50218
 
50190
50219
 
50220
+
50191
50221
  function assertNativeStaging(binding) {
50192
50222
  if ([
50193
50223
  binding.closeOwnedFd,
@@ -50397,14 +50427,20 @@ class NativeStagedFile {
50397
50427
  assertDarwinCreationAcl(this.#owner.parentFd, "file");
50398
50428
  // Native copying populates its new file before returning its descriptor.
50399
50429
  const copied = input.kind === "file" && !this.#verifyMode
50400
- ? await createNativeCopyFile(this.#owner.binding, input, this.#owner.parentFd, this.#owner.name, maxBytes)
50430
+ ? await createNativeCopyFile(this.#owner.binding, input, this.#owner.parentFd, this.#owner.name, maxBytes, external_node_path_.join(this.#owner.directory.realPath, this.#owner.name))
50401
50431
  : undefined;
50402
50432
  state.fileFd = copied?.fd;
50403
50433
  if (state.fileFd === undefined) {
50404
50434
  this.#assertBeforeMutation?.();
50405
50435
  if (this.#private)
50406
50436
  assertDarwinCreationAcl(this.#owner.parentFd, "file");
50407
- state.fileFd = this.#owner.binding.createStagedFile(this.#owner.parentFd, this.#owner.name);
50437
+ try {
50438
+ state.fileFd = this.#owner.binding.createStagedFile(this.#owner.parentFd, this.#owner.name);
50439
+ }
50440
+ catch (error) {
50441
+ annotateReadOnlyOpenError(error, external_node_path_.join(this.#owner.directory.realPath, this.#owner.name));
50442
+ throw error;
50443
+ }
50408
50444
  }
50409
50445
  const fd = state.fileFd;
50410
50446
  if (input.kind === "file")
@@ -108714,4 +108750,4 @@ if (installedChunkData !== 0) { // 0 means "already installed".'
108714
108750
  // module factories are used so entry inlining is disabled
108715
108751
  // startup
108716
108752
  // Load entry module and return exports
108717
- var __webpack_exports__ = __webpack_require__(7046);
108753
+ var __webpack_exports__ = __webpack_require__(8363);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lousy-agents/mcp",
3
- "version": "5.22.11",
3
+ "version": "5.22.12",
4
4
  "description": "MCP server for lousy-agents - provides AI coding assistant tools via the Model Context Protocol",
5
5
  "type": "module",
6
6
  "repository": {