easyoref 1.13.0 → 1.14.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/auth.d.ts +11 -0
- package/dist/agent/auth.d.ts.map +1 -0
- package/dist/agent/auth.js +54 -0
- package/dist/agent/auth.js.map +1 -0
- package/dist/agent/clarify.d.ts +44 -0
- package/dist/agent/clarify.d.ts.map +1 -0
- package/dist/agent/clarify.js +283 -0
- package/dist/agent/clarify.js.map +1 -0
- package/dist/agent/dry-run.d.ts +12 -0
- package/dist/agent/dry-run.d.ts.map +1 -0
- package/dist/agent/dry-run.js +229 -0
- package/dist/agent/dry-run.js.map +1 -0
- package/dist/agent/gramjs-monitor.d.ts +26 -0
- package/dist/agent/gramjs-monitor.d.ts.map +1 -0
- package/dist/agent/gramjs-monitor.js +320 -0
- package/dist/agent/gramjs-monitor.js.map +1 -0
- package/dist/agent/graph.d.ts +111 -0
- package/dist/agent/graph.d.ts.map +1 -0
- package/dist/agent/graph.js +1142 -0
- package/dist/agent/graph.js.map +1 -0
- package/dist/agent/queue.d.ts +15 -0
- package/dist/agent/queue.d.ts.map +1 -0
- package/dist/agent/queue.js +41 -0
- package/dist/agent/queue.js.map +1 -0
- package/dist/agent/redis.d.ts +8 -0
- package/dist/agent/redis.d.ts.map +1 -0
- package/dist/agent/redis.js +33 -0
- package/dist/agent/redis.js.map +1 -0
- package/dist/agent/store.d.ts +71 -0
- package/dist/agent/store.d.ts.map +1 -0
- package/dist/agent/store.js +104 -0
- package/dist/agent/store.js.map +1 -0
- package/dist/agent/tools.d.ts +159 -0
- package/dist/agent/tools.d.ts.map +1 -0
- package/dist/agent/tools.js +439 -0
- package/dist/agent/tools.js.map +1 -0
- package/dist/agent/types.d.ts +163 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +26 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/worker.d.ts +14 -0
- package/dist/agent/worker.d.ts.map +1 -0
- package/dist/agent/worker.js +90 -0
- package/dist/agent/worker.js.map +1 -0
- package/dist/bin.d.ts +17 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +82 -0
- package/dist/bin.js.map +1 -0
- package/dist/bot.d.ts +16 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +600 -0
- package/dist/bot.js.map +1 -0
- package/dist/config.d.ts +125 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +145 -0
- package/dist/config.js.map +1 -0
- package/dist/gif-state.d.ts +17 -0
- package/dist/gif-state.d.ts.map +1 -0
- package/dist/gif-state.js +67 -0
- package/dist/gif-state.js.map +1 -0
- package/dist/i18n.d.ts +49 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +229 -0
- package/dist/i18n.js.map +1 -0
- package/dist/init.d.ts +7 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +163 -0
- package/dist/init.js.map +1 -0
- package/dist/logger.d.ts +14 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +45 -0
- package/dist/logger.js.map +1 -0
- package/dist/service.d.ts +19 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +165 -0
- package/dist/service.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../src/agent/dry-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GramJS MTProto channel monitor.
|
|
3
|
+
*
|
|
4
|
+
* Connects to Telegram as a user account (burner), joins/monitors
|
|
5
|
+
* the configured public channels, and stores new messages in Redis
|
|
6
|
+
* when there's an active alert window.
|
|
7
|
+
*
|
|
8
|
+
* Rate-limited: 1-2s/channel with ±500ms jitter to avoid bans.
|
|
9
|
+
* Uses exponential backoff on flood errors.
|
|
10
|
+
*/
|
|
11
|
+
export declare function startMonitor(): Promise<void>;
|
|
12
|
+
export declare function stopMonitor(): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Fetch recent messages from a public Telegram channel via MTProto.
|
|
15
|
+
* Used by the telegram_mtproto_mcp_read_sources MCP tool.
|
|
16
|
+
*
|
|
17
|
+
* @param channel - Channel username with @ prefix (e.g. "@idf_telegram")
|
|
18
|
+
* @param limit - Number of messages to fetch (1-20)
|
|
19
|
+
* @returns Array of ChannelPost objects (newest first)
|
|
20
|
+
*/
|
|
21
|
+
export declare function fetchRecentChannelPosts(channel: string, limit?: number): Promise<Array<{
|
|
22
|
+
text: string;
|
|
23
|
+
ts: number;
|
|
24
|
+
messageUrl?: string;
|
|
25
|
+
}>>;
|
|
26
|
+
//# sourceMappingURL=gramjs-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gramjs-monitor.d.ts","sourceRoot":"","sources":["../../src/agent/gramjs-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+DH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAgKlD;AA8FD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAMjD;AAID;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA+BnE"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GramJS MTProto channel monitor.
|
|
3
|
+
*
|
|
4
|
+
* Connects to Telegram as a user account (burner), joins/monitors
|
|
5
|
+
* the configured public channels, and stores new messages in Redis
|
|
6
|
+
* when there's an active alert window.
|
|
7
|
+
*
|
|
8
|
+
* Rate-limited: 1-2s/channel with ±500ms jitter to avoid bans.
|
|
9
|
+
* Uses exponential backoff on flood errors.
|
|
10
|
+
*/
|
|
11
|
+
import { Api, TelegramClient } from "telegram";
|
|
12
|
+
import { NewMessage } from "telegram/events/index.js";
|
|
13
|
+
import { StringSession } from "telegram/sessions/index.js";
|
|
14
|
+
import { config } from "../config.js";
|
|
15
|
+
import * as logger from "../logger.js";
|
|
16
|
+
import { getActiveAlert, pushChannelPost } from "./store.js";
|
|
17
|
+
let _client = null;
|
|
18
|
+
// ── Monitored channels (hardcoded) ────────────────────
|
|
19
|
+
const MONITORED_CHANNELS = [
|
|
20
|
+
// Original 5 channels
|
|
21
|
+
"@newsflashhhj",
|
|
22
|
+
"@yediotnews25",
|
|
23
|
+
"@Trueisrael",
|
|
24
|
+
"@israelsecurity",
|
|
25
|
+
"@N12LIVE",
|
|
26
|
+
// New channels added 2026-03-07
|
|
27
|
+
"@moriahdoron",
|
|
28
|
+
"@divuhim1234",
|
|
29
|
+
"@GLOBAL_Telegram_MOKED",
|
|
30
|
+
"@pkpoi",
|
|
31
|
+
"@lieldaphna",
|
|
32
|
+
"@News_cabinet_news",
|
|
33
|
+
"@yaronyanir1299",
|
|
34
|
+
"@ynetalerts",
|
|
35
|
+
"@idf_telegram",
|
|
36
|
+
];
|
|
37
|
+
const PRIVATE_CHANNELS = [
|
|
38
|
+
{
|
|
39
|
+
inviteHash: "AmLhsj0A5YJbpv0XtJQENg",
|
|
40
|
+
channelId: "1023468930",
|
|
41
|
+
title: "Private Intel Group",
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
// ── Helpers ────────────────────────────────────────────
|
|
45
|
+
function sleep(ms) {
|
|
46
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
47
|
+
}
|
|
48
|
+
function jitter(baseMs) {
|
|
49
|
+
return baseMs + Math.random() * 500 - 250;
|
|
50
|
+
}
|
|
51
|
+
// ── Client ─────────────────────────────────────────────
|
|
52
|
+
export async function startMonitor() {
|
|
53
|
+
if (!config.agent.enabled)
|
|
54
|
+
return;
|
|
55
|
+
const { apiId, apiHash, sessionString } = config.agent.mtproto;
|
|
56
|
+
if (!apiId || !apiHash) {
|
|
57
|
+
logger.warn("GramJS: api_id or api_hash not set — MTProto monitor disabled");
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const session = new StringSession(sessionString || "");
|
|
61
|
+
const clientOpts = {
|
|
62
|
+
connectionRetries: 5,
|
|
63
|
+
retryDelay: 2000,
|
|
64
|
+
autoReconnect: true,
|
|
65
|
+
deviceModel: "Desktop",
|
|
66
|
+
appVersion: "1.0.0",
|
|
67
|
+
systemVersion: "macOS 14",
|
|
68
|
+
langCode: "en",
|
|
69
|
+
};
|
|
70
|
+
// SOCKS5 proxy support
|
|
71
|
+
if (config.agent.socks5Proxy) {
|
|
72
|
+
try {
|
|
73
|
+
const proxyUrl = new URL(config.agent.socks5Proxy);
|
|
74
|
+
clientOpts.proxy = {
|
|
75
|
+
socksType: 5,
|
|
76
|
+
ip: proxyUrl.hostname,
|
|
77
|
+
port: Number(proxyUrl.port),
|
|
78
|
+
username: proxyUrl.username || undefined,
|
|
79
|
+
password: proxyUrl.password || undefined,
|
|
80
|
+
};
|
|
81
|
+
logger.info("GramJS: SOCKS5 proxy configured", {
|
|
82
|
+
host: proxyUrl.hostname,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
logger.warn("GramJS: invalid socks5_proxy URL, ignoring");
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
90
|
+
_client = new TelegramClient(session, apiId, apiHash, clientOpts);
|
|
91
|
+
if (!sessionString) {
|
|
92
|
+
logger.warn("GramJS: no session_string configured. Run `npx tsx src/agent/auth.ts` first.");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
await _client.connect();
|
|
97
|
+
logger.info("GramJS: connected to Telegram MTProto");
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
logger.error("GramJS: connection failed", { error: String(err) });
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
// Get all dialogs to check existing memberships
|
|
104
|
+
let existingChannels = new Set();
|
|
105
|
+
let existingPrivateIds = new Set();
|
|
106
|
+
try {
|
|
107
|
+
const dialogs = await _client.getDialogs({ limit: 200 });
|
|
108
|
+
for (const dialog of dialogs) {
|
|
109
|
+
const entity = dialog.entity;
|
|
110
|
+
// Public channel username
|
|
111
|
+
if (entity && "username" in entity && entity.username) {
|
|
112
|
+
existingChannels.add(String(entity.username).toLowerCase());
|
|
113
|
+
}
|
|
114
|
+
// Private channel ID
|
|
115
|
+
if (entity && "id" in entity) {
|
|
116
|
+
existingPrivateIds.add(String(entity.id));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
logger.info("GramJS: fetched existing dialogs", {
|
|
120
|
+
total: dialogs.length,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
logger.warn("GramJS: failed to fetch dialogs, will try joining anyway", {
|
|
125
|
+
error: String(err),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
// Auto-join all monitored public channels (required for NewMessage events)
|
|
129
|
+
for (const ch of MONITORED_CHANNELS) {
|
|
130
|
+
const username = ch.replace("@", "");
|
|
131
|
+
const normalizedUsername = username.toLowerCase();
|
|
132
|
+
// Check if already a member
|
|
133
|
+
if (existingChannels.has(normalizedUsername)) {
|
|
134
|
+
logger.debug("GramJS: already in channel", { channel: ch });
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
await _client.invoke(new Api.channels.JoinChannel({ channel: username }));
|
|
139
|
+
logger.info("GramJS: joined channel", { channel: ch });
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
const errStr = String(err);
|
|
143
|
+
if (errStr.includes("USER_ALREADY_PARTICIPANT")) {
|
|
144
|
+
logger.debug("GramJS: already in channel (via API)", { channel: ch });
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
logger.warn("GramJS: failed to join channel", {
|
|
148
|
+
channel: ch,
|
|
149
|
+
error: errStr,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Rate limit: 1-2s between joins
|
|
154
|
+
await sleep(jitter(1500));
|
|
155
|
+
}
|
|
156
|
+
// Auto-join private channels via invite hash
|
|
157
|
+
for (const priv of PRIVATE_CHANNELS) {
|
|
158
|
+
// Check if already a member by channel ID
|
|
159
|
+
if (existingPrivateIds.has(priv.channelId)) {
|
|
160
|
+
logger.debug("GramJS: already in private channel", { title: priv.title });
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
await _client.invoke(new Api.messages.ImportChatInvite({ hash: priv.inviteHash }));
|
|
165
|
+
logger.info("GramJS: joined private channel", { title: priv.title });
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
const errStr = String(err);
|
|
169
|
+
if (errStr.includes("USER_ALREADY_PARTICIPANT") ||
|
|
170
|
+
errStr.includes("INVITE_HASH_EXPIRED")) {
|
|
171
|
+
logger.debug("GramJS: already in private channel or hash expired", {
|
|
172
|
+
title: priv.title,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
logger.warn("GramJS: failed to join private channel", {
|
|
177
|
+
title: priv.title,
|
|
178
|
+
error: errStr,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// Rate limit: 1-2s between joins
|
|
183
|
+
await sleep(jitter(1500));
|
|
184
|
+
}
|
|
185
|
+
// Subscribe to new messages across all monitored channels
|
|
186
|
+
_client.addEventHandler(async (event) => {
|
|
187
|
+
await handleNewMessage(event).catch((err) => {
|
|
188
|
+
logger.warn("GramJS: handler error", { error: String(err) });
|
|
189
|
+
});
|
|
190
|
+
}, new NewMessage({}));
|
|
191
|
+
logger.info("GramJS: monitoring channels", {
|
|
192
|
+
public: MONITORED_CHANNELS.length,
|
|
193
|
+
private: PRIVATE_CHANNELS.length,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
async function handleNewMessage(event) {
|
|
197
|
+
const msg = event.message;
|
|
198
|
+
if (!msg?.text || !msg.peerId) {
|
|
199
|
+
logger.debug("GramJS: skipped message (no text or peerId)");
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
// Get channel identifier (username or title)
|
|
203
|
+
let channel = "";
|
|
204
|
+
let channelId = ""; // for private channels
|
|
205
|
+
let isPrivate = false;
|
|
206
|
+
try {
|
|
207
|
+
const chat = await event.message.getChat();
|
|
208
|
+
// Try to extract channel ID from peerId (for private channels)
|
|
209
|
+
if (msg.peerId && "channelId" in msg.peerId) {
|
|
210
|
+
// channelId is stored as bigint, convert to string
|
|
211
|
+
const rawId = String(msg.peerId.channelId);
|
|
212
|
+
channelId = rawId;
|
|
213
|
+
}
|
|
214
|
+
// Check if it's a monitored private channel
|
|
215
|
+
const privateMatch = PRIVATE_CHANNELS.find((p) => p.channelId === channelId);
|
|
216
|
+
if (privateMatch) {
|
|
217
|
+
channel = privateMatch.title;
|
|
218
|
+
isPrivate = true;
|
|
219
|
+
}
|
|
220
|
+
else if (chat && "username" in chat && chat.username) {
|
|
221
|
+
channel = `@${chat.username}`;
|
|
222
|
+
}
|
|
223
|
+
else if (chat && "title" in chat && chat.title) {
|
|
224
|
+
channel = String(chat.title);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
logger.debug("GramJS: skipped message (unidentifiable chat)");
|
|
228
|
+
return; // Not a channel we can identify
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
// Only care about configured channels (public or private)
|
|
235
|
+
const normalizedChannel = channel.toLowerCase();
|
|
236
|
+
const isMonitored = isPrivate ||
|
|
237
|
+
MONITORED_CHANNELS.some((c) => c.toLowerCase() === normalizedChannel ||
|
|
238
|
+
c.toLowerCase().replace("@", "") === normalizedChannel.replace("@", ""));
|
|
239
|
+
if (!isMonitored) {
|
|
240
|
+
logger.debug("GramJS: skipped message (not monitored)", { channel });
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
// Only store if there's an active alert window
|
|
244
|
+
const active = await getActiveAlert();
|
|
245
|
+
if (!active) {
|
|
246
|
+
logger.debug("GramJS: skipped message (no active alert)", { channel });
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
// Anti-flood: jittered delay
|
|
250
|
+
await sleep(jitter(1000));
|
|
251
|
+
// Build direct message URL
|
|
252
|
+
let messageUrl;
|
|
253
|
+
if (isPrivate) {
|
|
254
|
+
// Private channel: https://t.me/c/1023468930/123
|
|
255
|
+
messageUrl = `https://t.me/c/${channelId}/${msg.id}`;
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
// Public channel: https://t.me/username/123
|
|
259
|
+
const username = channel.replace("@", "");
|
|
260
|
+
messageUrl = `https://t.me/${username}/${msg.id}`;
|
|
261
|
+
}
|
|
262
|
+
await pushChannelPost(active.alertId, {
|
|
263
|
+
channel,
|
|
264
|
+
text: msg.text,
|
|
265
|
+
ts: Date.now(),
|
|
266
|
+
messageUrl,
|
|
267
|
+
});
|
|
268
|
+
logger.info("GramJS: stored channel post", {
|
|
269
|
+
channel,
|
|
270
|
+
alertId: active.alertId,
|
|
271
|
+
text_len: msg.text.length,
|
|
272
|
+
private: isPrivate,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
export async function stopMonitor() {
|
|
276
|
+
if (_client) {
|
|
277
|
+
await _client.disconnect();
|
|
278
|
+
_client = null;
|
|
279
|
+
logger.info("GramJS: disconnected");
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
// ── Fetch recent posts (used by MCP tools) ─────────────
|
|
283
|
+
/**
|
|
284
|
+
* Fetch recent messages from a public Telegram channel via MTProto.
|
|
285
|
+
* Used by the telegram_mtproto_mcp_read_sources MCP tool.
|
|
286
|
+
*
|
|
287
|
+
* @param channel - Channel username with @ prefix (e.g. "@idf_telegram")
|
|
288
|
+
* @param limit - Number of messages to fetch (1-20)
|
|
289
|
+
* @returns Array of ChannelPost objects (newest first)
|
|
290
|
+
*/
|
|
291
|
+
export async function fetchRecentChannelPosts(channel, limit = 5) {
|
|
292
|
+
if (!_client?.connected) {
|
|
293
|
+
logger.warn("GramJS: fetchRecentChannelPosts — client not connected");
|
|
294
|
+
return [];
|
|
295
|
+
}
|
|
296
|
+
const username = channel.replace("@", "");
|
|
297
|
+
const safeLimit = Math.min(Math.max(limit, 1), 20);
|
|
298
|
+
try {
|
|
299
|
+
// Rate limit: jittered delay before fetching
|
|
300
|
+
await sleep(jitter(1000));
|
|
301
|
+
const messages = await _client.getMessages(username, {
|
|
302
|
+
limit: safeLimit,
|
|
303
|
+
});
|
|
304
|
+
return messages
|
|
305
|
+
.filter((msg) => msg.text)
|
|
306
|
+
.map((msg) => ({
|
|
307
|
+
text: msg.text ?? "",
|
|
308
|
+
ts: msg.date ? msg.date * 1000 : Date.now(),
|
|
309
|
+
messageUrl: `https://t.me/${username}/${msg.id}`,
|
|
310
|
+
}));
|
|
311
|
+
}
|
|
312
|
+
catch (err) {
|
|
313
|
+
logger.warn("GramJS: fetchRecentChannelPosts failed", {
|
|
314
|
+
channel,
|
|
315
|
+
error: String(err),
|
|
316
|
+
});
|
|
317
|
+
return [];
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=gramjs-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gramjs-monitor.js","sourceRoot":"","sources":["../../src/agent/gramjs-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAK7D,IAAI,OAAO,GAA0B,IAAI,CAAC;AAE1C,yDAAyD;AAEzD,MAAM,kBAAkB,GAAG;IACzB,sBAAsB;IACtB,eAAe;IACf,eAAe;IACf,aAAa;IACb,iBAAiB;IACjB,UAAU;IACV,gCAAgC;IAChC,cAAc;IACd,cAAc;IACd,wBAAwB;IACxB,QAAQ;IACR,aAAa;IACb,oBAAoB;IACpB,iBAAiB;IACjB,aAAa;IACb,eAAe;CAChB,CAAC;AASF,MAAM,gBAAgB,GAAqB;IACzC;QACE,UAAU,EAAE,wBAAwB;QACpC,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,qBAAqB;KAC7B;CACF,CAAC;AAEF,0DAA0D;AAE1D,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,MAAM,CAAC,MAAc;IAC5B,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5C,CAAC;AAED,0DAA0D;AAE1D,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO;IAElC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAE/D,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CACT,+DAA+D,CAChE,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAY;QAC1B,iBAAiB,EAAE,CAAC;QACpB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,OAAO;QACnB,aAAa,EAAE,UAAU;QACzB,QAAQ,EAAE,IAAI;KACf,CAAC;IAEF,uBAAuB;IACvB,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACnD,UAAU,CAAC,KAAK,GAAG;gBACjB,SAAS,EAAE,CAAC;gBACZ,EAAE,EAAE,QAAQ,CAAC,QAAQ;gBACrB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,SAAS;gBACxC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,SAAS;aACzC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;gBAC7C,IAAI,EAAE,QAAQ,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAiB,CAAC,CAAC;IAEzE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CACT,8EAA8E,CAC/E,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,gDAAgD;IAChD,IAAI,gBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC9C,IAAI,kBAAkB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACzD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,0BAA0B;YAC1B,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtD,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,qBAAqB;YACrB,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC7B,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE;YAC9C,KAAK,EAAE,OAAO,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,0DAA0D,EAAE;YACtE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QAElD,4BAA4B;QAC5B,IAAI,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;oBAC5C,OAAO,EAAE,EAAE;oBACX,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,iCAAiC;QACjC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,6CAA6C;IAC7C,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,0CAA0C;QAC1C,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1E,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,CAClB,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAC7D,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,IACE,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBAC3C,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EACtC,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE;oBACjE,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE;oBACpD,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,iCAAiC;QACjC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,0DAA0D;IAC1D,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,KAAsB,EAAE,EAAE;QACvD,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvB,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;QACzC,MAAM,EAAE,kBAAkB,CAAC,MAAM;QACjC,OAAO,EAAE,gBAAgB,CAAC,MAAM;KACjC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,KAAsB;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;IAC1B,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,6CAA6C;IAC7C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,SAAS,GAAG,EAAE,CAAC,CAAC,uBAAuB;IAC3C,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAE3C,+DAA+D;QAC/D,IAAI,GAAG,CAAC,MAAM,IAAI,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC5C,mDAAmD;YACnD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3C,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,4CAA4C;QAC5C,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CACjC,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC;YAC7B,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvD,OAAO,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC;aAAM,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACjD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC9D,OAAO,CAAC,gCAAgC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,0DAA0D;IAC1D,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,WAAW,GACf,SAAS;QACT,kBAAkB,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,EAAE,KAAK,iBAAiB;YACrC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAC1E,CAAC;IAEJ,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,+CAA+C;IAC/C,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,6BAA6B;IAC7B,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1B,2BAA2B;IAC3B,IAAI,UAAkB,CAAC;IACvB,IAAI,SAAS,EAAE,CAAC;QACd,iDAAiD;QACjD,UAAU,GAAG,kBAAkB,SAAS,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1C,UAAU,GAAG,gBAAgB,QAAQ,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;QACpC,OAAO;QACP,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;QACd,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;QACzC,OAAO;QACP,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;QACzB,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3B,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,0DAA0D;AAE1D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAe,EACf,QAAgB,CAAC;IAEjB,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACtE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,6CAA6C;QAC7C,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE;YACnD,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,OAAO,QAAQ;aACZ,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;aACzB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;YACpB,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3C,UAAU,EAAE,gBAAgB,QAAQ,IAAI,GAAG,CAAC,EAAE,EAAE;SACjD,CAAC,CAAC,CAAC;IACR,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE;YACpD,OAAO;YACP,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;SACnB,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LangGraph.js enrichment pipeline — phase-aware, time-validated.
|
|
3
|
+
*
|
|
4
|
+
* KEY DESIGN PRINCIPLES:
|
|
5
|
+
* 1. TIME IS KING — every post is validated against the alert time window.
|
|
6
|
+
* LLM receives alert time + post time and scores time_relevance.
|
|
7
|
+
* Posts about previous/different attacks are rejected.
|
|
8
|
+
* 2. PHASE-AWARE — each phase extracts only what's relevant:
|
|
9
|
+
* - early_warning: origin, ETA, rocket count, cassette
|
|
10
|
+
* - siren: carries early data + adds interception, impacts
|
|
11
|
+
* - resolved: carries all + adds casualties, injuries, final stats
|
|
12
|
+
* 3. CARRY-FORWARD — results persist in Redis (EnrichmentData).
|
|
13
|
+
* Each phase inherits previous phase's findings.
|
|
14
|
+
* 4. INLINE CITATIONS — no superscripts, no footer sources.
|
|
15
|
+
* Format: [[1]](url) right after each data point.
|
|
16
|
+
* 5. DEDUP EDITS — hash-based check prevents "message not modified" spam.
|
|
17
|
+
*
|
|
18
|
+
* Pipeline:
|
|
19
|
+
* preFilter → extractAndValidate → postFilter → vote → [clarify] → editMessage
|
|
20
|
+
*/
|
|
21
|
+
import { ChatOpenAI } from "@langchain/openai";
|
|
22
|
+
import type { ChannelPost } from "./store.js";
|
|
23
|
+
import type { AlertType, CitedSource, EnrichmentData, InlineCite, ValidatedExtraction, VotedResult } from "./types.js";
|
|
24
|
+
declare const AgentState: import("@langchain/langgraph").AnnotationRoot<{
|
|
25
|
+
alertId: import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
|
|
26
|
+
alertTs: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
|
|
27
|
+
alertType: import("@langchain/langgraph").BaseChannel<AlertType, AlertType | import("@langchain/langgraph").OverwriteValue<AlertType>, unknown>;
|
|
28
|
+
alertAreas: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
|
|
29
|
+
chatId: import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
|
|
30
|
+
messageId: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
|
|
31
|
+
isCaption: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
|
|
32
|
+
currentText: import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
|
|
33
|
+
channelPosts: import("@langchain/langgraph").BaseChannel<ChannelPost[], ChannelPost[] | import("@langchain/langgraph").OverwriteValue<ChannelPost[]>, unknown>;
|
|
34
|
+
filteredPosts: import("@langchain/langgraph").BaseChannel<ChannelPost[], ChannelPost[] | import("@langchain/langgraph").OverwriteValue<ChannelPost[]>, unknown>;
|
|
35
|
+
extractions: import("@langchain/langgraph").BaseChannel<ValidatedExtraction[], ValidatedExtraction[] | import("@langchain/langgraph").OverwriteValue<ValidatedExtraction[]>, unknown>;
|
|
36
|
+
votedResult: import("@langchain/langgraph").BaseChannel<VotedResult | null, VotedResult | import("@langchain/langgraph").OverwriteValue<VotedResult | null> | null, unknown>;
|
|
37
|
+
/** Tracks whether clarify has already run (prevents infinite loop) */
|
|
38
|
+
clarifyAttempted: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
|
|
39
|
+
/** Cross-phase enrichment data loaded at start */
|
|
40
|
+
previousEnrichment: import("@langchain/langgraph").BaseChannel<EnrichmentData, EnrichmentData | import("@langchain/langgraph").OverwriteValue<EnrichmentData>, unknown>;
|
|
41
|
+
/** Session start timestamp for time window calculations */
|
|
42
|
+
sessionStartTs: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
|
|
43
|
+
/** Phase start timestamp */
|
|
44
|
+
phaseStartTs: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
|
|
45
|
+
}>;
|
|
46
|
+
type AgentStateType = typeof AgentState.State;
|
|
47
|
+
declare function getLLM(): ChatOpenAI;
|
|
48
|
+
declare function buildRegionKeywords(): string[];
|
|
49
|
+
/** Format timestamp as HH:MM Israel time */
|
|
50
|
+
declare function toIsraelTime(ts: number): string;
|
|
51
|
+
/** MD5 hash for edit dedup */
|
|
52
|
+
declare function textHash(text: string): string;
|
|
53
|
+
/** Phase-specific extraction instructions */
|
|
54
|
+
declare function getPhaseInstructions(alertType: AlertType): string;
|
|
55
|
+
declare function postFilter(state: AgentStateType): Partial<AgentStateType>;
|
|
56
|
+
declare function vote(state: AgentStateType): Partial<AgentStateType>;
|
|
57
|
+
/** Format inline citations: [[1]](url), [[2]](url) */
|
|
58
|
+
declare function inlineCites(indices: number[], citedSources: CitedSource[]): string;
|
|
59
|
+
/** Get InlineCite[] from citation indices */
|
|
60
|
+
declare function extractCites(indices: number[], citedSources: CitedSource[]): InlineCite[];
|
|
61
|
+
/** Format inline citations from InlineCite[] (for carry-forward data) */
|
|
62
|
+
declare function inlineCitesFromData(cites: InlineCite[]): string;
|
|
63
|
+
/**
|
|
64
|
+
* Build enrichment data from current vote + previous enrichment (carry-forward).
|
|
65
|
+
* Returns updated EnrichmentData for Redis persistence.
|
|
66
|
+
*/
|
|
67
|
+
declare function buildEnrichmentFromVote(r: VotedResult, prev: EnrichmentData, alertType: AlertType, alertTs: number): EnrichmentData;
|
|
68
|
+
/**
|
|
69
|
+
* Build the enriched message text from current message + enrichment data.
|
|
70
|
+
* Uses inline [[1]](url) citations. No superscripts. No footer sources.
|
|
71
|
+
*/
|
|
72
|
+
declare function buildEnrichedMessage(currentText: string, alertType: AlertType, alertTs: number, enrichment: EnrichmentData): string;
|
|
73
|
+
/**
|
|
74
|
+
* Insert a line before the time line (last "Время" / "Time" / "שעת" line).
|
|
75
|
+
*/
|
|
76
|
+
declare function insertBeforeTimeLine(text: string, line: string): string;
|
|
77
|
+
export interface RunEnrichmentInput {
|
|
78
|
+
alertId: string;
|
|
79
|
+
alertTs: number;
|
|
80
|
+
alertType: AlertType;
|
|
81
|
+
alertAreas: string[];
|
|
82
|
+
chatId: string;
|
|
83
|
+
messageId: number;
|
|
84
|
+
isCaption: boolean;
|
|
85
|
+
currentText: string;
|
|
86
|
+
}
|
|
87
|
+
export declare function runEnrichment(input: RunEnrichmentInput): Promise<void>;
|
|
88
|
+
export declare const _test: {
|
|
89
|
+
readonly getLLM: typeof getLLM;
|
|
90
|
+
readonly buildRegionKeywords: typeof buildRegionKeywords;
|
|
91
|
+
readonly LAUNCH_KEYWORDS: string[];
|
|
92
|
+
readonly TIME_WINDOW_MS: Record<AlertType, number>;
|
|
93
|
+
readonly toIsraelTime: typeof toIsraelTime;
|
|
94
|
+
readonly textHash: typeof textHash;
|
|
95
|
+
readonly postFilter: typeof postFilter;
|
|
96
|
+
readonly vote: typeof vote;
|
|
97
|
+
readonly buildEnrichmentFromVote: typeof buildEnrichmentFromVote;
|
|
98
|
+
readonly buildEnrichedMessage: typeof buildEnrichedMessage;
|
|
99
|
+
readonly insertBeforeTimeLine: typeof insertBeforeTimeLine;
|
|
100
|
+
readonly inlineCites: typeof inlineCites;
|
|
101
|
+
readonly inlineCitesFromData: typeof inlineCitesFromData;
|
|
102
|
+
readonly extractCites: typeof extractCites;
|
|
103
|
+
readonly COUNTRY_RU: Record<string, string>;
|
|
104
|
+
readonly SYSTEM_PROMPT_BASE: "You analyze Telegram channel messages about a missile/rocket attack on Israel.\nYour job: extract factual data, assess quality, AND validate temporal relevance.\n\nCRITICAL — TIME VALIDATION:\nYou will receive the alert time and the post time. You MUST determine if this post\nis about the CURRENT attack or about a previous/different event.\n- If post discusses events clearly BEFORE the alert time → time_relevance=0\n- If post is generic military news not specific to this attack → time_relevance=0.2\n- If post discusses the current attack → time_relevance=1.0\n- If uncertain → time_relevance=0.5 (the system will use alert_history to verify)\n\nReturn ONLY valid JSON (no markdown, no explanation):\n{\n \"region_relevance\": float, // 0–1: does this message discuss the specified alert region?\n \"source_trust\": float, // 0–1: factual reporting (1.0) vs unverified rumors/panic (0.0)\n \"tone\": \"calm\"|\"neutral\"|\"alarmist\",\n \"time_relevance\": float, // 0–1: is this post about the CURRENT attack? (see rules above)\n \"country_origin\": string|null, // \"Iran\",\"Yemen\",\"Lebanon\",\"Gaza\",\"Iraq\",\"Syria\" or null\n \"rocket_count\": int|null,\n \"is_cassette\": bool|null,\n \"intercepted\": int|null,\n \"intercepted_qual\": \"all\"|\"most\"|\"many\"|\"few\"|\"exists\"|\"none\"|\"more_than\"|\"less_than\"|null,\n \"intercepted_qual_num\": int|null,\n \"sea_impact\": int|null,\n \"sea_impact_qual\": \"all\"|\"most\"|\"many\"|\"few\"|\"exists\"|\"none\"|\"more_than\"|\"less_than\"|null,\n \"sea_impact_qual_num\": int|null,\n \"open_area_impact\": int|null,\n \"open_area_impact_qual\": \"all\"|\"most\"|\"many\"|\"few\"|\"exists\"|\"none\"|\"more_than\"|\"less_than\"|null,\n \"open_area_impact_qual_num\": int|null,\n \"hits_confirmed\": int|null,\n \"casualties\": int|null,\n \"injuries\": int|null,\n \"eta_refined_minutes\": int|null,\n \"confidence\": float\n}\n\nRules:\n- If unrelated to the alert region, set region_relevance=0 and all data fields to null.\n- If message is speculative/unconfirmed rumor, set source_trust < 0.4.\n- If message uses excessive caps, exclamation marks, panic language → tone=\"alarmist\".\n- Only extract concrete numbers explicitly stated in the text. Never guess.\n- *_qual fields: use ONLY when NO exact count is given. If exact number present, set *_qual=null.\n- \"none\" qual is only valid if explicitly stated (e.g., \"все перехвачены\", \"не упало в море\").\n- For IDF (@idf_telegram) posts about ongoing operations (not this specific attack) → time_relevance=0.\n- LANGUAGE NEUTRALITY: Posts may be in Hebrew, Russian, Arabic, or English. The language of the post\n MUST NOT affect source_trust or confidence. Russian-language Israeli channels are equally reliable\n and often break news faster than Hebrew ones. Judge ONLY by factual content and tone.";
|
|
105
|
+
readonly getPhaseInstructions: typeof getPhaseInstructions;
|
|
106
|
+
readonly SKIP: 0.6;
|
|
107
|
+
readonly UNCERTAIN: 0.75;
|
|
108
|
+
readonly CERTAIN: 0.95;
|
|
109
|
+
};
|
|
110
|
+
export {};
|
|
111
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/agent/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,cAAc,EAEd,UAAU,EAEV,mBAAmB,EACnB,WAAW,EACZ,MAAM,YAAY,CAAC;AAKpB,QAAA,MAAM,UAAU;;;;;;;;;;;;;IAad,sEAAsE;;IAEtE,kDAAkD;;IAElD,2DAA2D;;IAE3D,4BAA4B;;EAE5B,CAAC;AAEH,KAAK,cAAc,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC;AAI9C,iBAAS,MAAM,IAAI,UAAU,CAc5B;AAID,iBAAS,mBAAmB,IAAI,MAAM,EAAE,CAiCvC;AAsCD,4CAA4C;AAC5C,iBAAS,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMxC;AAED,8BAA8B;AAC9B,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtC;AA6GD,6CAA6C;AAC7C,iBAAS,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAmB1D;AA4KD,iBAAS,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAoDlE;AAMD,iBAAS,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAiP5D;AAiBD,sDAAsD;AACtD,iBAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAS3E;AAED,6CAA6C;AAC7C,iBAAS,YAAY,CACnB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,WAAW,EAAE,GAC1B,UAAU,EAAE,CASd;AAED,yEAAyE;AACzE,iBAAS,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAKxD;AA0CD;;;GAGG;AACH,iBAAS,uBAAuB,CAC9B,CAAC,EAAE,WAAW,EACd,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,cAAc,CAqGhB;AAED;;;GAGG;AACH,iBAAS,oBAAoB,CAC3B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,GACzB,MAAM,CAyGR;AAED;;GAEG;AACH,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAUhE;AA2SD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB5E;AAID,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;CAqBR,CAAC"}
|