@masstensor/anotify 0.0.0-stage → 0.5.9

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 (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -2
  3. package/dist/src/adapters.js +97 -0
  4. package/dist/src/adapters.js.map +1 -0
  5. package/dist/src/claude-question-wait.js +67 -0
  6. package/dist/src/claude-question-wait.js.map +1 -0
  7. package/dist/src/claude-question.js +22 -0
  8. package/dist/src/claude-question.js.map +1 -0
  9. package/dist/src/claude.js +23 -0
  10. package/dist/src/claude.js.map +1 -0
  11. package/dist/src/cli.js +294 -0
  12. package/dist/src/cli.js.map +1 -0
  13. package/dist/src/codex-readiness.js +37 -0
  14. package/dist/src/codex-readiness.js.map +1 -0
  15. package/dist/src/config.js +21 -0
  16. package/dist/src/config.js.map +1 -0
  17. package/dist/src/crypto.js +26 -0
  18. package/dist/src/crypto.js.map +1 -0
  19. package/dist/src/daemon.js +356 -0
  20. package/dist/src/daemon.js.map +1 -0
  21. package/dist/src/demand.js +89 -0
  22. package/dist/src/demand.js.map +1 -0
  23. package/dist/src/device-name.js +12 -0
  24. package/dist/src/device-name.js.map +1 -0
  25. package/dist/src/http.js +38 -0
  26. package/dist/src/http.js.map +1 -0
  27. package/dist/src/install.js +254 -0
  28. package/dist/src/install.js.map +1 -0
  29. package/dist/src/integration.js +184 -0
  30. package/dist/src/integration.js.map +1 -0
  31. package/dist/src/mcp.js +48 -0
  32. package/dist/src/mcp.js.map +1 -0
  33. package/dist/src/native-owner.js +44 -0
  34. package/dist/src/native-owner.js.map +1 -0
  35. package/dist/src/npm-cli.js +24 -0
  36. package/dist/src/npm-cli.js.map +1 -0
  37. package/dist/src/owners.js +57 -0
  38. package/dist/src/owners.js.map +1 -0
  39. package/dist/src/pairing-cli.js +125 -0
  40. package/dist/src/pairing-cli.js.map +1 -0
  41. package/dist/src/pairing.js +57 -0
  42. package/dist/src/pairing.js.map +1 -0
  43. package/dist/src/preferences.js +18 -0
  44. package/dist/src/preferences.js.map +1 -0
  45. package/dist/src/protocol.js +40 -0
  46. package/dist/src/protocol.js.map +1 -0
  47. package/dist/src/question-crypto.js +29 -0
  48. package/dist/src/question-crypto.js.map +1 -0
  49. package/dist/src/readiness.js +58 -0
  50. package/dist/src/readiness.js.map +1 -0
  51. package/dist/src/service.js +57 -0
  52. package/dist/src/service.js.map +1 -0
  53. package/dist/src/sessions.js +217 -0
  54. package/dist/src/sessions.js.map +1 -0
  55. package/dist/src/setup-cli.js +59 -0
  56. package/dist/src/setup-cli.js.map +1 -0
  57. package/dist/src/terminal.js +68 -0
  58. package/dist/src/terminal.js.map +1 -0
  59. package/dist/src/vault.js +49 -0
  60. package/dist/src/vault.js.map +1 -0
  61. package/dist/src/wizard.js +43 -0
  62. package/dist/src/wizard.js.map +1 -0
  63. package/npm-shrinkwrap.json +1919 -0
  64. package/package.json +26 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { createInterface } from 'node:readline';
3
+ export async function codexHooks(cwd) {
4
+ const child = spawn('codex', ['app-server', '--stdio', '-c', 'features.hooks=true'], { stdio: ['pipe', 'pipe', 'ignore'] });
5
+ let serial = 0;
6
+ const pending = new Map();
7
+ const fail = () => { for (const request of pending.values())
8
+ request.reject(Error('Codex hook inspection unavailable')); pending.clear(); };
9
+ child.on('error', fail);
10
+ child.on('exit', fail);
11
+ child.stdin.on('error', fail);
12
+ const reader = createInterface({ input: child.stdout });
13
+ reader.on('line', line => { try {
14
+ const message = JSON.parse(line);
15
+ const request = pending.get(message.id);
16
+ if (request) {
17
+ pending.delete(message.id);
18
+ message.error ? request.reject(Error('Codex rejected hook inspection')) : request.resolve(message.result);
19
+ }
20
+ }
21
+ catch { } });
22
+ const request = (method, params) => new Promise((resolve, reject) => { const id = ++serial; pending.set(id, { resolve, reject }); child.stdin.write(JSON.stringify({ id, method, params }) + '\n'); });
23
+ const timer = setTimeout(() => { fail(); child.kill(); }, 10000);
24
+ try {
25
+ await request('initialize', { clientInfo: { name: 'anotify_doctor', title: 'Agent Notify diagnostics', version: '0.3.0' }, capabilities: { experimentalApi: true, requestAttestation: false } });
26
+ child.stdin.write('{"method":"initialized"}\n');
27
+ const response = await request('hooks/list', { cwds: [cwd] });
28
+ return response.data.flatMap(entry => entry.hooks);
29
+ }
30
+ finally {
31
+ clearTimeout(timer);
32
+ reader.close();
33
+ child.stdin.end();
34
+ child.kill();
35
+ }
36
+ }
37
+ //# sourceMappingURL=codex-readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-readiness.js","sourceRoot":"","sources":["../../src/codex-readiness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { resolve } from 'node:path';
2
+ const quote = (s) => "'" + s.replaceAll("'", "'\\''") + "'";
3
+ export function hostConfig(host, cli = resolve('dist/src/cli.js')) {
4
+ const alias = host === 'claude-code' ? 'claude' : host === 'gemini-cli' ? 'gemini' : 'codex';
5
+ const command = [process.execPath, cli, 'hook', alias].map(quote).join(' ');
6
+ const events = ['SessionStart', 'SessionEnd', ...(host === 'gemini-cli' ? ['BeforeAgent', 'BeforeTool', 'AfterAgent', 'Notification'] : ['PreToolUse', 'Stop', host === 'codex' ? 'PermissionRequest' : 'Notification'])];
7
+ const hooks = Object.fromEntries(events.map(event => [event, [{
8
+ ...(event === 'PreToolUse' ? { matcher: host === 'claude-code' ? 'mcp__agent_notify__.*|AskUserQuestion' : 'mcp__agent_notify__.*' } : {}),
9
+ ...(event === 'BeforeTool' ? { matcher: 'mcp_agent_notify_.*' } : {}),
10
+ ...(event === 'Notification' ? { matcher: host === 'claude-code' ? 'permission_prompt' : 'ToolPermission' } : {}),
11
+ hooks: [{ type: 'command', name: 'agent-notify-' + event, command, timeout: host === 'gemini-cli' ? 10000 : 10 }],
12
+ }]]));
13
+ const server = { command: process.execPath, args: [cli, 'mcp', alias], ...(host === 'gemini-cli' ? { env: { AGENT_NOTIFY_INSTANCE: '${AGENT_NOTIFY_INSTANCE}', AGENT_NOTIFY_HOME: '${AGENT_NOTIFY_HOME}', AGENT_NOTIFY_DEV_FILE_KEY: '${AGENT_NOTIFY_DEV_FILE_KEY}' } } : {}) };
14
+ const launch = [process.execPath, cli, 'run', alias].map(quote).join(' ');
15
+ if (host !== 'codex')
16
+ return { launch, settings: { hooks }, mcp: { mcpServers: { agent_notify: server } } };
17
+ const handler = `{ type = "command", command = ${JSON.stringify(command)}, timeout = 10 }`;
18
+ const toml = ['[features]', 'hooks = true', '', '[mcp_servers.agent_notify]', `command = ${JSON.stringify(server.command)}`, `args = ${JSON.stringify(server.args)}`, 'env_vars = ["AGENT_NOTIFY_INSTANCE", "AGENT_NOTIFY_HOME", "AGENT_NOTIFY_DEV_FILE_KEY"]', '', '[hooks]', ...events.map(event => `${event} = [{ ${event === 'PreToolUse' ? 'matcher = "mcp__agent_notify__.*", ' : ''}hooks = [${handler}] }]`)].join('\n') + '\n';
19
+ return { launch, toml, hooks: { hooks } };
20
+ }
21
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { CipherSuite, DhkemP256HkdfSha256, HkdfSha256, Aes256Gcm } from '@hpke/core';
2
+ import { aad, info, contentSchema } from './protocol.js';
3
+ const suite = new CipherSuite({ kem: new DhkemP256HkdfSha256(), kdf: new HkdfSha256(), aead: new Aes256Gcm() });
4
+ const bytes = (s) => new Uint8Array(Buffer.from(s, 'base64url'));
5
+ const encode = (data) => Buffer.from(data).toString('base64url');
6
+ export async function generateKeys() { const pair = await suite.kem.generateKeyPair(); return { privateKey: encode(await suite.kem.serializePrivateKey(pair.privateKey)), publicKey: encode(await suite.kem.serializePublicKey(pair.publicKey)) }; }
7
+ export async function seal(header, content, sender, recipientPublicKey) {
8
+ content = contentSchema.parse(content);
9
+ const recipient = await suite.kem.deserializePublicKey(bytes(recipientPublicKey));
10
+ const senderKey = await suite.kem.deserializePrivateKey(bytes(sender.privateKey));
11
+ async function box(purpose, value) { const context = await suite.createSenderContext({ recipientPublicKey: recipient, senderKey, info: info(purpose) }); return { enc: encode(context.enc), ct: encode(await context.seal(new TextEncoder().encode(JSON.stringify(value)), aad(header, purpose))) }; }
12
+ const label = content.host ? { 'claude-code': 'Claude Code', codex: 'Codex', 'gemini-cli': 'Gemini CLI' }[content.host] : undefined;
13
+ const clean = (value) => value.replace(/[\u0000-\u001f\u007f]/g, ' ').replace(/\s+/g, ' ').trim();
14
+ const title = label ? [label, content.project ? Array.from(clean(content.project)).slice(0, 80).join('') : undefined].filter(Boolean).join(' · ') : content.title;
15
+ const subtitle = label ? [content.title, content.sessionId ? 'Session ' + content.sessionId.slice(-8) : undefined].filter(Boolean).join(' · ') : undefined;
16
+ const preview = { title, ...(subtitle ? { subtitle: Array.from(clean(subtitle)).slice(0, 160).join('') } : {}), body: Array.from(content.markdown.replace(/\s+/g, ' ')).slice(0, 160).join('') };
17
+ return { header, body: await box('body', content), preview: await box('preview', preview) };
18
+ }
19
+ export async function open(envelope, recipient, senderPublicKey, purpose = 'body') {
20
+ if (envelope.header.expiresAt <= Date.now())
21
+ throw new Error('Message expired');
22
+ const context = await suite.createRecipientContext({ recipientKey: await suite.kem.deserializePrivateKey(bytes(recipient.privateKey)), senderPublicKey: await suite.kem.deserializePublicKey(bytes(senderPublicKey)), enc: bytes(envelope[purpose].enc), info: info(purpose) });
23
+ const plaintext = await context.open(bytes(envelope[purpose].ct), aad(envelope.header, purpose));
24
+ return JSON.parse(new TextDecoder().decode(plaintext));
25
+ }
26
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,356 @@
1
+ import { basename } from 'node:path';
2
+ import { DatabaseSync } from 'node:sqlite';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { join } from 'node:path';
5
+ import { z } from 'zod';
6
+ import { computerName } from './device-name.js';
7
+ import { seal } from './crypto.js';
8
+ import { contentSchema, hash, hostSchema } from './protocol.js';
9
+ import { request, listen, bearer, jsonBody, send, HttpError } from './http.js';
10
+ import { Sessions } from './sessions.js';
11
+ import { bindingKey, hostHook } from './adapters.js';
12
+ import { ownerSchema } from './owners.js';
13
+ import { readPreferences, writePreferences, preferencesSchema } from './preferences.js';
14
+ const contextSchema = z.object({ host: hostSchema, sessionId: z.string().min(1).max(200), turnId: z.string().min(1).max(200) }).strict();
15
+ const eventSchema = z.object({ context: contextSchema, source: z.enum(['hook', 'mcp']), callId: z.string().min(1).max(200).optional(), content: contentSchema }).strict();
16
+ export class Daemon {
17
+ vault;
18
+ startedAt = new Date().toISOString();
19
+ db;
20
+ sessions;
21
+ busy = false;
22
+ pending = Promise.resolve();
23
+ constructor(vault) {
24
+ this.vault = vault;
25
+ this.db = new DatabaseSync(join(vault.dir, 'local.sqlite'));
26
+ this.db.exec(`PRAGMA journal_mode=WAL;
27
+ CREATE TABLE IF NOT EXISTS policies(host TEXT,session TEXT,mode TEXT,PRIMARY KEY(host,session));
28
+ CREATE TABLE IF NOT EXISTS armed(host TEXT,session TEXT,turn TEXT,PRIMARY KEY(host,session));
29
+ CREATE TABLE IF NOT EXISTS events(key TEXT PRIMARY KEY,id TEXT,revision INTEGER,digest TEXT,envelope TEXT,status TEXT);
30
+ CREATE TABLE IF NOT EXISTS contexts(token TEXT PRIMARY KEY,value TEXT,expires INTEGER);`);
31
+ this.db.exec('CREATE TABLE IF NOT EXISTS session_projects(host TEXT NOT NULL,session TEXT NOT NULL,value TEXT NOT NULL,PRIMARY KEY(host,session))');
32
+ this.db.exec('CREATE TABLE IF NOT EXISTS context_clients(token TEXT PRIMARY KEY,client TEXT NOT NULL)');
33
+ this.db.exec('CREATE TABLE IF NOT EXISTS attention_events(key TEXT PRIMARY KEY,host TEXT NOT NULL,session TEXT NOT NULL,turn TEXT NOT NULL)');
34
+ this.db.exec('CREATE TABLE IF NOT EXISTS event_types(key TEXT PRIMARY KEY,source TEXT NOT NULL,kind TEXT NOT NULL)');
35
+ this.sessions = new Sessions(this.db);
36
+ }
37
+ policy(host, session, mode, armedTurn) { this.sessions.policy(host, session, mode, armedTurn); if (mode === 'off')
38
+ this.db.prepare("UPDATE events SET status='superseded' WHERE status='queued' AND key IN (SELECT key FROM attention_events WHERE host=? AND session=?)").run(host, session); }
39
+ settings(input) { const settings = preferencesSchema.parse(input); this.db.exec('BEGIN IMMEDIATE'); try {
40
+ writePreferences(this.db, settings);
41
+ if (!settings.permissionAlerts)
42
+ this.db.exec("UPDATE events SET status='superseded' WHERE status='queued' AND key IN (SELECT key FROM event_types WHERE kind='attention')");
43
+ if (settings.paused)
44
+ this.db.exec("UPDATE events SET status='superseded' WHERE status='queued' AND key IN (SELECT key FROM event_types WHERE source='hook')");
45
+ this.db.exec('COMMIT');
46
+ return settings;
47
+ }
48
+ catch (error) {
49
+ this.db.exec('ROLLBACK');
50
+ throw error;
51
+ } }
52
+ testNotification() {
53
+ return this.serialize(async () => {
54
+ const config = this.vault.load('sender');
55
+ if (!config)
56
+ throw new HttpError(409, 'Pair this Mac before sending a test');
57
+ const id = randomUUID(), key = hash('management-test:' + id), name = computerName(), content = { kind: 'content', title: 'Agent Notify test', markdown: 'Your Mac can send encrypted messages. This is a manual setup test, not an Agent task result.', project: 'Agent Notify', ...(name ? { deviceName: name } : {}) };
58
+ const envelope = await seal({ v: 1, deviceId: config.deviceId, senderId: config.senderId, messageId: id, revision: 1, expiresAt: Date.now() + 300000 }, content, config.keys, config.recipientPublicKey);
59
+ this.db.exec('BEGIN IMMEDIATE');
60
+ try {
61
+ this.db.prepare('INSERT INTO events VALUES(?,?,?,?,?,?)').run(key, id, 1, hash(JSON.stringify(content)), this.vault.encrypt(envelope), 'queued');
62
+ this.db.prepare('INSERT INTO event_types VALUES(?,?,?)').run(key, 'management', 'content');
63
+ this.db.exec('COMMIT');
64
+ }
65
+ catch (error) {
66
+ this.db.exec('ROLLBACK');
67
+ throw error;
68
+ }
69
+ return { messageId: id, status: 'queued', phoneDisplay: 'not_confirmed' };
70
+ });
71
+ }
72
+ bind(context, call, instance) { const c = contextSchema.parse(context); if (instance)
73
+ this.sessions.assertSession(instance, c.host, c.sessionId); const capability = call ? bindingKey(c.host, call) : randomUUID(); this.db.prepare('DELETE FROM contexts WHERE expires<?').run(Date.now()); this.db.exec('DELETE FROM context_clients WHERE token NOT IN (SELECT token FROM contexts)'); const old = this.db.prepare('SELECT value FROM contexts WHERE token=?').get(capability); if (old && old.value !== JSON.stringify(c))
74
+ throw new HttpError(409, 'Conflicting tool context'); const owner = this.db.prepare('SELECT client FROM context_clients WHERE token=?').get(capability); if (owner && owner.client !== instance)
75
+ throw new HttpError(409, 'Tool context belongs to another client'); this.db.prepare('INSERT OR REPLACE INTO contexts VALUES(?,?,?)').run(capability, JSON.stringify(c), Date.now() + 86400000); if (instance)
76
+ this.db.prepare('INSERT OR REPLACE INTO context_clients VALUES(?,?)').run(capability, instance); return capability; }
77
+ resolve(capability, instance) { const row = this.db.prepare('SELECT value FROM contexts WHERE token=? AND expires>?').get(capability, Date.now()); if (!row)
78
+ throw new HttpError(409, 'Missing verified session context'); const c = contextSchema.parse(JSON.parse(row.value)); const owner = this.db.prepare('SELECT client FROM context_clients WHERE token=?').get(capability); if (owner) {
79
+ if (owner.client !== instance)
80
+ throw new HttpError(409, 'Tool context belongs to another client');
81
+ this.sessions.assertSession(instance, c.host, c.sessionId);
82
+ }
83
+ else if (instance)
84
+ throw new HttpError(409, 'Tool context was not registered by this client'); return c; }
85
+ serialize(work) { const next = this.pending.then(work); this.pending = next.catch(() => { }); return next; }
86
+ enqueue(input) { return this.serialize(() => this.enqueueSerial(input)); }
87
+ hook(host, instance, input, nativeOwner) {
88
+ return this.serialize(async () => {
89
+ const direct = !instance;
90
+ const raw = z.object({ session_id: z.string().min(1).max(200), hook_event_name: z.string().min(1).max(200), source: z.string().optional(), agent_id: z.string().optional() }).passthrough().parse(input);
91
+ if (raw.agent_id)
92
+ return {};
93
+ if (typeof raw.cwd === 'string' && raw.cwd) {
94
+ const project = basename(raw.cwd).replace(/[\u0000-\u001f\u007f]/g, '').slice(0, 200);
95
+ if (project)
96
+ this.db.prepare('INSERT OR REPLACE INTO session_projects VALUES(?,?,?)').run(host, raw.session_id, this.vault.encrypt(project));
97
+ }
98
+ const client = instance ?? this.sessions.direct(host, raw.session_id, raw.hook_event_name, raw.source, nativeOwner);
99
+ if (!client)
100
+ return {};
101
+ // Desktop and automatic approval reviewers can emit many permission checks in one turn.
102
+ // The first alert is sufficient; do not send one push for each subsequent check.
103
+ if (direct && host === 'codex' && raw.hook_event_name === 'PermissionRequest') {
104
+ const turn = z.string().min(1).max(200).safeParse(raw.turn_id);
105
+ if (turn.success && this.db.prepare('SELECT 1 FROM attention_events WHERE host=? AND session=? AND turn=? LIMIT 1').get(host, raw.session_id, turn.data))
106
+ return {};
107
+ }
108
+ const result = await hostHook(host, client, input, this.sessions, async (path, body) => {
109
+ if (path === '/event')
110
+ return this.enqueueSerial(body);
111
+ const { call, ...context } = z.object({ host: hostSchema, sessionId: z.string(), turnId: z.string(), call: z.string().optional() }).parse(body);
112
+ return { capability: this.bind(context, call, direct ? undefined : client) };
113
+ });
114
+ if (direct && raw.hook_event_name === 'SessionEnd')
115
+ this.sessions.close(client);
116
+ return result;
117
+ });
118
+ }
119
+ async enqueueSerial(input) {
120
+ const event = eventSchema.parse(input);
121
+ const { source, content } = event;
122
+ const c = { ...event.context, turnId: source === 'hook' ? this.sessions.canonical(event.context.host, event.context.sessionId, event.context.turnId) : event.context.turnId };
123
+ if (source === 'mcp' && !['progress', 'content', 'action_required'].includes(content.kind))
124
+ throw new HttpError(400, 'MCP can only send progress or explicit content');
125
+ if (source === 'hook' && !['turn_end', 'attention', 'action_required', 'question'].includes(content.kind))
126
+ throw new HttpError(400, 'Hook requires turn_end, attention or question');
127
+ if (source === 'hook' && ['attention', 'action_required', 'question'].includes(content.kind) && !event.callId)
128
+ throw new HttpError(400, 'Request identity required');
129
+ if (source === 'mcp' && !event.callId)
130
+ throw new HttpError(400, 'MCP call identity required');
131
+ const settings = readPreferences(this.db);
132
+ const mode = this.sessions.mode(c.host, c.sessionId);
133
+ const armed = this.db.prepare('SELECT turn FROM armed WHERE host=? AND session=?').get(c.host, c.sessionId)?.turn;
134
+ const armedTurn = armed ? this.sessions.canonical(c.host, c.sessionId, armed) : undefined;
135
+ if (source === 'hook' && content.kind === 'turn_end') {
136
+ for (const pending of this.db.prepare('SELECT key,turn FROM attention_events WHERE host=? AND session=?').all(c.host, c.sessionId))
137
+ if (this.sessions.canonical(c.host, c.sessionId, pending.turn) === c.turnId)
138
+ this.db.prepare("UPDATE events SET status='superseded' WHERE key=? AND status='queued'").run(pending.key);
139
+ }
140
+ const key = hash(JSON.stringify([c.host, c.sessionId, c.turnId, source, source === 'hook' ? (['attention', 'action_required', 'question'].includes(content.kind) ? content.kind + ':' + event.callId : 'end') : event.callId]));
141
+ const old = this.db.prepare('SELECT * FROM events WHERE key=?').get(key);
142
+ // A once policy closes new turns, while later attempts of its admitted turn update the same message.
143
+ if (source === 'hook' && (settings.paused || mode === 'off' || (mode === 'spent' && !old) || (mode === 'once' && armedTurn === c.turnId)))
144
+ return { status: 'disabled' };
145
+ if (source === 'hook' && content.kind === 'attention' && !settings.permissionAlerts)
146
+ return { status: 'disabled' };
147
+ const storedProject = this.db.prepare('SELECT value FROM session_projects WHERE host=? AND session=?').get(c.host, c.sessionId);
148
+ const project = storedProject ? this.vault.decrypt(String(storedProject.value)) : content.project;
149
+ const name = computerName();
150
+ const full = { ...content, ...c, ...(project ? { project } : {}), deviceName: name || undefined };
151
+ const digest = hash(JSON.stringify(full));
152
+ if (old?.digest === digest)
153
+ return { messageId: old.id, revision: old.revision, status: old.status };
154
+ const config = this.vault.load('sender');
155
+ if (!config)
156
+ throw new HttpError(409, 'Pair this Mac before sending');
157
+ const messageId = old?.id ?? randomUUID();
158
+ const revision = (old?.revision ?? 0) + 1;
159
+ const envelope = await seal({ v: 1, deviceId: config.deviceId, senderId: config.senderId, messageId, revision, expiresAt: Date.now() + (['attention', 'action_required', 'question'].includes(content.kind) ? 5 * 60000 : 7 * 86400000) }, full, config.keys, config.recipientPublicKey);
160
+ this.db.exec('BEGIN IMMEDIATE');
161
+ try {
162
+ this.db.prepare('INSERT OR REPLACE INTO events VALUES(?,?,?,?,?,?)').run(key, messageId, revision, digest, this.vault.encrypt(envelope), 'queued');
163
+ this.db.prepare('INSERT OR REPLACE INTO event_types VALUES(?,?,?)').run(key, source, content.kind);
164
+ if (source === 'hook' && content.kind === 'attention')
165
+ this.db.prepare('INSERT OR REPLACE INTO attention_events VALUES(?,?,?,?)').run(key, c.host, c.sessionId, c.turnId);
166
+ if (mode === 'once' && source === 'hook' && content.kind === 'turn_end')
167
+ this.sessions.spent(c.host, c.sessionId);
168
+ this.db.exec('COMMIT');
169
+ }
170
+ catch (e) {
171
+ this.db.exec('ROLLBACK');
172
+ throw e;
173
+ }
174
+ return { messageId, revision, status: 'queued' };
175
+ }
176
+ async flush() {
177
+ if (this.busy)
178
+ return;
179
+ this.busy = true;
180
+ try {
181
+ const config = this.vault.load('sender');
182
+ if (!config)
183
+ return;
184
+ const paused = readPreferences(this.db).paused;
185
+ const rows = this.db.prepare("SELECT e.key,e.revision,e.envelope FROM events e LEFT JOIN event_types t ON t.key=e.key WHERE e.status='queued' AND (?=0 OR t.source IN ('mcp','management')) LIMIT 20").all(Number(paused));
186
+ for (const row of rows) {
187
+ const envelope = this.vault.decrypt(row.envelope);
188
+ if (envelope.header.expiresAt <= Date.now()) {
189
+ this.db.prepare("UPDATE events SET status='expired' WHERE key=? AND revision=?").run(row.key, row.revision);
190
+ continue;
191
+ }
192
+ try {
193
+ await request(config.relay + '/v1/messages', config.senderToken, 'POST', envelope);
194
+ this.db.prepare("UPDATE events SET status='relay_accepted' WHERE key=? AND revision=?").run(row.key, row.revision);
195
+ }
196
+ catch { /* Keep the identical ciphertext for a later retry. */ }
197
+ }
198
+ }
199
+ finally {
200
+ this.busy = false;
201
+ }
202
+ }
203
+ async idle() { await this.pending; while (this.busy)
204
+ await new Promise(done => setTimeout(done, 10)); }
205
+ async deliveries() {
206
+ void this.flush().catch(() => { });
207
+ const config = this.vault.load('sender');
208
+ const rows = this.db.prepare('SELECT e.id,e.revision,e.envelope,e.status,t.source,t.kind FROM events e LEFT JOIN event_types t ON t.key=e.key ORDER BY e.rowid DESC LIMIT 10').all();
209
+ const deliveries = await Promise.all(rows.map(async (row) => {
210
+ const envelope = this.vault.decrypt(String(row.envelope));
211
+ let relayStatus = null;
212
+ if (config && envelope.header.senderId !== config.senderId)
213
+ relayStatus = 'previous_pairing';
214
+ else if (config && row.status === 'relay_accepted')
215
+ try {
216
+ const response = await fetch(config.relay + '/v1/deliveries/' + row.id, { headers: { authorization: 'Bearer ' + config.senderToken }, signal: AbortSignal.timeout(2500) });
217
+ if (!response.ok)
218
+ throw Error('Unavailable');
219
+ const result = z.object({ status: z.string().max(80), revision: z.number().int() }).parse(await response.json());
220
+ relayStatus = result.revision === row.revision ? result.status : 'revision_mismatch';
221
+ }
222
+ catch {
223
+ relayStatus = 'unavailable';
224
+ }
225
+ return { id: row.id, revision: row.revision, source: row.source, kind: row.kind, localStatus: row.status, relayStatus, expiresAt: envelope.header.expiresAt };
226
+ }));
227
+ return { deliveries, phoneDisplay: 'not_verified' };
228
+ }
229
+ async start(auth, port = 0, lifecycle) {
230
+ let lastActivity = Date.now();
231
+ const server = await listen(async (req, res) => {
232
+ if (req.headers.origin || req.headers.host !== `127.0.0.1:${req.socket.address().port}`)
233
+ throw new HttpError(403, 'Local clients only');
234
+ if (hash(bearer(req)) !== hash(auth))
235
+ throw new HttpError(401, 'Local authorization required');
236
+ if (req.method !== 'POST')
237
+ throw new HttpError(404, 'Not found');
238
+ if (req.url !== '/status')
239
+ lastActivity = Date.now();
240
+ if (req.url === '/shutdown') {
241
+ if (!lifecycle)
242
+ throw new HttpError(409, 'This development service has no shutdown handler');
243
+ send(res, 200, { stopping: true });
244
+ setImmediate(lifecycle.stop);
245
+ return;
246
+ }
247
+ if (req.url === '/status') {
248
+ this.sessions.reconcile();
249
+ send(res, 200, { pid: process.pid, startedAt: this.startedAt, paired: !!this.vault.load('sender'), queued: this.db.prepare("SELECT COUNT(*) AS n FROM events WHERE status='queued'").get().n, expired: this.db.prepare("SELECT COUNT(*) AS n FROM events WHERE status='expired'").get().n, activeClients: this.db.prepare('SELECT COUNT(*) AS n FROM clients WHERE closed=0').get().n, managedActiveClients: this.db.prepare('SELECT COUNT(*) AS n FROM clients WHERE closed=0 AND id NOT IN (SELECT client FROM direct_clients)').get().n, preferences: readPreferences(this.db) });
250
+ return;
251
+ }
252
+ if (req.url === '/preferences') {
253
+ const b = preferencesSchema.parse(await jsonBody(req, 4096));
254
+ await this.serialize(() => this.settings(b));
255
+ send(res, 200, b);
256
+ return;
257
+ }
258
+ if (req.url === '/preferences/change') {
259
+ const b = z.object({ defaultMode: z.enum(['all', 'off']).optional(), paused: z.boolean().optional(), permissionAlerts: z.boolean().optional() }).strict().parse(await jsonBody(req, 4096));
260
+ const value = await this.serialize(() => this.settings({ ...readPreferences(this.db), ...b }));
261
+ send(res, 200, value);
262
+ return;
263
+ }
264
+ if (req.url === '/test') {
265
+ z.object({}).strict().parse(await jsonBody(req, 4096));
266
+ send(res, 202, await this.testNotification());
267
+ return;
268
+ }
269
+ if (req.url === '/deliveries') {
270
+ z.object({}).strict().parse(await jsonBody(req, 4096));
271
+ send(res, 200, await this.deliveries());
272
+ return;
273
+ }
274
+ if (req.url === '/question/status') {
275
+ const b = z.object({ messageId: z.string().uuid() }).strict().parse(await jsonBody(req, 4096));
276
+ const row = this.db.prepare('SELECT envelope,status FROM events WHERE id=?').get(b.messageId);
277
+ if (!row)
278
+ throw new HttpError(404, 'Question not found');
279
+ const envelope = this.vault.decrypt(String(row.envelope));
280
+ send(res, 200, { status: row.status, header: envelope.header });
281
+ return;
282
+ }
283
+ if (req.url === '/clients/list') {
284
+ this.sessions.reconcile();
285
+ send(res, 200, { clients: this.db.prepare('SELECT id,host,current AS sessionId FROM clients WHERE closed=0').all().map(row => ({ ...row, mode: row.sessionId ? this.sessions.mode(row.host, row.sessionId) : undefined })) });
286
+ return;
287
+ }
288
+ if (req.url === '/clients/policy') {
289
+ const b = z.object({ instanceId: z.string().uuid(), expectedSessionId: z.string().min(1).max(200), mode: z.enum(['all', 'off', 'once']) }).strict().parse(await jsonBody(req, 4096));
290
+ const result = await this.serialize(() => { const client = this.db.prepare('SELECT host,current FROM clients WHERE id=? AND closed=0').get(b.instanceId); if (!client || client.current !== b.expectedSessionId)
291
+ throw new HttpError(409, 'Session changed. Refresh the session list before changing it.'); this.policy(client.host, b.expectedSessionId, b.mode); return { saved: true, host: client.host, sessionId: b.expectedSessionId, mode: b.mode }; });
292
+ send(res, 200, result);
293
+ return;
294
+ }
295
+ if (req.url === '/clients/open') {
296
+ const b = z.object({ host: hostSchema, owner: ownerSchema.optional() }).strict().parse(await jsonBody(req, 4096));
297
+ send(res, 201, { instanceId: this.sessions.open(b.host, b.owner) });
298
+ return;
299
+ }
300
+ if (req.url === '/clients/owner') {
301
+ const b = z.object({ instanceId: z.string().uuid(), owner: ownerSchema }).strict().parse(await jsonBody(req, 4096));
302
+ await this.serialize(() => this.sessions.attachOwner(b.instanceId, b.owner));
303
+ send(res, 200, { ok: true });
304
+ return;
305
+ }
306
+ if (req.url === '/clients/close') {
307
+ const b = z.object({ instanceId: z.string().uuid() }).strict().parse(await jsonBody(req, 4096));
308
+ await this.serialize(() => this.sessions.close(b.instanceId));
309
+ send(res, 200, { ok: true });
310
+ return;
311
+ }
312
+ if (req.url === '/hook') {
313
+ const b = z.object({ host: hostSchema, instanceId: z.string().uuid().optional(), nativeOwner: ownerSchema.optional(), input: z.unknown() }).strict().parse(await jsonBody(req));
314
+ send(res, 200, await this.hook(b.host, b.instanceId, b.input, b.nativeOwner));
315
+ return;
316
+ }
317
+ if (req.url === '/bind') {
318
+ send(res, 200, { capability: this.bind(await jsonBody(req, 4096)) });
319
+ return;
320
+ }
321
+ if (req.url === '/claude-bind') {
322
+ const b = z.object({ context: contextSchema, toolUseId: z.string().min(1).max(200) }).strict().parse(await jsonBody(req, 4096));
323
+ send(res, 200, { capability: this.bind(b.context, b.toolUseId) });
324
+ return;
325
+ }
326
+ if (req.url === '/lookup') {
327
+ const b = z.object({ capability: z.string(), instanceId: z.string().uuid().optional() }).strict().parse(await jsonBody(req, 4096));
328
+ send(res, 200, this.resolve(b.capability, b.instanceId));
329
+ return;
330
+ }
331
+ if (req.url === '/event') {
332
+ send(res, 202, await this.enqueue(await jsonBody(req)));
333
+ return;
334
+ }
335
+ if (req.url === '/mcp') {
336
+ const b = z.object({ capability: z.string(), callId: z.string(), instanceId: z.string().uuid().optional(), content: contentSchema }).strict().parse(await jsonBody(req));
337
+ send(res, 202, await this.serialize(() => this.enqueueSerial({ context: this.resolve(b.capability, b.instanceId), source: 'mcp', callId: b.callId, content: b.content })));
338
+ return;
339
+ }
340
+ if (req.url === '/policy') {
341
+ const b = contextSchema.pick({ host: true, sessionId: true }).extend({ mode: z.enum(['all', 'once', 'off']), armedTurn: z.string().optional() }).strict().parse(await jsonBody(req, 4096));
342
+ await this.serialize(() => this.policy(b.host, b.sessionId, b.mode, b.armedTurn));
343
+ send(res, 200, { mode: b.mode });
344
+ return;
345
+ }
346
+ throw new HttpError(404, 'Not found');
347
+ }, port);
348
+ const timer = setInterval(() => { if (lifecycle && Date.now() - lastActivity >= lifecycle.idleMs && !this.busy) {
349
+ lifecycle.stop();
350
+ return;
351
+ } void this.flush(); }, Math.min(1000, lifecycle?.idleMs ?? 1000));
352
+ timer.unref();
353
+ return { ...server, stop: () => clearInterval(timer) };
354
+ }
355
+ }
356
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/daemon.ts"],"names":[],"mappings":"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"}