mneme-ai 2.200.0 → 2.202.0
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/commands/pager.d.ts +10 -0
- package/dist/commands/pager.d.ts.map +1 -0
- package/dist/commands/pager.js +273 -0
- package/dist/commands/pager.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `mneme pager` (v2.201.0) — Cosmic Pager: approve an agent's sensitive actions from your
|
|
3
|
+
* phone (Telegram), lid closed. The 4-diamond CORE (signed authority · Trust-Tide · dead-man
|
|
4
|
+
* · court-admissible receipts) lives in @mneme-ai/core; this is the I/O: config, the local
|
|
5
|
+
* decision path (used by the agent hook), the Telegram long-poll loop, and best-effort
|
|
6
|
+
* power "breathing". Behind NAT, the laptop reaches OUT to Telegram — NO server, NO public IP.
|
|
7
|
+
*/
|
|
8
|
+
import type { Command } from "commander";
|
|
9
|
+
export declare function registerPagerCommands(program: Command): void;
|
|
10
|
+
//# sourceMappingURL=pager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pager.d.ts","sourceRoot":"","sources":["../../src/commands/pager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqHzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiG5D"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { spawn } from "node:child_process";
|
|
4
|
+
import * as https from "node:https";
|
|
5
|
+
import { pager, notary } from "@mneme-ai/core";
|
|
6
|
+
function out(s) { process.stdout.write(s + "\n"); }
|
|
7
|
+
const dir = (cwd) => join(cwd, ".mneme", "pager");
|
|
8
|
+
const cfgPath = (cwd) => join(dir(cwd), "config.json");
|
|
9
|
+
const statePath = (cwd) => join(dir(cwd), "state.json");
|
|
10
|
+
const loadCfg = (cwd) => { try {
|
|
11
|
+
return existsSync(cfgPath(cwd)) ? JSON.parse(readFileSync(cfgPath(cwd), "utf8")) : {};
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return {};
|
|
15
|
+
} };
|
|
16
|
+
const loadState = (cwd) => { try {
|
|
17
|
+
return existsSync(statePath(cwd)) ? JSON.parse(readFileSync(statePath(cwd), "utf8")) : { trust: pager.emptyTrust(), pendings: [], usedNonces: [], receipts: [] };
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return { trust: pager.emptyTrust(), pendings: [], usedNonces: [], receipts: [] };
|
|
21
|
+
} };
|
|
22
|
+
const saveState = (cwd, s) => { mkdirSync(dir(cwd), { recursive: true }); writeFileSync(statePath(cwd), JSON.stringify(s, null, 2), "utf8"); };
|
|
23
|
+
/** Deterministic blast classifier (heph can plug in later for the full gate). */
|
|
24
|
+
function classify(cmd) {
|
|
25
|
+
const c = String(cmd).toLowerCase().trim();
|
|
26
|
+
const klass = (c.split(/\s+/).slice(0, 2).join(" ") || "unknown").replace(/[^\w .-]/g, "");
|
|
27
|
+
if (/\brm\s+-rf|\bdd\b|mkfs|:\s*\(\)\s*\{|drop\s+table|truncate\s+table|git\s+push\s+.*--force|--no-verify|shutdown|reboot|>\s*\/dev\/sd/.test(c))
|
|
28
|
+
return { blast: "destructive", klass };
|
|
29
|
+
if (/\bgit\s+push\b|\bdeploy\b|\bnpm\s+publish\b|\bkubectl\b|terraform|\bcurl\b.*\|\s*(sh|bash)|chmod\s+-R/.test(c))
|
|
30
|
+
return { blast: "moderate", klass };
|
|
31
|
+
return { blast: "safe", klass };
|
|
32
|
+
}
|
|
33
|
+
function tg(token, method, body) {
|
|
34
|
+
return new Promise((resolve) => {
|
|
35
|
+
const data = JSON.stringify(body);
|
|
36
|
+
const req = https.request({ hostname: "api.telegram.org", path: `/bot${token}/${method}`, method: "POST", headers: { "content-type": "application/json", "content-length": Buffer.byteLength(data) }, timeout: 65_000 }, (res) => { let buf = ""; res.on("data", (d) => (buf += d)); res.on("end", () => { try {
|
|
37
|
+
resolve(JSON.parse(buf));
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
resolve({ ok: false });
|
|
41
|
+
} }); });
|
|
42
|
+
req.on("error", () => resolve({ ok: false }));
|
|
43
|
+
req.on("timeout", () => { req.destroy(); resolve({ ok: false }); });
|
|
44
|
+
req.write(data);
|
|
45
|
+
req.end();
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async function page(cfg, req) {
|
|
49
|
+
if (!cfg.telegramToken || !cfg.chatId)
|
|
50
|
+
return;
|
|
51
|
+
const icon = req.blast === "destructive" ? "🔴" : req.blast === "moderate" ? "🟡" : "🟢";
|
|
52
|
+
await tg(cfg.telegramToken, "sendMessage", {
|
|
53
|
+
chat_id: cfg.chatId,
|
|
54
|
+
text: `${icon} *${req.agent}* wants to run:\n_${req.summary}_\nclass: \`${req.klass}\` · blast: ${req.blast}\nhash: \`${req.commandHash.slice(0, 12)}\` · id: \`${req.id}\``,
|
|
55
|
+
parse_mode: "Markdown",
|
|
56
|
+
reply_markup: { inline_keyboard: [[{ text: "✅ Approve", callback_data: `a:${req.id}:${req.nonce}` }, { text: "⛔ Deny", callback_data: `d:${req.id}` }]] },
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function resolvePending(cwd, id, decision, decidedBy, channel, now) {
|
|
60
|
+
const st = loadState(cwd);
|
|
61
|
+
const p = st.pendings.find((x) => x.req.id === id && x.status === "pending");
|
|
62
|
+
if (!p)
|
|
63
|
+
return null;
|
|
64
|
+
p.status = decision === "allow" ? "approved" : "denied";
|
|
65
|
+
st.usedNonces.push(p.req.nonce);
|
|
66
|
+
const receipt = pager.buildReceipt(p.req, decision, decidedBy, channel, p.lane, now);
|
|
67
|
+
st.receipts.push(receipt);
|
|
68
|
+
st.trust = pager.updateTrust(st.trust, p.req.klass, decision === "allow" ? "approved" : "denied");
|
|
69
|
+
try {
|
|
70
|
+
notary.issueReceipt(cwd, { kind: "claim-verdict", subject: `pager-approval:${id}`, payload: receipt, includePayload: true, issuedAt: now });
|
|
71
|
+
}
|
|
72
|
+
catch { /* */ }
|
|
73
|
+
saveState(cwd, st);
|
|
74
|
+
return p;
|
|
75
|
+
}
|
|
76
|
+
/** Merge the PreToolUse hook into .claude/settings.json so the USER never pastes anything. */
|
|
77
|
+
function wireClaudeHook(cwd) {
|
|
78
|
+
const dirp = join(cwd, ".claude");
|
|
79
|
+
const sp = join(dirp, "settings.json");
|
|
80
|
+
try {
|
|
81
|
+
mkdirSync(dirp, { recursive: true });
|
|
82
|
+
let s = {};
|
|
83
|
+
if (existsSync(sp)) {
|
|
84
|
+
try {
|
|
85
|
+
s = JSON.parse(readFileSync(sp, "utf8"));
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
s = {};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
s.hooks = s.hooks ?? {};
|
|
92
|
+
const pre = s.hooks.PreToolUse ?? (s.hooks.PreToolUse = []);
|
|
93
|
+
const cmd = "mneme pager request --command \"$TOOL_INPUT_command\" --agent claude-code --session \"$CLAUDE_SESSION_ID\"";
|
|
94
|
+
const already = JSON.stringify(pre).includes("mneme pager request");
|
|
95
|
+
if (!already)
|
|
96
|
+
pre.push({ matcher: "Bash", hooks: [{ type: "command", command: cmd }] });
|
|
97
|
+
writeFileSync(sp, JSON.stringify(s, null, 2), "utf8");
|
|
98
|
+
return { ok: true, path: sp };
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return { ok: false, path: sp };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/** Best-effort: set the laptop lid-close action to "do nothing" so closing the lid keeps the
|
|
105
|
+
* agent running + paging (the user does not have to know any OS setting). */
|
|
106
|
+
function setLidStayAwake() {
|
|
107
|
+
try {
|
|
108
|
+
if (process.platform === "win32") {
|
|
109
|
+
spawn("powercfg", ["/setacvalueindex", "SCHEME_CURRENT", "4f971e89-eebd-4455-a8de-9e59040e7347", "5ca83367-6e45-459f-a27b-476b1d01c936", "0"], { stdio: "ignore" });
|
|
110
|
+
spawn("powercfg", ["/setdcvalueindex", "SCHEME_CURRENT", "4f971e89-eebd-4455-a8de-9e59040e7347", "5ca83367-6e45-459f-a27b-476b1d01c936", "0"], { stdio: "ignore" });
|
|
111
|
+
spawn("powercfg", ["/S", "SCHEME_CURRENT"], { stdio: "ignore" });
|
|
112
|
+
return "Windows: lid-close set to 'do nothing' (lid can close, machine stays awake).";
|
|
113
|
+
}
|
|
114
|
+
if (process.platform === "linux")
|
|
115
|
+
return "Linux: set HandleLidSwitch=ignore in /etc/systemd/logind.conf (needs sudo) — or the daemon's systemd-inhibit holds sleep while work pends.";
|
|
116
|
+
return "macOS: lid-close on battery sleeps by firmware — keep on AC, or run `sudo pmset -c disablesleep 1` once for clamshell stay-awake.";
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return "lid setting skipped (best-effort).";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/** Register `mneme pager start` to auto-start on login (so the user never runs a command). */
|
|
123
|
+
function installPagerService(cwd) {
|
|
124
|
+
const cliBin = process.argv[1] ?? "mneme";
|
|
125
|
+
try {
|
|
126
|
+
if (process.platform === "win32") {
|
|
127
|
+
spawn("schtasks", ["/Create", "/TN", "MnemeCosmicPager", "/TR", `node "${cliBin}" pager start`, "/SC", "ONLOGON", "/F"], { stdio: "ignore", cwd });
|
|
128
|
+
return "Windows: auto-start task 'MnemeCosmicPager' registered (runs on every login).";
|
|
129
|
+
}
|
|
130
|
+
if (process.platform === "darwin") {
|
|
131
|
+
const plist = join(process.env.HOME ?? "", "Library", "LaunchAgents", "dev.mneme.pager.plist");
|
|
132
|
+
mkdirSync(join(process.env.HOME ?? "", "Library", "LaunchAgents"), { recursive: true });
|
|
133
|
+
writeFileSync(plist, `<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0"><dict><key>Label</key><string>dev.mneme.pager</string><key>ProgramArguments</key><array><string>node</string><string>${cliBin}</string><string>pager</string><string>start</string></array><key>WorkingDirectory</key><string>${cwd}</string><key>RunAtLoad</key><true/><key>KeepAlive</key><true/></dict></plist>\n`, "utf8");
|
|
134
|
+
spawn("launchctl", ["load", plist], { stdio: "ignore" });
|
|
135
|
+
return "macOS: LaunchAgent 'dev.mneme.pager' registered (runs at login).";
|
|
136
|
+
}
|
|
137
|
+
const unit = join(process.env.HOME ?? "", ".config", "systemd", "user", "mneme-pager.service");
|
|
138
|
+
mkdirSync(join(process.env.HOME ?? "", ".config", "systemd", "user"), { recursive: true });
|
|
139
|
+
writeFileSync(unit, `[Unit]\nDescription=Mneme Cosmic Pager\n[Service]\nExecStart=node ${cliBin} pager start\nWorkingDirectory=${cwd}\nRestart=always\n[Install]\nWantedBy=default.target\n`, "utf8");
|
|
140
|
+
spawn("systemctl", ["--user", "enable", "--now", "mneme-pager.service"], { stdio: "ignore" });
|
|
141
|
+
return "Linux: systemd-user unit 'mneme-pager' registered + started.";
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return "service registration skipped (best-effort) — run `mneme pager start` manually.";
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
export function registerPagerCommands(program) {
|
|
148
|
+
const p = program.command("pager").description("📟 COSMIC PAGER — approve an agent's sensitive actions from your phone (Telegram), lid closed. Signed authority · self-tuning Trust-Tide · dead-man queue · court-admissible. NO server (the laptop long-polls Telegram behind NAT).");
|
|
149
|
+
p.command("autosetup")
|
|
150
|
+
.description("🚀 ONE COMMAND, ZERO USER STEPS — the AI agent runs this for the user: wires the Claude Code hook, sets lid-stay-awake, registers auto-start, and launches the pager. The user only creates a Telegram bot once (BotFather) and hands over the token + chat-id.")
|
|
151
|
+
.requiredOption("--telegram-token <t>", "from @BotFather").requiredOption("--chat-id <id>", "the user's Telegram chat id")
|
|
152
|
+
.option("--no-service", "don't register login auto-start").option("--no-start", "don't launch now")
|
|
153
|
+
.action(async (o) => {
|
|
154
|
+
const cwd = process.cwd();
|
|
155
|
+
mkdirSync(dir(cwd), { recursive: true });
|
|
156
|
+
writeFileSync(cfgPath(cwd), JSON.stringify({ telegramToken: o.telegramToken, chatId: o.chatId, mode: "hybrid", wakeIntervalMin: 5, ttlMs: 5 * 60_000 }, null, 2), "utf8");
|
|
157
|
+
const hook = wireClaudeHook(cwd);
|
|
158
|
+
const lid = setLidStayAwake();
|
|
159
|
+
const svc = o.service === false ? "auto-start: skipped" : installPagerService(cwd);
|
|
160
|
+
// send a confirmation page so the user SEES it works on their phone immediately
|
|
161
|
+
const test = await tg(o.telegramToken, "sendMessage", { chat_id: o.chatId, text: "📟 Cosmic Pager is live. You'll get approval requests here when an agent needs your OK — tap ✅ / ⛔. (Lid can close.)" });
|
|
162
|
+
if (o.start !== false) {
|
|
163
|
+
try {
|
|
164
|
+
spawn(process.execPath, [process.argv[1], "pager", "start"], { cwd, stdio: "ignore", detached: true }).unref();
|
|
165
|
+
}
|
|
166
|
+
catch { /* */ }
|
|
167
|
+
}
|
|
168
|
+
out("📟 Cosmic Pager — autosetup complete");
|
|
169
|
+
out(` ✓ config saved · ${hook.ok ? "✓ Claude Code hook wired (" + hook.path + ")" : "✗ hook not wired"}`);
|
|
170
|
+
out(` ✓ ${lid}`);
|
|
171
|
+
out(` ✓ ${svc}`);
|
|
172
|
+
out(` ${test.ok ? "✓ test message sent to your Telegram — check your phone" : "⚠ could not reach Telegram — re-check the token/chat-id"}`);
|
|
173
|
+
out(` ${o.start !== false ? "✓ pager started in the background (long-polling Telegram)" : "· not started (use --start)"}`);
|
|
174
|
+
out("\n The user did ONE thing: created a Telegram bot. Everything else is wired. Close the lid and go.");
|
|
175
|
+
});
|
|
176
|
+
p.command("setup").description("Configure the Telegram bot + policy.")
|
|
177
|
+
.requiredOption("--telegram-token <t>", "BotFather token").requiredOption("--chat-id <id>", "your Telegram chat id")
|
|
178
|
+
.option("--mode <m>", "hybrid (default)", "hybrid").option("--wake-min <n>", "RTC wake interval (min)", "5").option("--ttl-min <n>", "approval TTL (min)", "5")
|
|
179
|
+
.action((o) => {
|
|
180
|
+
mkdirSync(dir(process.cwd()), { recursive: true });
|
|
181
|
+
writeFileSync(cfgPath(process.cwd()), JSON.stringify({ telegramToken: o.telegramToken, chatId: o.chatId, mode: o.mode ?? "hybrid", wakeIntervalMin: parseInt(o.wakeMin ?? "5", 10), ttlMs: parseInt(o.ttlMin ?? "5", 10) * 60_000 }, null, 2), "utf8");
|
|
182
|
+
out("✓ pager configured. Test with `mneme pager test`, run with `mneme pager start`, wire the hook with `mneme pager hook`.");
|
|
183
|
+
});
|
|
184
|
+
p.command("request").description("Decide on a command (used by the agent hook): AUTO_ALLOW / page+hold. Prints a JSON decision.")
|
|
185
|
+
.requiredOption("--command <c>", "the raw command").option("--agent <a>", "agent id", "agent").option("--session <s>", "session id", "default")
|
|
186
|
+
.action(async (o) => {
|
|
187
|
+
const cwd = process.cwd();
|
|
188
|
+
const cfg = loadCfg(cwd);
|
|
189
|
+
const st = loadState(cwd);
|
|
190
|
+
const now = Date.now();
|
|
191
|
+
const { blast, klass } = classify(o.command);
|
|
192
|
+
const nonce = Math.abs([...`${o.command}${now}${Math.random?.() ?? 0}`].reduce((a, ch) => (a * 31 + ch.charCodeAt(0)) | 0, 7)).toString(36);
|
|
193
|
+
const req = pager.mintApprovalRequest({ rawCommand: o.command, summary: o.command.slice(0, 120), agent: o.agent ?? "agent", session: o.session ?? "default", klass, blast, nonce, now, ttlMs: cfg.ttlMs });
|
|
194
|
+
const d = pager.decide(req, st.trust);
|
|
195
|
+
if (d.action === "AUTO_ALLOW") {
|
|
196
|
+
st.trust = pager.updateTrust(st.trust, klass, "approved");
|
|
197
|
+
st.receipts.push(pager.buildReceipt(req, "allow", "policy-auto", "trust-tide", d.lane, now));
|
|
198
|
+
saveState(cwd, st);
|
|
199
|
+
out(JSON.stringify({ decision: "allow", lane: d.lane, reason: d.reason }));
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
st.pendings.push({ req, status: "pending", lane: d.lane });
|
|
203
|
+
saveState(cwd, st);
|
|
204
|
+
await page(cfg, req);
|
|
205
|
+
out(JSON.stringify({ decision: "pending", id: req.id, lane: d.lane, reason: d.reason, paged: !!(cfg.telegramToken && cfg.chatId) }));
|
|
206
|
+
});
|
|
207
|
+
p.command("approve <id>").description("Approve a pending request locally (testing without the phone).").option("--deny", "deny instead")
|
|
208
|
+
.action((id, o) => { const r = resolvePending(process.cwd(), id, o.deny ? "deny" : "allow", "human", "local", Date.now()); out(r ? `✓ ${o.deny ? "denied" : "approved"} ${id}` : "no such pending request"); });
|
|
209
|
+
p.command("status").description("Pending queue + Trust-Tide state.").action(() => {
|
|
210
|
+
const cwd = process.cwd();
|
|
211
|
+
const st = loadState(cwd);
|
|
212
|
+
const cfg = loadCfg(cwd);
|
|
213
|
+
const pend = st.pendings.filter((x) => x.status === "pending");
|
|
214
|
+
out(`📟 pager · telegram ${cfg.telegramToken ? "configured" : "NOT set"} · mode ${cfg.mode ?? "hybrid"}`);
|
|
215
|
+
out(` pending: ${pend.length}${pend.length ? " — " + pend.map((x) => `${x.req.id}(${x.req.blast})`).join(", ") : ""}`);
|
|
216
|
+
const classes = Object.entries(st.trust.classes ?? {});
|
|
217
|
+
if (classes.length)
|
|
218
|
+
out(` trust: ${classes.map(([k, c]) => `${k} ${Math.round(pager.classTrust(st.trust, k) * 100)}%(${c.approvals}/${c.approvals + c.denials})`).join(" · ")}`);
|
|
219
|
+
});
|
|
220
|
+
p.command("hook").description("Print the Claude Code PreToolUse hook snippet (paste into .claude/settings.json).").action(() => {
|
|
221
|
+
out(JSON.stringify({ hooks: { PreToolUse: [{ matcher: "Bash", hooks: [{ type: "command", command: "mneme pager request --command \"$TOOL_INPUT_command\" --agent claude-code --session \"$CLAUDE_SESSION_ID\"" }] }] } }, null, 2));
|
|
222
|
+
out("# AUTO_ALLOW → {\"decision\":\"allow\"}; otherwise paged to your phone and held. Wire your runner to await `mneme pager status`.");
|
|
223
|
+
});
|
|
224
|
+
p.command("start").description("Run the pager loop: best-effort power 'breathing' + Telegram long-poll + dead-man on each wake.")
|
|
225
|
+
.action(async () => {
|
|
226
|
+
const cwd = process.cwd();
|
|
227
|
+
const cfg = loadCfg(cwd);
|
|
228
|
+
if (!cfg.telegramToken || !cfg.chatId) {
|
|
229
|
+
out("not configured — run `mneme pager setup` first");
|
|
230
|
+
process.exitCode = 2;
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
out("📟 pager running — long-polling Telegram (Ctrl-C to stop). Lid can close; set OS lid-action to 'do nothing' for stay-awake.");
|
|
234
|
+
// best-effort sleep inhibitor (breathing power) — spawn the OS tool; harmless if absent.
|
|
235
|
+
const plat = process.platform;
|
|
236
|
+
try {
|
|
237
|
+
if (plat === "darwin")
|
|
238
|
+
spawn("caffeinate", ["-s"], { stdio: "ignore", detached: true }).unref();
|
|
239
|
+
else if (plat === "linux")
|
|
240
|
+
spawn("systemd-inhibit", ["--what=sleep", "--why=mneme-pager", "sleep", "infinity"], { stdio: "ignore", detached: true }).unref();
|
|
241
|
+
else if (plat === "win32")
|
|
242
|
+
spawn("powershell", ["-NoProfile", "-Command", "Add-Type -Name P -Namespace W -MemberDefinition '[DllImport(\"kernel32.dll\")] public static extern uint SetThreadExecutionState(uint e);'; while($true){[W.P]::SetThreadExecutionState(0x80000001); Start-Sleep 50}"], { stdio: "ignore", detached: true }).unref();
|
|
243
|
+
}
|
|
244
|
+
catch { /* power best-effort */ }
|
|
245
|
+
let offset = 0;
|
|
246
|
+
const deadmanTick = () => { const st = loadState(cwd); const r = pager.deadmanResolve(st.pendings.filter((x) => x.status === "pending"), Date.now()); for (const res of r.resolved)
|
|
247
|
+
resolvePending(cwd, res.id, res.decision, "deadman", "policy", Date.now()); };
|
|
248
|
+
setInterval(deadmanTick, (cfg.wakeIntervalMin ?? 5) * 60_000);
|
|
249
|
+
// long-poll loop
|
|
250
|
+
for (;;) {
|
|
251
|
+
const r = await tg(cfg.telegramToken, "getUpdates", { offset, timeout: 50, allowed_updates: ["callback_query"] });
|
|
252
|
+
if (r.ok && Array.isArray(r.result)) {
|
|
253
|
+
for (const u of r.result) {
|
|
254
|
+
offset = u.update_id + 1;
|
|
255
|
+
const data = u.callback_query?.data ?? "";
|
|
256
|
+
if (data.startsWith("a:")) {
|
|
257
|
+
const [, id] = data.split(":");
|
|
258
|
+
const p2 = resolvePending(cwd, id, "allow", "human", "telegram", Date.now());
|
|
259
|
+
if (p2)
|
|
260
|
+
await tg(cfg.telegramToken, "answerCallbackQuery", { callback_query_id: u.callback_query.id, text: "✅ approved — running" });
|
|
261
|
+
}
|
|
262
|
+
else if (data.startsWith("d:")) {
|
|
263
|
+
const [, id] = data.split(":");
|
|
264
|
+
const p2 = resolvePending(cwd, id, "deny", "human", "telegram", Date.now());
|
|
265
|
+
if (p2)
|
|
266
|
+
await tg(cfg.telegramToken, "answerCallbackQuery", { callback_query_id: u.callback_query.id, text: "⛔ denied" });
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=pager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pager.js","sourceRoot":"","sources":["../../src/commands/pager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA0LA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0lNvD"}
|
package/dist/index.js
CHANGED
|
@@ -103,6 +103,7 @@ import { registerGeoCommands } from "./commands/geo.js";
|
|
|
103
103
|
import { registerHeartbeatCommands } from "./commands/heartbeat.js";
|
|
104
104
|
import { registerReckonCommands } from "./commands/reckon.js";
|
|
105
105
|
import { registerSuccessionCommands } from "./commands/succession.js";
|
|
106
|
+
import { registerPagerCommands } from "./commands/pager.js";
|
|
106
107
|
import { registerAdamasCommands } from "./commands/adamas.js";
|
|
107
108
|
import { registerPrismCommands } from "./commands/prism.js";
|
|
108
109
|
import { registerGoldilocksCommands } from "./commands/goldilocks.js";
|
|
@@ -4773,6 +4774,7 @@ export async function run(argv) {
|
|
|
4773
4774
|
registerHeartbeatCommands(program);
|
|
4774
4775
|
registerReckonCommands(program);
|
|
4775
4776
|
registerSuccessionCommands(program);
|
|
4777
|
+
registerPagerCommands(program);
|
|
4776
4778
|
registerAdamasCommands(program);
|
|
4777
4779
|
registerPrismCommands(program);
|
|
4778
4780
|
registerGoldilocksCommands(program);
|