@masstensor/anotify 0.5.12 → 0.5.13
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/dist/src/vault.js +18 -11
- package/dist/src/vault.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/src/vault.js
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
2
|
import { createCipheriv, createDecipheriv, randomBytes, randomUUID } from 'node:crypto';
|
|
3
3
|
import { mkdirSync, readFileSync, writeFileSync, existsSync, chmodSync, renameSync, rmSync } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
import { hash } from './protocol.js';
|
|
6
|
+
export function keychainKey(account, run = args => spawnSync('/usr/bin/security', args, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] })) {
|
|
7
|
+
const found = run(['find-generic-password', '-s', 'app.agentnotify.v1', '-a', account, '-w']);
|
|
8
|
+
if (found.status === 0) {
|
|
9
|
+
const key = Buffer.from(String(found.stdout ?? '').trim(), 'base64url');
|
|
10
|
+
if (key.length !== 32)
|
|
11
|
+
throw new Error('Agent Notify Keychain entry is invalid. Do not remove it; contact support.');
|
|
12
|
+
return key;
|
|
13
|
+
}
|
|
14
|
+
if (found.status !== 44)
|
|
15
|
+
throw new Error('Cannot access the macOS login Keychain. Unlock it and retry.');
|
|
16
|
+
const key = randomBytes(32);
|
|
17
|
+
const added = run(['add-generic-password', '-s', 'app.agentnotify.v1', '-a', account, '-w', key.toString('base64url')]);
|
|
18
|
+
if (added.status !== 0)
|
|
19
|
+
throw new Error('Cannot save the Agent Notify key in the macOS login Keychain. Unlock it and retry.');
|
|
20
|
+
return key;
|
|
21
|
+
}
|
|
6
22
|
export class Vault {
|
|
7
23
|
dir;
|
|
8
24
|
key;
|
|
@@ -23,16 +39,7 @@ export class Vault {
|
|
|
23
39
|
}
|
|
24
40
|
if (process.platform !== 'darwin')
|
|
25
41
|
throw new Error('Default secret storage requires macOS Keychain');
|
|
26
|
-
|
|
27
|
-
let stored;
|
|
28
|
-
try {
|
|
29
|
-
stored = execFileSync('/usr/bin/security', ['find-generic-password', '-s', 'app.agentnotify.v1', '-a', account, '-w'], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
stored = randomBytes(32).toString('base64url');
|
|
33
|
-
execFileSync('/usr/bin/security', ['add-generic-password', '-s', 'app.agentnotify.v1', '-a', account, '-w', stored], { stdio: 'ignore' });
|
|
34
|
-
}
|
|
35
|
-
this.key = Buffer.from(stored, 'base64url');
|
|
42
|
+
this.key = keychainKey(hash(dir).slice(0, 32));
|
|
36
43
|
}
|
|
37
44
|
encrypt(value) { const iv = randomBytes(12); const cipher = createCipheriv('aes-256-gcm', this.key, iv); cipher.setAAD(Buffer.from('AgentNotify/local/v1')); const data = Buffer.concat([cipher.update(JSON.stringify(value)), cipher.final()]); return Buffer.concat([iv, cipher.getAuthTag(), data]).toString('base64url'); }
|
|
38
45
|
decrypt(text) { const b = Buffer.from(text, 'base64url'); const decipher = createDecipheriv('aes-256-gcm', this.key, b.subarray(0, 12)); decipher.setAAD(Buffer.from('AgentNotify/local/v1')); decipher.setAuthTag(b.subarray(12, 28)); return JSON.parse(Buffer.concat([decipher.update(b.subarray(28)), decipher.final()]).toString()); }
|
package/dist/src/vault.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/vault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/vault.ts"],"names":[],"mappings":"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"}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@masstensor/anotify",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.13",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@masstensor/anotify",
|
|
9
|
-
"version": "0.5.
|
|
9
|
+
"version": "0.5.13",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@hpke/core": "^1.7.0",
|
|
12
12
|
"@modelcontextprotocol/sdk": "^1.20.0",
|