@masstensor/anotify 0.5.12 → 0.5.14
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/device-group.js +17 -0
- package/dist/src/device-group.js.map +1 -0
- package/dist/src/pairing-cli.js +9 -7
- package/dist/src/pairing-cli.js.map +1 -1
- package/dist/src/pairing.js +12 -3
- package/dist/src/pairing.js.map +1 -1
- package/dist/src/setup-cli.js +2 -2
- package/dist/src/setup-cli.js.map +1 -1
- 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
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createHmac } from 'node:crypto';
|
|
2
|
+
import { keychainKey } from './vault.js';
|
|
3
|
+
// This is an encrypted presentation hint, never an authorization credential.
|
|
4
|
+
export function deviceGroupForPhone(phoneKey, secret) {
|
|
5
|
+
return createHmac('sha256', secret).update('AgentNotify/device-group/v1\0').update(phoneKey).digest('hex');
|
|
6
|
+
}
|
|
7
|
+
export function localDeviceGroup(phoneKey) {
|
|
8
|
+
if (process.env.AGENT_NOTIFY_MANAGED !== '1' || process.platform !== 'darwin')
|
|
9
|
+
return;
|
|
10
|
+
try {
|
|
11
|
+
return deviceGroupForPhone(phoneKey, keychainKey('device-group-v1'));
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=device-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-group.js","sourceRoot":"","sources":["../../src/device-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,MAAc;IACnE,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5G,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAChD,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO;IACtF,IAAI,CAAC;QAAC,OAAO,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO;IAAC,CAAC;AAChG,CAAC"}
|
package/dist/src/pairing-cli.js
CHANGED
|
@@ -6,7 +6,7 @@ import qr from 'qrcode-terminal';
|
|
|
6
6
|
import { generateKeys } from './crypto.js';
|
|
7
7
|
import { validateRelay, token, hash } from './protocol.js';
|
|
8
8
|
import { request, HttpError } from './http.js';
|
|
9
|
-
import { parsePairingURL, pairingURL, decryptResponse, handshake, verifyProof, encryptLabel } from './pairing.js';
|
|
9
|
+
import { parsePairingURL, pairingURL, decryptResponse, handshake, verifyProof, encryptLabel, continuityProof } from './pairing.js';
|
|
10
10
|
import { serviceLease } from './service.js';
|
|
11
11
|
export async function pairPhone(vault, io, relay = 'https://anotify.fenginwind.com', cancel = false) {
|
|
12
12
|
// A separate lease prevents two pairing commands from replacing each other's saved state.
|
|
@@ -58,7 +58,7 @@ export async function pairPhone(vault, io, relay = 'https://anotify.fenginwind.c
|
|
|
58
58
|
const state = await request(endpoint + '/' + pending.offer.pairingId, pending.pollToken);
|
|
59
59
|
if (['expired', 'cancelled'].includes(state.state)) {
|
|
60
60
|
clear();
|
|
61
|
-
throw Error('Pairing expired or cancelled. Run anotify pair for a new code.');
|
|
61
|
+
throw Error('Pairing expired or cancelled. Run ~/.local/bin/anotify pair for a new code.');
|
|
62
62
|
}
|
|
63
63
|
if (state.response) {
|
|
64
64
|
if (pending.response && JSON.stringify(pending.response) !== JSON.stringify(state.response))
|
|
@@ -76,7 +76,7 @@ export async function pairPhone(vault, io, relay = 'https://anotify.fenginwind.c
|
|
|
76
76
|
return;
|
|
77
77
|
}
|
|
78
78
|
if (Date.now() >= pending.offer.expiresAt)
|
|
79
|
-
throw Error('Pairing expired during confirmation. Run anotify pair again.');
|
|
79
|
+
throw Error('Pairing expired during confirmation. Run ~/.local/bin/anotify pair again.');
|
|
80
80
|
pending.confirmed = true;
|
|
81
81
|
vault.save('pairing-pending', pending);
|
|
82
82
|
}
|
|
@@ -85,13 +85,15 @@ export async function pairPhone(vault, io, relay = 'https://anotify.fenginwind.c
|
|
|
85
85
|
throw Error('Invalid phone confirmation; pairing not saved.');
|
|
86
86
|
vault.save('sender', { relay: pending.offer.relay, deviceId: phone.deviceId, senderId: pending.offer.pairingId, senderToken: pending.senderToken, keys: pending.keys, recipientPublicKey: phone.recipientPublicKey });
|
|
87
87
|
clear();
|
|
88
|
-
io.write('Mac paired. Next: anotify test');
|
|
88
|
+
io.write('Mac paired. Next: ~/.local/bin/anotify test');
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
91
91
|
if (!pending.label) {
|
|
92
92
|
const name = computerName();
|
|
93
93
|
if (name) {
|
|
94
|
-
|
|
94
|
+
const old = vault.load('sender');
|
|
95
|
+
const continuity = old && old.deviceId === phone.deviceId && old.recipientPublicKey === phone.recipientPublicKey && old.relay === pending.offer.relay ? continuityProof(pending.offer, state.response, old.senderId, old.keys) : undefined;
|
|
96
|
+
pending.label = encryptLabel(pending.offer, state.response, pending.temporary.privateKey, state.response.publicKey, name, randomBytes(12), continuity);
|
|
95
97
|
vault.save('pairing-pending', pending);
|
|
96
98
|
}
|
|
97
99
|
}
|
|
@@ -112,10 +114,10 @@ export async function pairPhone(vault, io, relay = 'https://anotify.fenginwind.c
|
|
|
112
114
|
await new Promise(done => setTimeout(done, 1500));
|
|
113
115
|
}
|
|
114
116
|
clear();
|
|
115
|
-
throw Error('Pairing expired. Run anotify pair to try again.');
|
|
117
|
+
throw Error('Pairing expired. Run ~/.local/bin/anotify pair to try again.');
|
|
116
118
|
}
|
|
117
119
|
catch (e) {
|
|
118
|
-
io.write('Pairing was not completed. Run anotify pair to resume, or anotify pair --cancel to discard this attempt. Existing pairing is kept.');
|
|
120
|
+
io.write('Pairing was not completed. Run ~/.local/bin/anotify pair to resume, or ~/.local/bin/anotify pair --cancel to discard this attempt. Existing pairing is kept.');
|
|
119
121
|
throw e;
|
|
120
122
|
}
|
|
121
123
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pairing-cli.js","sourceRoot":"","sources":["../../src/pairing-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAgB,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAqD,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"pairing-cli.js","sourceRoot":"","sources":["../../src/pairing-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/pairing.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createECDH, createCipheriv, createDecipheriv, hkdfSync, createHmac, timingSafeEqual } from 'node:crypto';
|
|
1
|
+
import { createECDH, createCipheriv, createDecipheriv, createPrivateKey, sign, hkdfSync, createHmac, timingSafeEqual } from 'node:crypto';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { publicKey, id, b64, hash, validateRelay } from './protocol.js';
|
|
4
4
|
export const secret = b64.refine(s => Buffer.from(s, 'base64url').length === 32, 'Expected 256-bit value');
|
|
@@ -23,11 +23,20 @@ export function parsePairingURL(text, allowLocal = false) {
|
|
|
23
23
|
}
|
|
24
24
|
function shared(privateKey, publicKey) { const ecdh = createECDH('prime256v1'); ecdh.setPrivateKey(Buffer.from(privateKey, 'base64url')); return ecdh.computeSecret(Buffer.from(publicKey, 'base64url')); }
|
|
25
25
|
function key(q, privateKey, publicKey) { return Buffer.from(hkdfSync('sha256', shared(privateKey, publicKey), Buffer.from(offerHash(q), 'hex'), Buffer.from('AgentNotify/pair/v2/response'), 32)); }
|
|
26
|
-
export function
|
|
26
|
+
export function continuityProof(q, r, senderId, previous) {
|
|
27
|
+
id.parse(senderId);
|
|
28
|
+
const pub = Buffer.from(previous.publicKey, 'base64url'), priv = Buffer.from(previous.privateKey, 'base64url');
|
|
29
|
+
if (pub.length !== 65 || pub[0] !== 4 || priv.length !== 32)
|
|
30
|
+
throw Error('Invalid prior identity');
|
|
31
|
+
const key = createPrivateKey({ key: { kty: 'EC', crv: 'P-256', x: pub.subarray(1, 33).toString('base64url'), y: pub.subarray(33).toString('base64url'), d: priv.toString('base64url') }, format: 'jwk' });
|
|
32
|
+
const challenge = JSON.stringify(['AgentNotify/rebind/v1', offerHash(q), r.publicKey, r.iv, r.ct, senderId]);
|
|
33
|
+
return { senderId, signature: sign('sha256', Buffer.from(challenge), { key, dsaEncoding: 'ieee-p1363' }).toString('base64url') };
|
|
34
|
+
}
|
|
35
|
+
export function encryptLabel(q, r, privateKey, peer, name, iv, continuity) {
|
|
27
36
|
const k = Buffer.from(hkdfSync('sha256', shared(privateKey, peer), Buffer.from(offerHash(q), 'hex'), Buffer.from('AgentNotify/pair/v2/device-name'), 32));
|
|
28
37
|
const cipher = createCipheriv('aes-256-gcm', k, iv);
|
|
29
38
|
cipher.setAAD(Buffer.from(JSON.stringify([offerHash(q), r.publicKey, r.iv, r.ct, 'device-name'])));
|
|
30
|
-
const ct = Buffer.concat([cipher.update(JSON.stringify({ name })), cipher.final(), cipher.getAuthTag()]);
|
|
39
|
+
const ct = Buffer.concat([cipher.update(JSON.stringify({ name, ...(continuity ? { continuity } : {}) })), cipher.final(), cipher.getAuthTag()]);
|
|
31
40
|
return { iv: iv.toString('base64url'), ct: ct.toString('base64url') };
|
|
32
41
|
}
|
|
33
42
|
export function encryptResponse(q, payload, phone, iv) {
|
package/dist/src/pairing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pairing.js","sourceRoot":"","sources":["../../src/pairing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"pairing.js","sourceRoot":"","sources":["../../src/pairing.ts"],"names":[],"mappings":"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"}
|
package/dist/src/setup-cli.js
CHANGED
|
@@ -47,10 +47,10 @@ export async function setupCLI(args, provided) {
|
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
const result = await install({ preferences: selected, migrateFrom });
|
|
50
|
-
(io?.write ?? console.log)(`\nAgent Notify installed.\nCommand: ${result.command}\nDefault notifications: ${selected.defaultMode === 'all' ? 'on' : 'off'}\nAgents: ${selected.hosts.join(', ')}\nPairing: ${result.paired ? 'preserved' : 'not connected'}\nNo login background service.\nReview the new Hook/MCP entries in your agents. Codex: /hooks.\nStart your agent normally.\nManage later: anotify\nDiagnose: anotify doctor`);
|
|
50
|
+
(io?.write ?? console.log)(`\nAgent Notify installed.\nCommand: ${result.command}\nDefault notifications: ${selected.defaultMode === 'all' ? 'on' : 'off'}\nAgents: ${selected.hosts.join(', ')}\nPairing: ${result.paired ? 'preserved' : 'not connected'}\nNo login background service.\nReview the new Hook/MCP entries in your agents. Codex: /hooks.\nStart your agent normally.\nManage later: ~/.local/bin/anotify\nDiagnose: ~/.local/bin/anotify doctor`);
|
|
51
51
|
(io?.write ?? console.log)('On iPhone, choose Show message previews in Settings. Decryption stays on your phone; iOS lock-screen settings still apply.');
|
|
52
52
|
if (!result.paired)
|
|
53
|
-
(io?.write ?? console.log)('Next: run anotify pair on Mac, scan its QR in the iPhone app, and compare all 8 digits on both screens.');
|
|
53
|
+
(io?.write ?? console.log)('Next: run ~/.local/bin/anotify pair on Mac, scan its QR in the iPhone app, and compare all 8 digits on both screens.');
|
|
54
54
|
}
|
|
55
55
|
finally {
|
|
56
56
|
own?.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-cli.js","sourceRoot":"","sources":["../../src/setup-cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"setup-cli.js","sourceRoot":"","sources":["../../src/setup-cli.ts"],"names":[],"mappings":"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"}
|
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.14",
|
|
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.14",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@hpke/core": "^1.7.0",
|
|
12
12
|
"@modelcontextprotocol/sdk": "^1.20.0",
|