easyoref 1.27.8 → 2.0.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/agent/types.d.ts +1 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/bot.js +143 -71
- package/dist/bot.js.map +1 -1
- package/dist/gif-state.js +1 -1
- package/dist/gif-state.js.map +1 -1
- package/dist/handlers/admin.d.ts +3 -0
- package/dist/handlers/admin.d.ts.map +1 -0
- package/dist/handlers/admin.js +65 -0
- package/dist/handlers/admin.js.map +1 -0
- package/dist/handlers/inline.d.ts +3 -0
- package/dist/handlers/inline.d.ts.map +1 -0
- package/dist/handlers/inline.js +88 -0
- package/dist/handlers/inline.js.map +1 -0
- package/dist/handlers/qa.d.ts +3 -0
- package/dist/handlers/qa.d.ts.map +1 -0
- package/dist/handlers/qa.js +38 -0
- package/dist/handlers/qa.js.map +1 -0
- package/dist/handlers/shelter.d.ts +7 -0
- package/dist/handlers/shelter.d.ts.map +1 -0
- package/dist/handlers/shelter.js +38 -0
- package/dist/handlers/shelter.js.map +1 -0
- package/dist/handlers/start.d.ts +17 -0
- package/dist/handlers/start.d.ts.map +1 -0
- package/dist/handlers/start.js +61 -0
- package/dist/handlers/start.js.map +1 -0
- package/dist/middleware/tier.d.ts +7 -0
- package/dist/middleware/tier.d.ts.map +1 -0
- package/dist/middleware/tier.js +17 -0
- package/dist/middleware/tier.js.map +1 -0
- package/package.json +1 -2
package/dist/agent/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Re-export types from shared and agent packages */
|
|
2
|
-
export type { ActiveSession, AlertMeta, AlertType, AlertTypeConfig, ChannelPost, ChannelTrackingType,
|
|
2
|
+
export type { ActiveSession, AlertMeta, AlertType, AlertTypeConfig, ChannelPost, ChannelTrackingType, Enrichment, GifMode, Insight, NewsChannelWithUpdatesType, NewsMessageType, QualitativeCountType, RelevanceCheckType, RunEnrichmentInput, TelegramMessage, ValidatedInsight, VotedResult, } from "@easyoref/shared";
|
|
3
3
|
export { AgentState } from "@easyoref/agent";
|
|
4
4
|
export type { AgentStateType } from "@easyoref/agent";
|
|
5
5
|
import { createEmptyEnrichment } from "@easyoref/shared";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,YAAY,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,YAAY,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,OAAO,EACP,OAAO,EACP,0BAA0B,EAC1B,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,eAAO,MAAM,eAAe,8BAAwB,CAAC"}
|
package/dist/agent/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAAC"}
|
package/dist/bot.js
CHANGED
|
@@ -12,30 +12,32 @@
|
|
|
12
12
|
*
|
|
13
13
|
* No LLM needed — purely deterministic matching for <1s latency.
|
|
14
14
|
*/
|
|
15
|
-
import { buildEnrichedMessage, enqueueEnrich, startEnrichWorker, stopEnrichWorker, } from "@easyoref/agent";
|
|
16
|
-
import { startMonitor, stopMonitor } from "@easyoref/gramjs";
|
|
17
|
-
import
|
|
18
|
-
import
|
|
15
|
+
import { buildEnrichedMessage, enqueueEnrich, runCanary, startEnrichWorker, stopEnrichWorker, } from "@easyoref/agent";
|
|
16
|
+
import { isGramJsConnected, startMonitor, stopMonitor } from "@easyoref/gramjs";
|
|
17
|
+
import { clearSession, closeRedis, config, getActiveSession, getAllUsers, getEnrichment, getLanguagePack, getLastUpdateTs, initLangSmithTracing, initTranslations, PHASE_ENRICH_DELAY_MS, PHASE_INITIAL_DELAY_MS, saveAlertMeta, setActiveSession, translateAreas, } from "@easyoref/shared";
|
|
18
|
+
import * as logger from "@easyoref/shared/logger";
|
|
19
19
|
import { Bot } from "grammy";
|
|
20
20
|
import { createServer } from "node:http";
|
|
21
21
|
import { initGifState, pickGif } from "./gif-state.js";
|
|
22
|
-
|
|
22
|
+
import { registerAdminHandler } from "./handlers/admin.js";
|
|
23
|
+
import { registerInlineHandler } from "./handlers/inline.js";
|
|
24
|
+
import { registerQaHandler } from "./handlers/qa.js";
|
|
25
|
+
import { registerShelterHandler } from "./handlers/shelter.js";
|
|
26
|
+
import { initDefaultAreas, registerStartHandler } from "./handlers/start.js";
|
|
23
27
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
24
|
-
// Area Filter
|
|
28
|
+
// Per-user Area Filter
|
|
25
29
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
26
|
-
/** Check if
|
|
27
|
-
function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (alertAreas.some((a) => a.startsWith(monitored) || monitored.startsWith(a)))
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
return false;
|
|
30
|
+
/** Check if this user has any of their configured areas in the alert. */
|
|
31
|
+
function userMatchesAlert(user, alertAreas) {
|
|
32
|
+
if (user.areas.length === 0)
|
|
33
|
+
return true; // no filter → all alerts
|
|
34
|
+
return user.areas.some((monitored) => alertAreas.some((a) => a === monitored || a.startsWith(monitored) || monitored.startsWith(a)));
|
|
35
35
|
}
|
|
36
|
-
/** Return
|
|
37
|
-
function
|
|
38
|
-
|
|
36
|
+
/** Return the user's matched area label, falling back to full alert areas. */
|
|
37
|
+
function userMatchedLabel(user, alertAreas) {
|
|
38
|
+
if (user.areas.length === 0)
|
|
39
|
+
return alertAreas.slice(0, 3).join(", ");
|
|
40
|
+
const matched = alertAreas.filter((a) => user.areas.some((m) => a === m || a.startsWith(m) || m.startsWith(a)));
|
|
39
41
|
return matched.length > 0
|
|
40
42
|
? matched.join(", ")
|
|
41
43
|
: alertAreas.slice(0, 3).join(", ");
|
|
@@ -57,6 +59,25 @@ function classifyAlertType(title) {
|
|
|
57
59
|
return "red_alert";
|
|
58
60
|
}
|
|
59
61
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
62
|
+
// Health tracking
|
|
63
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
64
|
+
let lastAlertTs = 0;
|
|
65
|
+
let registeredUserCount = 0;
|
|
66
|
+
/** Called by processAlert after sending a Telegram message */
|
|
67
|
+
function trackAlert() {
|
|
68
|
+
lastAlertTs = Date.now();
|
|
69
|
+
}
|
|
70
|
+
/** Update registered user count (called periodically) */
|
|
71
|
+
async function refreshUserCount() {
|
|
72
|
+
try {
|
|
73
|
+
const users = await getAllUsers();
|
|
74
|
+
registeredUserCount = users.length;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// non-critical
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
60
81
|
// Cooldown / Dedup
|
|
61
82
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
62
83
|
const COOLDOWN_EARLY_MS = 3 * 60 * 1000; // 3 min (Oref sends multiple alert IDs per wave)
|
|
@@ -237,16 +258,7 @@ function initBot() {
|
|
|
237
258
|
logger.error("BOT_TOKEN not set — Telegram DISABLED");
|
|
238
259
|
return null;
|
|
239
260
|
}
|
|
240
|
-
|
|
241
|
-
logger.error("CHAT_ID not set — Telegram DISABLED");
|
|
242
|
-
return null;
|
|
243
|
-
}
|
|
244
|
-
logger.info("Bot initialized", {
|
|
245
|
-
chat_ids: config.chatIds.map((id) => id.slice(0, -4) + "****"),
|
|
246
|
-
language: config.language,
|
|
247
|
-
areas: config.areas,
|
|
248
|
-
gif_mode: config.gifMode,
|
|
249
|
-
});
|
|
261
|
+
logger.info("Bot initialized", { gif_mode: config.gifMode });
|
|
250
262
|
return new Bot(config.botToken);
|
|
251
263
|
}
|
|
252
264
|
function nowHHMM() {
|
|
@@ -256,12 +268,14 @@ function nowHHMM() {
|
|
|
256
268
|
timeZone: "Asia/Jerusalem",
|
|
257
269
|
});
|
|
258
270
|
}
|
|
259
|
-
function formatMessage(alertType, areas) {
|
|
271
|
+
function formatMessage(alertType, areas, language) {
|
|
260
272
|
const time = nowHHMM();
|
|
261
|
-
const
|
|
273
|
+
const lang = language ?? "ru";
|
|
274
|
+
const localAreas = translateAreas(areas, lang);
|
|
262
275
|
const cfgKey = ALERT_TYPE_TO_CONFIG[alertType];
|
|
263
|
-
const
|
|
264
|
-
const
|
|
276
|
+
const lp = getLanguagePack(lang);
|
|
277
|
+
const defaults = lp.alerts[cfgKey];
|
|
278
|
+
const labels = lp.labels;
|
|
265
279
|
const emoji = config.emojiOverride[cfgKey] ?? defaults.emoji;
|
|
266
280
|
const title = config.titleOverride[cfgKey] ?? defaults.title;
|
|
267
281
|
const desc = config.descriptionOverride[cfgKey] ?? defaults.description;
|
|
@@ -360,8 +374,11 @@ async function sendTelegram(chatId, alertType, text, replyToMessageId) {
|
|
|
360
374
|
// Alert Processing
|
|
361
375
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
362
376
|
async function processAlert(alert) {
|
|
363
|
-
|
|
364
|
-
|
|
377
|
+
// ── Load all registered users and find those matching this alert's areas ──
|
|
378
|
+
const allUsers = await getAllUsers();
|
|
379
|
+
const matchedUsers = allUsers.filter((u) => userMatchesAlert(u, alert.data));
|
|
380
|
+
if (matchedUsers.length === 0) {
|
|
381
|
+
logger.info("Alert — no users matched area", {
|
|
365
382
|
alert_id: alert.id,
|
|
366
383
|
areas_he: alert.data,
|
|
367
384
|
});
|
|
@@ -378,11 +395,14 @@ async function processAlert(alert) {
|
|
|
378
395
|
});
|
|
379
396
|
return;
|
|
380
397
|
}
|
|
381
|
-
const areas =
|
|
398
|
+
const areas = matchedUsers[0]
|
|
399
|
+
? userMatchedLabel(matchedUsers[0], alert.data)
|
|
400
|
+
: alert.data.slice(0, 3).join(", ");
|
|
382
401
|
logger.info("Alert — RELEVANT", {
|
|
383
402
|
alert_id: alert.id,
|
|
384
403
|
type: alertType,
|
|
385
404
|
areas_he: alert.data,
|
|
405
|
+
matched_users: matchedUsers.length,
|
|
386
406
|
});
|
|
387
407
|
if (!shouldSend(alertType)) {
|
|
388
408
|
logger.info("Cooldown active, skipping Telegram", {
|
|
@@ -392,17 +412,18 @@ async function processAlert(alert) {
|
|
|
392
412
|
return;
|
|
393
413
|
}
|
|
394
414
|
markSent(alertType);
|
|
395
|
-
|
|
396
|
-
|
|
415
|
+
trackAlert();
|
|
416
|
+
// Build canonical (English) base message for session storage
|
|
417
|
+
const baseMessage = formatMessage(alertType, areas, "en");
|
|
397
418
|
const alertTs = Date.now();
|
|
398
|
-
// ── Reply chain + carry-forward enrichment ──
|
|
419
|
+
// ── Reply chain + carry-forward enrichment (per-session) ──
|
|
399
420
|
const replyToMap = new Map();
|
|
421
|
+
let legacyInsights = [];
|
|
400
422
|
if (config.agent.enabled) {
|
|
401
423
|
const existingForReply = await getActiveSession();
|
|
402
424
|
const shouldReply = existingForReply &&
|
|
403
425
|
(alertType === "resolved" || existingForReply.phase !== "resolved");
|
|
404
426
|
if (shouldReply) {
|
|
405
|
-
// Build per-chat reply targets
|
|
406
427
|
const cms = existingForReply.telegramMessages ?? [
|
|
407
428
|
{
|
|
408
429
|
chatId: existingForReply.chatId,
|
|
@@ -418,25 +439,46 @@ async function processAlert(alert) {
|
|
|
418
439
|
prevEnrichment.rocketCount ||
|
|
419
440
|
prevEnrichment.intercepted;
|
|
420
441
|
if (hasData) {
|
|
421
|
-
|
|
422
|
-
const legacyInsights = Object.entries(prevEnrichment)
|
|
442
|
+
legacyInsights = Object.entries(prevEnrichment)
|
|
423
443
|
.filter(([, v]) => v !== undefined && v !== "")
|
|
424
|
-
.map(([key, value]) =>
|
|
425
|
-
|
|
444
|
+
.map(([key, value]) => {
|
|
445
|
+
const v = String(value);
|
|
446
|
+
return {
|
|
447
|
+
key,
|
|
448
|
+
value: { ru: v, en: v, he: v, ar: v },
|
|
449
|
+
confidence: 0.5,
|
|
450
|
+
sourceUrls: [],
|
|
451
|
+
};
|
|
452
|
+
});
|
|
426
453
|
}
|
|
427
454
|
}
|
|
428
455
|
}
|
|
429
456
|
try {
|
|
430
|
-
// ── Send to
|
|
457
|
+
// ── Send to each matched user in their language ──
|
|
458
|
+
// Only pro users are tracked in telegramMessages (for enrichment editing).
|
|
459
|
+
// Free users receive a plain message in private chats only.
|
|
431
460
|
const telegramMessages = [];
|
|
432
|
-
for (const
|
|
433
|
-
const
|
|
434
|
-
|
|
435
|
-
if (
|
|
461
|
+
for (const user of matchedUsers) {
|
|
462
|
+
const isPro = user.tier === "pro";
|
|
463
|
+
// Free users cannot receive alerts in group/channel chats (negative chatId)
|
|
464
|
+
if (!isPro && user.chatId.startsWith("-"))
|
|
465
|
+
continue;
|
|
466
|
+
const lang = (user.language ?? "ru");
|
|
467
|
+
const userAreaLabel = userMatchedLabel(user, alert.data);
|
|
468
|
+
let message = formatMessage(alertType, userAreaLabel, lang);
|
|
469
|
+
// Only pro users get carry-forward enrichment pre-populated
|
|
470
|
+
if (isPro && legacyInsights.length > 0) {
|
|
471
|
+
message = buildEnrichedMessage(message, alertType, alertTs, legacyInsights, lang);
|
|
472
|
+
}
|
|
473
|
+
const replyTo = replyToMap.get(user.chatId);
|
|
474
|
+
const sent = await sendTelegram(user.chatId, alertType, message, replyTo);
|
|
475
|
+
if (sent && isPro) {
|
|
476
|
+
// Only pro users tracked — enrichment agent only edits their messages
|
|
436
477
|
telegramMessages.push({
|
|
437
|
-
chatId:
|
|
478
|
+
chatId: user.chatId,
|
|
438
479
|
messageId: sent.messageId,
|
|
439
480
|
isCaption: sent.isCaption,
|
|
481
|
+
language: user.language,
|
|
440
482
|
});
|
|
441
483
|
}
|
|
442
484
|
}
|
|
@@ -446,7 +488,7 @@ async function processAlert(alert) {
|
|
|
446
488
|
// ── Session-based enrichment lifecycle ──
|
|
447
489
|
if (config.agent.enabled) {
|
|
448
490
|
const existingSession = await getActiveSession();
|
|
449
|
-
// Save meta for this alert (primary chat)
|
|
491
|
+
// Save meta for this alert (primary chat; English canonical text)
|
|
450
492
|
await saveAlertMeta({
|
|
451
493
|
alertId: alert.id,
|
|
452
494
|
messageId: primary.messageId,
|
|
@@ -455,7 +497,7 @@ async function processAlert(alert) {
|
|
|
455
497
|
alertTs,
|
|
456
498
|
alertType,
|
|
457
499
|
alertAreas: alert.data,
|
|
458
|
-
currentText:
|
|
500
|
+
currentText: baseMessage,
|
|
459
501
|
});
|
|
460
502
|
if (alertType === "resolved") {
|
|
461
503
|
// ── Resolved: switch existing session to resolved phase ──
|
|
@@ -469,7 +511,7 @@ async function processAlert(alert) {
|
|
|
469
511
|
latestAlertTs: alertTs,
|
|
470
512
|
chatId: primary.chatId,
|
|
471
513
|
isCaption: primary.isCaption,
|
|
472
|
-
currentText:
|
|
514
|
+
currentText: baseMessage,
|
|
473
515
|
baseText: baseMessage,
|
|
474
516
|
telegramMessages,
|
|
475
517
|
};
|
|
@@ -500,7 +542,7 @@ async function processAlert(alert) {
|
|
|
500
542
|
latestAlertTs: alertTs,
|
|
501
543
|
chatId: primary.chatId,
|
|
502
544
|
isCaption: primary.isCaption,
|
|
503
|
-
currentText:
|
|
545
|
+
currentText: baseMessage,
|
|
504
546
|
baseText: baseMessage,
|
|
505
547
|
alertAreas: alert.data,
|
|
506
548
|
telegramMessages,
|
|
@@ -528,7 +570,7 @@ async function processAlert(alert) {
|
|
|
528
570
|
latestAlertTs: alertTs,
|
|
529
571
|
chatId: primary.chatId,
|
|
530
572
|
isCaption: primary.isCaption,
|
|
531
|
-
currentText:
|
|
573
|
+
currentText: baseMessage,
|
|
532
574
|
baseText: baseMessage,
|
|
533
575
|
alertAreas: alert.data,
|
|
534
576
|
telegramMessages,
|
|
@@ -556,17 +598,34 @@ async function processAlert(alert) {
|
|
|
556
598
|
// Health Server
|
|
557
599
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
558
600
|
function startHealthServer() {
|
|
559
|
-
const server = createServer((req, res) => {
|
|
601
|
+
const server = createServer(async (req, res) => {
|
|
560
602
|
if (req.url === "/health") {
|
|
603
|
+
let redisConnected = false;
|
|
604
|
+
let activeSessionPhase = null;
|
|
605
|
+
let lastEnrichTs = 0;
|
|
606
|
+
try {
|
|
607
|
+
const session = await getActiveSession();
|
|
608
|
+
activeSessionPhase = session?.phase ?? null;
|
|
609
|
+
lastEnrichTs = await getLastUpdateTs();
|
|
610
|
+
redisConnected = true;
|
|
611
|
+
}
|
|
612
|
+
catch {
|
|
613
|
+
// Redis unreachable
|
|
614
|
+
}
|
|
561
615
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
562
616
|
res.end(JSON.stringify({
|
|
563
617
|
status: "ok",
|
|
564
618
|
service: "easyoref",
|
|
565
619
|
uptime: process.uptime(),
|
|
566
620
|
seen_alerts: seenAlerts.size,
|
|
567
|
-
language: config.language,
|
|
568
621
|
gif_mode: config.gifMode,
|
|
569
|
-
|
|
622
|
+
last_alert_ts: lastAlertTs || null,
|
|
623
|
+
last_enrichment_ts: lastEnrichTs || null,
|
|
624
|
+
registered_users: registeredUserCount,
|
|
625
|
+
redis_connected: redisConnected,
|
|
626
|
+
gramjs_connected: config.agent.enabled ? isGramJsConnected() : null,
|
|
627
|
+
active_session_phase: activeSessionPhase,
|
|
628
|
+
agent_enabled: config.agent.enabled,
|
|
570
629
|
}));
|
|
571
630
|
}
|
|
572
631
|
else {
|
|
@@ -585,24 +644,30 @@ async function main() {
|
|
|
585
644
|
logger.info("EasyOref starting", {
|
|
586
645
|
poll_interval_ms: config.pollIntervalMs,
|
|
587
646
|
telegram: config.botToken ? "enabled" : "disabled",
|
|
588
|
-
language: config.language,
|
|
589
647
|
gif_mode: config.gifMode,
|
|
590
|
-
areas: config.areas,
|
|
591
648
|
});
|
|
592
|
-
|
|
593
|
-
//
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
649
|
+
// Load area translations (fetches cities.json from pikud-haoref-api).
|
|
650
|
+
// Retry once if network not ready yet (common on RPi cold boot).
|
|
651
|
+
await initTranslations().catch(async () => {
|
|
652
|
+
logger.warn("initTranslations failed — retrying in 30s");
|
|
653
|
+
await new Promise((r) => setTimeout(r, 30_000));
|
|
654
|
+
await initTranslations().catch(() => {
|
|
655
|
+
logger.warn("initTranslations failed on retry — area names may show in Hebrew");
|
|
599
656
|
});
|
|
600
|
-
}
|
|
601
|
-
if (config.areas.length === 0) {
|
|
602
|
-
logger.warn("No areas configured — bot will not filter alerts by area");
|
|
603
|
-
}
|
|
657
|
+
});
|
|
604
658
|
initGifState(config.dataDir);
|
|
605
659
|
bot = initBot();
|
|
660
|
+
if (bot) {
|
|
661
|
+
initDefaultAreas();
|
|
662
|
+
registerStartHandler(bot);
|
|
663
|
+
registerAdminHandler(bot);
|
|
664
|
+
registerShelterHandler(bot);
|
|
665
|
+
registerQaHandler(bot);
|
|
666
|
+
registerInlineHandler(bot);
|
|
667
|
+
bot.start({ drop_pending_updates: true }).catch((err) => {
|
|
668
|
+
logger.error("Bot polling failed", { error: String(err) });
|
|
669
|
+
});
|
|
670
|
+
}
|
|
606
671
|
startHealthServer();
|
|
607
672
|
// Start agent subsystems if enabled
|
|
608
673
|
if (config.agent.enabled) {
|
|
@@ -615,6 +680,12 @@ async function main() {
|
|
|
615
680
|
channels: 14, // MONITORED_CHANNELS length (hardcoded)
|
|
616
681
|
enrich_delay_ms: config.agent.enrichDelayMs,
|
|
617
682
|
});
|
|
683
|
+
// Canary: synthetic self-test (non-blocking)
|
|
684
|
+
if (config.agent.canary) {
|
|
685
|
+
runCanary().catch((err) => {
|
|
686
|
+
logger.error("Canary failed", { error: String(err) });
|
|
687
|
+
});
|
|
688
|
+
}
|
|
618
689
|
}
|
|
619
690
|
// Poll loop
|
|
620
691
|
setInterval(async () => {
|
|
@@ -631,12 +702,13 @@ async function main() {
|
|
|
631
702
|
logger.error("Poll error", { error: String(err) });
|
|
632
703
|
}
|
|
633
704
|
}, config.pollIntervalMs);
|
|
634
|
-
// Heartbeat — flush Logtail buffer every 30s
|
|
705
|
+
// Heartbeat — flush Logtail buffer + refresh user count every 30s
|
|
635
706
|
setInterval(async () => {
|
|
636
707
|
logger.debug("heartbeat", {
|
|
637
708
|
uptime_s: Math.round(process.uptime()),
|
|
638
709
|
seen_alerts: seenAlerts.size,
|
|
639
710
|
});
|
|
711
|
+
await refreshUserCount();
|
|
640
712
|
await logger.flush();
|
|
641
713
|
}, 30_000);
|
|
642
714
|
// Graceful shutdown
|
package/dist/bot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
package/dist/gif-state.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Stores which GIFs have been shown to avoid repeats.
|
|
5
5
|
* State survives restarts + redeploys via JSON file.
|
|
6
6
|
*/
|
|
7
|
-
import * as logger from "@easyoref/
|
|
7
|
+
import * as logger from "@easyoref/shared/logger";
|
|
8
8
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
let gifBags = {};
|
package/dist/gif-state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gif-state.js","sourceRoot":"","sources":["../src/gif-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"gif-state.js","sourceRoot":"","sources":["../src/gif-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAWjC,IAAI,OAAO,GAAY,EAAE,CAAC;AAC1B,IAAI,aAAa,GAAG,EAAE,CAAC;AAEvB;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAEhD,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;IAED,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,MAAM,GAAiB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;YAC7D,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACxC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;oBAC9B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM;oBAClC,IAAI,EAAE,aAAa;iBACpB,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;IACb,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,OAAO;IACd,IAAI,CAAC;QACH,MAAM,KAAK,GAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1D,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,IAAc,EAAE,OAAe;IACrD,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAChD,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;IACzB,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAG,CAAC;IACvB,OAAO,EAAE,CAAC;IACV,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/handlers/admin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAMlC,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAgEnD"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { config, getAllUsers, setUserTier } from "@easyoref/shared";
|
|
2
|
+
import * as logger from "@easyoref/shared/logger";
|
|
3
|
+
function isAdmin(chatId) {
|
|
4
|
+
return config.adminChatIds.includes(Number(chatId));
|
|
5
|
+
}
|
|
6
|
+
export function registerAdminHandler(bot) {
|
|
7
|
+
// /grant <chatId> — upgrade user to Pro
|
|
8
|
+
bot.command("grant", async (ctx) => {
|
|
9
|
+
const adminId = String(ctx.chat.id);
|
|
10
|
+
if (!isAdmin(adminId)) {
|
|
11
|
+
await ctx.reply("Unauthorized.");
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const args = ctx.match?.trim();
|
|
15
|
+
if (!args) {
|
|
16
|
+
await ctx.reply("Usage: /grant <chatId>");
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const success = await setUserTier(args, "pro");
|
|
20
|
+
if (success) {
|
|
21
|
+
await ctx.reply(`✅ User ${args} upgraded to Pro.`);
|
|
22
|
+
logger.info("Admin: granted pro", { adminId, targetId: args });
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
await ctx.reply(`User ${args} not found.`);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
// /revoke <chatId> — downgrade user to Free
|
|
29
|
+
bot.command("revoke", async (ctx) => {
|
|
30
|
+
const adminId = String(ctx.chat.id);
|
|
31
|
+
if (!isAdmin(adminId)) {
|
|
32
|
+
await ctx.reply("Unauthorized.");
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const args = ctx.match?.trim();
|
|
36
|
+
if (!args) {
|
|
37
|
+
await ctx.reply("Usage: /revoke <chatId>");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const success = await setUserTier(args, "free");
|
|
41
|
+
if (success) {
|
|
42
|
+
await ctx.reply(`✅ User ${args} downgraded to Free.`);
|
|
43
|
+
logger.info("Admin: revoked pro", { adminId, targetId: args });
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
await ctx.reply(`User ${args} not found.`);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
// /users — list all registered users
|
|
50
|
+
bot.command("users", async (ctx) => {
|
|
51
|
+
const adminId = String(ctx.chat.id);
|
|
52
|
+
if (!isAdmin(adminId)) {
|
|
53
|
+
await ctx.reply("Unauthorized.");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const allUsers = await getAllUsers();
|
|
57
|
+
if (allUsers.length === 0) {
|
|
58
|
+
await ctx.reply("No registered users.");
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const lines = allUsers.map((u) => `• <code>${u.chatId}</code> — ${u.tier} — ${u.language} — ${u.areas.join(", ")}`);
|
|
62
|
+
await ctx.reply(`<b>Registered Users (${allUsers.length}):</b>\n\n${lines.join("\n")}`, { parse_mode: "HTML" });
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/handlers/admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline.d.ts","sourceRoot":"","sources":["../../src/handlers/inline.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAGlC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAmFpD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { runQa } from "@easyoref/agent";
|
|
2
|
+
import { getActiveSession, getUser } from "@easyoref/shared";
|
|
3
|
+
import * as logger from "@easyoref/shared/logger";
|
|
4
|
+
export function registerInlineHandler(bot) {
|
|
5
|
+
bot.on("inline_query", async (ctx) => {
|
|
6
|
+
const query = ctx.inlineQuery.query.trim();
|
|
7
|
+
const results = [];
|
|
8
|
+
try {
|
|
9
|
+
if (!query) {
|
|
10
|
+
// Status widget — show current alert status from Redis
|
|
11
|
+
const session = await getActiveSession();
|
|
12
|
+
if (session) {
|
|
13
|
+
const phase = session.phase;
|
|
14
|
+
const areas = session.alertAreas.slice(0, 3).join(", ");
|
|
15
|
+
results.push({
|
|
16
|
+
type: "article",
|
|
17
|
+
id: "current_status",
|
|
18
|
+
title: `\u{1F6A8} Active Alert (${phase})`,
|
|
19
|
+
description: areas,
|
|
20
|
+
input_message_content: {
|
|
21
|
+
message_text: `<b>\u{1F6A8} Active Alert</b>\nPhase: ${phase}\nAreas: ${areas}`,
|
|
22
|
+
parse_mode: "HTML",
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
results.push({
|
|
28
|
+
type: "article",
|
|
29
|
+
id: "no_alerts",
|
|
30
|
+
title: "\u2705 No Active Alerts",
|
|
31
|
+
description: "All clear",
|
|
32
|
+
input_message_content: {
|
|
33
|
+
message_text: "<b>\u2705 No Active Alerts</b>\nEasyOref is monitoring for threats.",
|
|
34
|
+
parse_mode: "HTML",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// Q&A — run the QA graph
|
|
41
|
+
const chatId = String(ctx.from.id);
|
|
42
|
+
const user = await getUser(chatId);
|
|
43
|
+
if (user) {
|
|
44
|
+
const answer = await runQa(query, chatId);
|
|
45
|
+
const preview = answer.slice(0, 50) + (answer.length > 50 ? "…" : "");
|
|
46
|
+
results.push({
|
|
47
|
+
type: "article",
|
|
48
|
+
id: "qa_answer",
|
|
49
|
+
title: preview,
|
|
50
|
+
description: answer.slice(0, 100),
|
|
51
|
+
input_message_content: {
|
|
52
|
+
message_text: answer,
|
|
53
|
+
parse_mode: "HTML",
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
results.push({
|
|
59
|
+
type: "article",
|
|
60
|
+
id: "not_registered",
|
|
61
|
+
title: "Not registered",
|
|
62
|
+
description: "Use /start to register",
|
|
63
|
+
input_message_content: {
|
|
64
|
+
message_text: "Please start the bot first: @easyorefbot",
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
logger.error("Inline query failed", {
|
|
72
|
+
error: String(err),
|
|
73
|
+
query: query.slice(0, 100),
|
|
74
|
+
});
|
|
75
|
+
results.push({
|
|
76
|
+
type: "article",
|
|
77
|
+
id: "error",
|
|
78
|
+
title: "Error",
|
|
79
|
+
description: "Could not process query",
|
|
80
|
+
input_message_content: {
|
|
81
|
+
message_text: "An error occurred. Please try again.",
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
await ctx.answerInlineQuery(results, { cache_time: 30 });
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline.js","sourceRoot":"","sources":["../../src/handlers/inline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qa.d.ts","sourceRoot":"","sources":["../../src/handlers/qa.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAElC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAmChD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { runQa } from "@easyoref/agent";
|
|
2
|
+
import { config, getRedis, getUser } from "@easyoref/shared";
|
|
3
|
+
import * as logger from "@easyoref/shared/logger";
|
|
4
|
+
export function registerQaHandler(bot) {
|
|
5
|
+
bot.on("message:text", async (ctx) => {
|
|
6
|
+
if (ctx.chat.type !== "private")
|
|
7
|
+
return;
|
|
8
|
+
const chatId = String(ctx.chat.id);
|
|
9
|
+
// Rate limit: qaRateLimitPerMin per user (Redis INCR + EXPIRE)
|
|
10
|
+
const redis = getRedis();
|
|
11
|
+
const rateLimitKey = `qa:rate:${chatId}`;
|
|
12
|
+
const count = await redis.incr(rateLimitKey);
|
|
13
|
+
if (count === 1)
|
|
14
|
+
await redis.expire(rateLimitKey, 60);
|
|
15
|
+
if (count > config.agent.qaRateLimitPerMin) {
|
|
16
|
+
await ctx.reply("Too many questions. Please wait a minute.");
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// Skip /commands — let grammY command handlers handle them
|
|
20
|
+
if (ctx.message.text.startsWith("/"))
|
|
21
|
+
return;
|
|
22
|
+
const user = await getUser(chatId);
|
|
23
|
+
if (!user) {
|
|
24
|
+
await ctx.reply("Please use /start to register first.");
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
await ctx.replyWithChatAction("typing");
|
|
28
|
+
try {
|
|
29
|
+
const answer = await runQa(ctx.message.text, chatId);
|
|
30
|
+
await ctx.reply(answer, { parse_mode: "HTML" });
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
logger.error("Q&A failed", { error: String(err), chatId });
|
|
34
|
+
await ctx.reply("I couldn't process your question. Please try again.");
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=qa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qa.js","sourceRoot":"","sources":["../../src/handlers/qa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAGlD,MAAM,UAAU,iBAAiB,CAAC,GAAQ;IACxC,GAAG,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACnC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO;QAExC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEnC,+DAA+D;QAC/D,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,WAAW,MAAM,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC3C,MAAM,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,2DAA2D;QAC3D,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAE7C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,GAAG,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,MAAM,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACrD,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,MAAM,GAAG,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shelter search handler — responds to location messages with nearest bomb shelters.
|
|
3
|
+
* Safety-critical feature: available to ALL tiers (free + pro).
|
|
4
|
+
*/
|
|
5
|
+
import type { Bot } from "grammy";
|
|
6
|
+
export declare function registerShelterHandler(bot: Bot): void;
|
|
7
|
+
//# sourceMappingURL=shelter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shelter.d.ts","sourceRoot":"","sources":["../../src/handlers/shelter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAiBlC,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CA2BrD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shelter search handler — responds to location messages with nearest bomb shelters.
|
|
3
|
+
* Safety-critical feature: available to ALL tiers (free + pro).
|
|
4
|
+
*/
|
|
5
|
+
import { fetchNearestShelters } from "@easyoref/shared";
|
|
6
|
+
import * as logger from "@easyoref/shared/logger";
|
|
7
|
+
function formatShelterList(nearest) {
|
|
8
|
+
const lines = nearest.map((s, i) => {
|
|
9
|
+
const dist = s.distanceKm < 1
|
|
10
|
+
? `${Math.round(s.distanceKm * 1000)}m`
|
|
11
|
+
: `${s.distanceKm.toFixed(1)}km`;
|
|
12
|
+
return (`${i + 1}. <b>${s.name}</b>${s.address ? ` — ${s.address}` : ""}\n` +
|
|
13
|
+
` 📍 ${dist} (~${s.walkingMinutes} min walk)\n` +
|
|
14
|
+
` <a href="${s.googleMapsUrl}">Open in Maps</a>`);
|
|
15
|
+
});
|
|
16
|
+
return `🏚 <b>Nearest shelters:</b>\n\n${lines.join("\n\n")}`;
|
|
17
|
+
}
|
|
18
|
+
export function registerShelterHandler(bot) {
|
|
19
|
+
bot.on("message:location", async (ctx) => {
|
|
20
|
+
const { latitude, longitude } = ctx.message.location;
|
|
21
|
+
const chatId = String(ctx.chat.id);
|
|
22
|
+
logger.info("Shelter search requested", { chatId, latitude, longitude });
|
|
23
|
+
// Send typing indicator while fetching
|
|
24
|
+
await ctx.replyWithChatAction("find_location").catch(() => { });
|
|
25
|
+
const nearest = await fetchNearestShelters(latitude, longitude);
|
|
26
|
+
if (nearest.length === 0) {
|
|
27
|
+
await ctx.reply("No shelters found nearby in OpenStreetMap data.\n\n" +
|
|
28
|
+
"Try the official Pikud HaOref shelter finder:\n" +
|
|
29
|
+
"https://www.oref.org.il/NAShelters/", { link_preview_options: { is_disabled: true } });
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
await ctx.reply(formatShelterList(nearest), {
|
|
33
|
+
parse_mode: "HTML",
|
|
34
|
+
link_preview_options: { is_disabled: true },
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=shelter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shelter.js","sourceRoot":"","sources":["../../src/handlers/shelter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAoB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAGlD,SAAS,iBAAiB,CAAC,OAAsB;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,IAAI,GACR,CAAC,CAAC,UAAU,GAAG,CAAC;YACd,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG;YACvC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,OAAO,CACL,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;YACnE,SAAS,IAAI,MAAM,CAAC,CAAC,cAAc,cAAc;YACjD,eAAe,CAAC,CAAC,aAAa,oBAAoB,CACnD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,kCAAkC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAQ;IAC7C,GAAG,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACvC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEnC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAEzE,uCAAuC;QACvC,MAAM,GAAG,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEhE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAC,KAAK,CACb,qDAAqD;gBACnD,iDAAiD;gBACjD,qCAAqC,EACvC,EAAE,oBAAoB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAChD,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;YAC1C,UAAU,EAAE,MAAM;YAClB,oBAAoB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Bot } from "grammy";
|
|
2
|
+
export declare function initDefaultAreas(): void;
|
|
3
|
+
/**
|
|
4
|
+
* /start [lang] — register or update user.
|
|
5
|
+
* In private chat: registers the user with their chat ID.
|
|
6
|
+
* In group chat: registers the group chat ID.
|
|
7
|
+
*
|
|
8
|
+
* Areas default to config.city_ids (resolved Hebrew names).
|
|
9
|
+
* Language defaults to "ru" or optional argument.
|
|
10
|
+
*
|
|
11
|
+
* Examples:
|
|
12
|
+
* /start → register with default language (ru)
|
|
13
|
+
* /start en → register with English
|
|
14
|
+
* /start he → register with Hebrew
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerStartHandler(bot: Bot): void;
|
|
17
|
+
//# sourceMappingURL=start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/handlers/start.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAKlC,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CA8CnD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { config, getUser, isValidLanguage, resolveCityIds, saveUser, } from "@easyoref/shared";
|
|
2
|
+
import * as logger from "@easyoref/shared/logger";
|
|
3
|
+
/** Default areas from config city_ids (resolved at startup via initTranslations) */
|
|
4
|
+
let defaultAreas = [];
|
|
5
|
+
export function initDefaultAreas() {
|
|
6
|
+
if (config.cityIds.length > 0) {
|
|
7
|
+
defaultAreas = resolveCityIds(config.cityIds);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* /start [lang] — register or update user.
|
|
12
|
+
* In private chat: registers the user with their chat ID.
|
|
13
|
+
* In group chat: registers the group chat ID.
|
|
14
|
+
*
|
|
15
|
+
* Areas default to config.city_ids (resolved Hebrew names).
|
|
16
|
+
* Language defaults to "ru" or optional argument.
|
|
17
|
+
*
|
|
18
|
+
* Examples:
|
|
19
|
+
* /start → register with default language (ru)
|
|
20
|
+
* /start en → register with English
|
|
21
|
+
* /start he → register with Hebrew
|
|
22
|
+
*/
|
|
23
|
+
export function registerStartHandler(bot) {
|
|
24
|
+
bot.command("start", async (ctx) => {
|
|
25
|
+
const chatId = String(ctx.chat.id);
|
|
26
|
+
const args = ctx.match?.trim();
|
|
27
|
+
// Parse optional language argument
|
|
28
|
+
let lang = "ru";
|
|
29
|
+
if (args && isValidLanguage(args)) {
|
|
30
|
+
lang = args;
|
|
31
|
+
}
|
|
32
|
+
// Resolve areas: use defaults from config city_ids
|
|
33
|
+
const areas = defaultAreas.length > 0 ? defaultAreas : ["תל אביב - דרום העיר ויפו"];
|
|
34
|
+
const existing = await getUser(chatId);
|
|
35
|
+
if (existing) {
|
|
36
|
+
// Update language if changed, refresh lastActiveAt
|
|
37
|
+
const updated = {
|
|
38
|
+
...existing,
|
|
39
|
+
language: lang,
|
|
40
|
+
lastActiveAt: Date.now(),
|
|
41
|
+
};
|
|
42
|
+
await saveUser(updated);
|
|
43
|
+
await ctx.reply(`✅ Updated! Language: ${lang}, Areas: ${areas.join(", ")}`);
|
|
44
|
+
logger.info("User updated via /start", { chatId, lang });
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// New registration
|
|
48
|
+
const user = {
|
|
49
|
+
chatId,
|
|
50
|
+
language: lang,
|
|
51
|
+
areas,
|
|
52
|
+
tier: "free",
|
|
53
|
+
registeredAt: Date.now(),
|
|
54
|
+
lastActiveAt: Date.now(),
|
|
55
|
+
};
|
|
56
|
+
await saveUser(user);
|
|
57
|
+
await ctx.reply(`✅ Registered! Language: ${lang}, Areas: ${areas.join(", ")}\n\nYou will receive alerts for these areas.`);
|
|
58
|
+
logger.info("User registered via /start", { chatId, lang, areas });
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/handlers/start.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,OAAO,EACP,eAAe,EACf,cAAc,EACd,QAAQ,GAET,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAGlD,oFAAoF;AACpF,IAAI,YAAY,GAAa,EAAE,CAAC;AAEhC,MAAM,UAAU,gBAAgB;IAC9B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAQ;IAC3C,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAE/B,mCAAmC;QACnC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;QAED,mDAAmD;QACnD,MAAM,KAAK,GACT,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QAExE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,mDAAmD;YACnD,MAAM,OAAO,GAAe;gBAC1B,GAAG,QAAQ;gBACX,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;aACzB,CAAC;YACF,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxB,MAAM,GAAG,CAAC,KAAK,CACb,wBAAwB,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3D,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,mBAAmB;QACnB,MAAM,IAAI,GAAe;YACvB,MAAM;YACN,QAAQ,EAAE,IAAI;YACd,KAAK;YACL,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;YACxB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;SACzB,CAAC;QACF,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,GAAG,CAAC,KAAK,CACb,2BAA2B,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,CAC1G,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Context, NextFunction } from "grammy";
|
|
2
|
+
/**
|
|
3
|
+
* Middleware that requires the user to have a "pro" tier.
|
|
4
|
+
* Replies with an upgrade prompt and stops the handler chain for free users.
|
|
5
|
+
*/
|
|
6
|
+
export declare function requirePro(ctx: Context, next: NextFunction): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=tier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier.d.ts","sourceRoot":"","sources":["../../src/middleware/tier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEpD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getUser } from "@easyoref/shared";
|
|
2
|
+
/**
|
|
3
|
+
* Middleware that requires the user to have a "pro" tier.
|
|
4
|
+
* Replies with an upgrade prompt and stops the handler chain for free users.
|
|
5
|
+
*/
|
|
6
|
+
export async function requirePro(ctx, next) {
|
|
7
|
+
const chatId = String(ctx.chat?.id ?? "");
|
|
8
|
+
if (!chatId)
|
|
9
|
+
return;
|
|
10
|
+
const user = await getUser(chatId);
|
|
11
|
+
if (user?.tier !== "pro") {
|
|
12
|
+
await ctx.reply("This feature requires Pro tier. Contact the bot admin.");
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
return next();
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=tier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier.js","sourceRoot":"","sources":["../../src/middleware/tier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAY,EACZ,IAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,IAAI,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IACD,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easyoref",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Real-time Israeli civil defense alerts → Telegram, filtered by your location",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -37,7 +37,6 @@
|
|
|
37
37
|
"js-yaml": "^4.1.1",
|
|
38
38
|
"qrcode-terminal": "^0.12.0",
|
|
39
39
|
"@easyoref/shared": "*",
|
|
40
|
-
"@easyoref/monitoring": "*",
|
|
41
40
|
"@easyoref/agent": "*",
|
|
42
41
|
"@easyoref/gramjs": "*"
|
|
43
42
|
},
|