claudemesh-cli 0.8.3 → 0.8.4

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/index.js +20 -7
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -47880,6 +47880,12 @@ class BrokerClient {
47880
47880
  getSessionSecretKey() {
47881
47881
  return this.sessionSecretKey;
47882
47882
  }
47883
+ getMeshPubkey() {
47884
+ return this.mesh.pubkey;
47885
+ }
47886
+ getMeshSecretKey() {
47887
+ return this.mesh.secretKey;
47888
+ }
47883
47889
  makeReqId() {
47884
47890
  return Math.random().toString(36).slice(2) + Date.now().toString(36);
47885
47891
  }
@@ -51002,18 +51008,25 @@ ${lines.join(`
51002
51008
  if (!client2)
51003
51009
  return text("vault_set: not connected", true);
51004
51010
  const entryType = vType ?? "env";
51005
- let plaintext = value;
51011
+ let plaintextBytes;
51006
51012
  if (entryType === "file") {
51007
51013
  const { existsSync: existsSync2, readFileSync: readFileSync2 } = await import("node:fs");
51008
51014
  if (!existsSync2(value))
51009
51015
  return text(`vault_set: file not found: ${value}`, true);
51010
- plaintext = readFileSync2(value, "base64");
51011
- }
51012
- const encoded = Buffer.from(plaintext).toString("base64");
51013
- const ok = await client2.vaultSet(key, encoded, "placeholder-nonce", "placeholder-sealed", entryType, mount_path, description);
51016
+ plaintextBytes = new Uint8Array(readFileSync2(value));
51017
+ } else {
51018
+ plaintextBytes = new TextEncoder().encode(value);
51019
+ }
51020
+ const { encryptFile: encryptFile2, sealKeyForPeer: sealKeyForPeer2 } = await Promise.resolve().then(() => (init_file_crypto(), exports_file_crypto));
51021
+ const { ciphertext, nonce, key: kf } = await encryptFile2(plaintextBytes);
51022
+ const sealedKey = await sealKeyForPeer2(kf, client2.getMeshPubkey());
51023
+ const { ensureSodium: ensureSodium2 } = await Promise.resolve().then(() => (init_keypair(), exports_keypair));
51024
+ const sodium2 = await ensureSodium2();
51025
+ const ciphertextB64 = sodium2.to_base64(ciphertext, sodium2.base64_variants.ORIGINAL);
51026
+ const ok = await client2.vaultSet(key, ciphertextB64, nonce, sealedKey, entryType, mount_path, description);
51014
51027
  if (!ok)
51015
51028
  return text("vault_set: broker did not acknowledge", true);
51016
- return text(`Vault entry "${key}" stored (${entryType}).`);
51029
+ return text(`Vault entry "${key}" stored (${entryType}, E2E encrypted).`);
51017
51030
  }
51018
51031
  case "vault_list": {
51019
51032
  const client2 = allClients()[0];
@@ -52522,7 +52535,7 @@ init_config();
52522
52535
  // package.json
52523
52536
  var package_default = {
52524
52537
  name: "claudemesh-cli",
52525
- version: "0.8.3",
52538
+ version: "0.8.4",
52526
52539
  description: "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.",
52527
52540
  keywords: [
52528
52541
  "claude-code",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudemesh-cli",
3
- "version": "0.8.3",
3
+ "version": "0.8.4",
4
4
  "description": "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -48,10 +48,10 @@
48
48
  "prettier": "3.6.2",
49
49
  "typescript": "5.9.3",
50
50
  "vitest": "4.0.14",
51
+ "@turbostarter/vitest-config": "0.1.0",
51
52
  "@turbostarter/tsconfig": "0.1.0",
52
53
  "@turbostarter/prettier-config": "0.1.0",
53
- "@turbostarter/eslint-config": "0.1.0",
54
- "@turbostarter/vitest-config": "0.1.0"
54
+ "@turbostarter/eslint-config": "0.1.0"
55
55
  },
56
56
  "scripts": {
57
57
  "build": "bun build src/index.ts --target=node --outfile dist/index.js --banner \"#!/usr/bin/env node\" && chmod +x dist/index.js",