easyoref 1.18.4 → 1.20.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/extract.d.ts +5 -5
- package/dist/agent/extract.d.ts.map +1 -1
- package/dist/agent/extract.js +86 -110
- package/dist/agent/extract.js.map +1 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +21 -30
- package/dist/agent/types.js.map +1 -1
- package/dist/bot.js +17 -19
- package/dist/bot.js.map +1 -1
- package/dist/gif-state.js +1 -1
- package/dist/gif-state.js.map +1 -1
- package/dist/init.js +1 -1
- package/dist/init.js.map +1 -1
- package/package.json +5 -9
- package/dist/agent/auth.d.ts +0 -11
- package/dist/agent/auth.d.ts.map +0 -1
- package/dist/agent/auth.js +0 -54
- package/dist/agent/auth.js.map +0 -1
- package/dist/agent/clarify.d.ts +0 -44
- package/dist/agent/clarify.d.ts.map +0 -1
- package/dist/agent/clarify.js +0 -284
- package/dist/agent/clarify.js.map +0 -1
- package/dist/agent/dry-run.d.ts +0 -12
- package/dist/agent/dry-run.d.ts.map +0 -1
- package/dist/agent/dry-run.js +0 -236
- package/dist/agent/dry-run.js.map +0 -1
- package/dist/agent/filters.d.ts +0 -48
- package/dist/agent/filters.d.ts.map +0 -1
- package/dist/agent/filters.js +0 -124
- package/dist/agent/filters.js.map +0 -1
- package/dist/agent/gramjs-monitor.d.ts +0 -26
- package/dist/agent/gramjs-monitor.d.ts.map +0 -1
- package/dist/agent/gramjs-monitor.js +0 -324
- package/dist/agent/gramjs-monitor.js.map +0 -1
- package/dist/agent/graph.d.ts +0 -30
- package/dist/agent/graph.d.ts.map +0 -1
- package/dist/agent/graph.js +0 -240
- package/dist/agent/graph.js.map +0 -1
- package/dist/agent/helpers.d.ts +0 -6
- package/dist/agent/helpers.d.ts.map +0 -1
- package/dist/agent/helpers.js +0 -15
- package/dist/agent/helpers.js.map +0 -1
- package/dist/agent/message.d.ts +0 -69
- package/dist/agent/message.d.ts.map +0 -1
- package/dist/agent/message.js +0 -464
- package/dist/agent/message.js.map +0 -1
- package/dist/agent/queue.d.ts +0 -15
- package/dist/agent/queue.d.ts.map +0 -1
- package/dist/agent/queue.js +0 -41
- package/dist/agent/queue.js.map +0 -1
- package/dist/agent/redis.d.ts +0 -8
- package/dist/agent/redis.d.ts.map +0 -1
- package/dist/agent/redis.js +0 -33
- package/dist/agent/redis.js.map +0 -1
- package/dist/agent/store.d.ts +0 -93
- package/dist/agent/store.d.ts.map +0 -1
- package/dist/agent/store.js +0 -145
- package/dist/agent/store.js.map +0 -1
- package/dist/agent/tools.d.ts +0 -159
- package/dist/agent/tools.d.ts.map +0 -1
- package/dist/agent/tools.js +0 -439
- package/dist/agent/tools.js.map +0 -1
- package/dist/agent/types.d.ts +0 -213
- package/dist/agent/vote.d.ts +0 -13
- package/dist/agent/vote.d.ts.map +0 -1
- package/dist/agent/vote.js +0 -226
- package/dist/agent/vote.js.map +0 -1
- package/dist/agent/worker.d.ts +0 -14
- package/dist/agent/worker.d.ts.map +0 -1
- package/dist/agent/worker.js +0 -137
- package/dist/agent/worker.js.map +0 -1
- package/dist/bin.d.ts +0 -17
- package/dist/bot.d.ts +0 -16
- package/dist/config.d.ts +0 -129
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -157
- package/dist/config.js.map +0 -1
- package/dist/gif-state.d.ts +0 -17
- package/dist/i18n.d.ts +0 -49
- package/dist/i18n.d.ts.map +0 -1
- package/dist/i18n.js +0 -229
- package/dist/i18n.js.map +0 -1
- package/dist/init.d.ts +0 -7
- package/dist/logger.d.ts +0 -14
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -45
- package/dist/logger.js.map +0 -1
- package/dist/service.d.ts +0 -19
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -165
- package/dist/service.js.map +0 -1
package/dist/agent/graph.js
DELETED
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LangGraph.js enrichment pipeline — phase-aware, time-validated.
|
|
3
|
-
*
|
|
4
|
-
* Lean orchestrator: connects filter → extract → vote → edit.
|
|
5
|
-
* All logic lives in dedicated modules:
|
|
6
|
-
* - filters.ts: deterministic noise filter, channel tracking
|
|
7
|
-
* - extract.ts: cheap LLM pre-filter, expensive extraction, post-filter
|
|
8
|
-
* - vote.ts: consensus voting (deterministic)
|
|
9
|
-
* - message.ts: message building, Telegram editing
|
|
10
|
-
* - helpers.ts: toIsraelTime, textHash
|
|
11
|
-
*
|
|
12
|
-
* Pipeline:
|
|
13
|
-
* collectAndFilter → extract → vote → [clarify → revote] → editMessage
|
|
14
|
-
*/
|
|
15
|
-
import { Annotation, MemorySaver, StateGraph } from "@langchain/langgraph";
|
|
16
|
-
import { config } from "../config.js";
|
|
17
|
-
import * as logger from "../logger.js";
|
|
18
|
-
import { runClarify } from "./clarify.js";
|
|
19
|
-
import { extractPosts, filterChannelsCheap, postFilter, } from "./extract.js";
|
|
20
|
-
import { buildChannelTracking } from "./filters.js";
|
|
21
|
-
import { editMessage } from "./message.js";
|
|
22
|
-
import { getActiveSession, getChannelPosts, getEnrichmentData, getLastUpdateTs, setLastUpdateTs, } from "./store.js";
|
|
23
|
-
import { emptyEnrichmentData } from "./types.js";
|
|
24
|
-
import { vote } from "./vote.js";
|
|
25
|
-
// ── State ──────────────────────────────────────────────
|
|
26
|
-
const AgentState = Annotation.Root({
|
|
27
|
-
alertId: Annotation({ reducer: (_, b) => b }),
|
|
28
|
-
alertTs: Annotation({ reducer: (_, b) => b }),
|
|
29
|
-
alertType: Annotation({ reducer: (_, b) => b }),
|
|
30
|
-
alertAreas: Annotation({ reducer: (_, b) => b }),
|
|
31
|
-
chatId: Annotation({ reducer: (_, b) => b }),
|
|
32
|
-
messageId: Annotation({ reducer: (_, b) => b }),
|
|
33
|
-
isCaption: Annotation({ reducer: (_, b) => b }),
|
|
34
|
-
currentText: Annotation({ reducer: (_, b) => b }),
|
|
35
|
-
tracking: Annotation({ reducer: (_, b) => b }),
|
|
36
|
-
extractions: Annotation({ reducer: (_, b) => b }),
|
|
37
|
-
votedResult: Annotation({ reducer: (_, b) => b }),
|
|
38
|
-
clarifyAttempted: Annotation({ reducer: (_, b) => b }),
|
|
39
|
-
previousEnrichment: Annotation({ reducer: (_, b) => b }),
|
|
40
|
-
monitoringLabel: Annotation({ reducer: (_, b) => b }),
|
|
41
|
-
chatMessages: Annotation({
|
|
42
|
-
reducer: (_, b) => b,
|
|
43
|
-
}),
|
|
44
|
-
});
|
|
45
|
-
// ── Node: collect posts + deterministic noise filter ───
|
|
46
|
-
async function collectAndFilter(state) {
|
|
47
|
-
const posts = await getChannelPosts(state.alertId);
|
|
48
|
-
const prevEnrichment = await getEnrichmentData();
|
|
49
|
-
const session = await getActiveSession();
|
|
50
|
-
const sessionStartTs = session?.sessionStartTs ?? state.alertTs;
|
|
51
|
-
const lastUpdateTs = await getLastUpdateTs();
|
|
52
|
-
if (posts.length === 0) {
|
|
53
|
-
logger.info("Agent: no posts", { alertId: state.alertId });
|
|
54
|
-
return { tracking: null, previousEnrichment: prevEnrichment };
|
|
55
|
-
}
|
|
56
|
-
const tracking = buildChannelTracking(posts, sessionStartTs, lastUpdateTs);
|
|
57
|
-
logger.info("Agent: channel tracking", {
|
|
58
|
-
alertId: state.alertId,
|
|
59
|
-
total_posts: posts.length,
|
|
60
|
-
channels_with_updates: tracking.channels_with_updates.length,
|
|
61
|
-
total_new_posts: tracking.channels_with_updates.reduce((s, c) => s + c.last_tracked_messages.length, 0),
|
|
62
|
-
});
|
|
63
|
-
return { tracking, previousEnrichment: prevEnrichment };
|
|
64
|
-
}
|
|
65
|
-
// ── Node: cheap LLM channel filter + expensive extraction ──
|
|
66
|
-
async function extractNode(state) {
|
|
67
|
-
if (!state.tracking || state.tracking.channels_with_updates.length === 0) {
|
|
68
|
-
logger.info("Agent: no channels with updates", {
|
|
69
|
-
alertId: state.alertId,
|
|
70
|
-
});
|
|
71
|
-
return { extractions: [] };
|
|
72
|
-
}
|
|
73
|
-
// Step 1: cheap LLM — which channels have important military intel?
|
|
74
|
-
const relevantChannels = await filterChannelsCheap(state.tracking, state.alertAreas, state.alertTs, state.alertType);
|
|
75
|
-
if (relevantChannels.length === 0) {
|
|
76
|
-
logger.info("Agent: no relevant channels after cheap filter", {
|
|
77
|
-
alertId: state.alertId,
|
|
78
|
-
});
|
|
79
|
-
return { extractions: [] };
|
|
80
|
-
}
|
|
81
|
-
// Step 2: collect posts from relevant channels only
|
|
82
|
-
const postsToExtract = [];
|
|
83
|
-
for (const ch of state.tracking.channels_with_updates) {
|
|
84
|
-
const match = relevantChannels.some((rc) => rc === ch.channel || rc === `@${ch.channel}` || `@${rc}` === ch.channel);
|
|
85
|
-
if (match) {
|
|
86
|
-
postsToExtract.push(...ch.last_tracked_messages);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (postsToExtract.length === 0) {
|
|
90
|
-
logger.info("Agent: no posts from relevant channels", {
|
|
91
|
-
alertId: state.alertId,
|
|
92
|
-
});
|
|
93
|
-
return { extractions: [] };
|
|
94
|
-
}
|
|
95
|
-
// Step 3: expensive extraction with post-level dedup
|
|
96
|
-
const ctx = {
|
|
97
|
-
alertTs: state.alertTs,
|
|
98
|
-
alertType: state.alertType,
|
|
99
|
-
alertAreas: state.alertAreas,
|
|
100
|
-
alertId: state.alertId,
|
|
101
|
-
language: config.language,
|
|
102
|
-
existingEnrichment: state.previousEnrichment,
|
|
103
|
-
};
|
|
104
|
-
const raw = await extractPosts(postsToExtract, ctx);
|
|
105
|
-
// Step 4: deterministic post-filter
|
|
106
|
-
const filtered = postFilter(raw, state.alertId);
|
|
107
|
-
// Update timestamp for next job's dedup split
|
|
108
|
-
await setLastUpdateTs(Date.now());
|
|
109
|
-
return { extractions: filtered };
|
|
110
|
-
}
|
|
111
|
-
// ── Node: vote ─────────────────────────────────────────
|
|
112
|
-
function voteNode(state) {
|
|
113
|
-
return { votedResult: vote(state.extractions, state.alertId) };
|
|
114
|
-
}
|
|
115
|
-
// ── Node: clarify (MCP tool calling) ───────────────────
|
|
116
|
-
async function clarifyNode(state) {
|
|
117
|
-
if (!state.votedResult) {
|
|
118
|
-
logger.info("Agent: clarify skipped — no voted result", {
|
|
119
|
-
alertId: state.alertId,
|
|
120
|
-
});
|
|
121
|
-
return { clarifyAttempted: true };
|
|
122
|
-
}
|
|
123
|
-
logger.info("Agent: clarify triggered", {
|
|
124
|
-
alertId: state.alertId,
|
|
125
|
-
confidence: state.votedResult.confidence,
|
|
126
|
-
});
|
|
127
|
-
try {
|
|
128
|
-
const result = await runClarify({
|
|
129
|
-
alertId: state.alertId,
|
|
130
|
-
alertAreas: state.alertAreas,
|
|
131
|
-
alertType: state.alertType,
|
|
132
|
-
alertTs: state.alertTs,
|
|
133
|
-
messageId: state.messageId,
|
|
134
|
-
currentText: state.currentText,
|
|
135
|
-
extractions: state.extractions,
|
|
136
|
-
votedResult: state.votedResult,
|
|
137
|
-
});
|
|
138
|
-
return {
|
|
139
|
-
extractions: [...state.extractions, ...result.newExtractions],
|
|
140
|
-
votedResult: null,
|
|
141
|
-
clarifyAttempted: true,
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
logger.error("Agent: clarify failed", {
|
|
146
|
-
alertId: state.alertId,
|
|
147
|
-
error: String(err),
|
|
148
|
-
});
|
|
149
|
-
return { clarifyAttempted: true };
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
// ── Node: edit Telegram message ────────────────────────
|
|
153
|
-
async function editNode(state) {
|
|
154
|
-
await editMessage({
|
|
155
|
-
alertId: state.alertId,
|
|
156
|
-
alertTs: state.alertTs,
|
|
157
|
-
alertType: state.alertType,
|
|
158
|
-
chatId: state.chatId,
|
|
159
|
-
messageId: state.messageId,
|
|
160
|
-
isCaption: state.isCaption,
|
|
161
|
-
chatMessages: state.chatMessages,
|
|
162
|
-
currentText: state.currentText,
|
|
163
|
-
votedResult: state.votedResult,
|
|
164
|
-
previousEnrichment: state.previousEnrichment ?? emptyEnrichmentData(),
|
|
165
|
-
monitoringLabel: state.monitoringLabel,
|
|
166
|
-
});
|
|
167
|
-
return {};
|
|
168
|
-
}
|
|
169
|
-
// ── Conditional routing after vote ─────────────────────
|
|
170
|
-
function shouldClarify(state) {
|
|
171
|
-
if (state.clarifyAttempted)
|
|
172
|
-
return "editMessage";
|
|
173
|
-
if (!config.agent.mcpTools)
|
|
174
|
-
return "editMessage";
|
|
175
|
-
if (!state.votedResult)
|
|
176
|
-
return "editMessage";
|
|
177
|
-
if (state.votedResult.confidence < config.agent.confidenceThreshold) {
|
|
178
|
-
logger.info("Agent: routing to clarify (low confidence)", {
|
|
179
|
-
confidence: state.votedResult.confidence,
|
|
180
|
-
});
|
|
181
|
-
return "clarify";
|
|
182
|
-
}
|
|
183
|
-
// Suspicious single-source: Lebanon for central Israel → verify
|
|
184
|
-
const origins = state.votedResult.country_origins;
|
|
185
|
-
if (origins &&
|
|
186
|
-
origins.length === 1 &&
|
|
187
|
-
state.votedResult.sources_count === 1) {
|
|
188
|
-
if (origins[0].name === "Lebanon" &&
|
|
189
|
-
state.alertAreas.some((a) => a.includes("תל אביב") ||
|
|
190
|
-
a.includes("גוש דן") ||
|
|
191
|
-
a.includes("שרון") ||
|
|
192
|
-
a.includes("מרכז"))) {
|
|
193
|
-
logger.info("Agent: routing to clarify (suspicious Lebanon origin)", {});
|
|
194
|
-
return "clarify";
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
return "editMessage";
|
|
198
|
-
}
|
|
199
|
-
// ── Build graph ────────────────────────────────────────
|
|
200
|
-
const checkpointer = new MemorySaver();
|
|
201
|
-
function buildGraph() {
|
|
202
|
-
return new StateGraph(AgentState)
|
|
203
|
-
.addNode("collectAndFilter", collectAndFilter)
|
|
204
|
-
.addNode("extract", extractNode)
|
|
205
|
-
.addNode("vote", voteNode)
|
|
206
|
-
.addNode("clarify", clarifyNode)
|
|
207
|
-
.addNode("revote", voteNode)
|
|
208
|
-
.addNode("editMessage", editNode)
|
|
209
|
-
.addEdge("__start__", "collectAndFilter")
|
|
210
|
-
.addEdge("collectAndFilter", "extract")
|
|
211
|
-
.addEdge("extract", "vote")
|
|
212
|
-
.addConditionalEdges("vote", shouldClarify, {
|
|
213
|
-
clarify: "clarify",
|
|
214
|
-
editMessage: "editMessage",
|
|
215
|
-
})
|
|
216
|
-
.addEdge("clarify", "revote")
|
|
217
|
-
.addEdge("revote", "editMessage")
|
|
218
|
-
.addEdge("editMessage", "__end__")
|
|
219
|
-
.compile({ checkpointer });
|
|
220
|
-
}
|
|
221
|
-
export async function runEnrichment(input) {
|
|
222
|
-
await buildGraph().invoke({
|
|
223
|
-
alertId: input.alertId,
|
|
224
|
-
alertTs: input.alertTs,
|
|
225
|
-
alertType: input.alertType,
|
|
226
|
-
alertAreas: input.alertAreas,
|
|
227
|
-
chatId: input.chatId,
|
|
228
|
-
messageId: input.messageId,
|
|
229
|
-
isCaption: input.isCaption,
|
|
230
|
-
chatMessages: input.chatMessages,
|
|
231
|
-
currentText: input.currentText,
|
|
232
|
-
tracking: null,
|
|
233
|
-
extractions: [],
|
|
234
|
-
votedResult: null,
|
|
235
|
-
clarifyAttempted: false,
|
|
236
|
-
previousEnrichment: emptyEnrichmentData(),
|
|
237
|
-
monitoringLabel: input.monitoringLabel,
|
|
238
|
-
}, { configurable: { thread_id: input.alertId } });
|
|
239
|
-
}
|
|
240
|
-
//# sourceMappingURL=graph.js.map
|
package/dist/agent/graph.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/agent/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/helpers.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/** Shared utility functions for the agent subsystem. */
|
|
2
|
-
/** Format timestamp as HH:MM Israel time */
|
|
3
|
-
export declare function toIsraelTime(ts: number): string;
|
|
4
|
-
/** MD5 hash for dedup */
|
|
5
|
-
export declare function textHash(text: string): string;
|
|
6
|
-
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/agent/helpers.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAIxD,4CAA4C;AAC5C,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,yBAAyB;AACzB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C"}
|
package/dist/agent/helpers.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/** Shared utility functions for the agent subsystem. */
|
|
2
|
-
import { createHash } from "node:crypto";
|
|
3
|
-
/** Format timestamp as HH:MM Israel time */
|
|
4
|
-
export function toIsraelTime(ts) {
|
|
5
|
-
return new Date(ts).toLocaleTimeString("he-IL", {
|
|
6
|
-
hour: "2-digit",
|
|
7
|
-
minute: "2-digit",
|
|
8
|
-
timeZone: "Asia/Jerusalem",
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
/** MD5 hash for dedup */
|
|
12
|
-
export function textHash(text) {
|
|
13
|
-
return createHash("md5").update(text).digest("hex");
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/agent/helpers.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,4CAA4C;AAC5C,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAC9C,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,gBAAgB;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC"}
|
package/dist/agent/message.d.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Message building and Telegram editing.
|
|
3
|
-
*
|
|
4
|
-
* Builds enriched message text from voted consensus + carry-forward data.
|
|
5
|
-
* Uses inline [[1]](url) citations. No superscripts. No footer sources.
|
|
6
|
-
*/
|
|
7
|
-
import type { AlertType, CitedSource, EnrichmentData, InlineCite, VotedResult } from "./types.js";
|
|
8
|
-
/** EN country name → Russian */
|
|
9
|
-
export declare const COUNTRY_RU: Record<string, string>;
|
|
10
|
-
/** Format inline citations: [[1]](url), [[2]](url) */
|
|
11
|
-
export declare function inlineCites(indices: number[], citedSources: CitedSource[]): string;
|
|
12
|
-
/** Get InlineCite[] from citation indices */
|
|
13
|
-
export declare function extractCites(indices: number[], citedSources: CitedSource[]): InlineCite[];
|
|
14
|
-
/** Format inline citations from InlineCite[] (carry-forward data) */
|
|
15
|
-
export declare function inlineCitesFromData(cites: InlineCite[]): string;
|
|
16
|
-
/**
|
|
17
|
-
* Build a global URL→index map across ALL enrichment fields.
|
|
18
|
-
* Deduplicates by URL so the same source gets the same [N] everywhere.
|
|
19
|
-
*/
|
|
20
|
-
export declare function buildGlobalCiteMap(enrichment: EnrichmentData): Map<string, number>;
|
|
21
|
-
/** Format inline citations using global numbering */
|
|
22
|
-
export declare function renderCitesGlobal(cites: InlineCite[], globalMap: Map<string, number>): string;
|
|
23
|
-
export declare const SKIP = 0.6;
|
|
24
|
-
export declare const UNCERTAIN = 0.75;
|
|
25
|
-
export declare const CERTAIN = 0.95;
|
|
26
|
-
/** Strip custom-emoji monitoring line from message text */
|
|
27
|
-
export declare const MONITORING_RE: RegExp;
|
|
28
|
-
export declare function stripMonitoring(text: string): string;
|
|
29
|
-
export declare function appendMonitoring(text: string, label: string): string;
|
|
30
|
-
/**
|
|
31
|
-
* Build enrichment data from current vote + previous enrichment (carry-forward).
|
|
32
|
-
* Returns updated EnrichmentData for Redis persistence.
|
|
33
|
-
*/
|
|
34
|
-
export declare function buildEnrichmentFromVote(r: VotedResult, prev: EnrichmentData, alertType: AlertType, alertTs: number): EnrichmentData;
|
|
35
|
-
/**
|
|
36
|
-
* Build the enriched message text from current message + enrichment data.
|
|
37
|
-
* Uses inline [[1]](url) citations.
|
|
38
|
-
*/
|
|
39
|
-
export declare function buildEnrichedMessage(currentText: string, alertType: AlertType, alertTs: number, enrichment: EnrichmentData, monitoringLabel?: string): string;
|
|
40
|
-
/**
|
|
41
|
-
* Insert a line before </blockquote> (or legacy time line as fallback).
|
|
42
|
-
*/
|
|
43
|
-
export declare function insertBeforeBlockEnd(text: string, line: string): string;
|
|
44
|
-
/** @deprecated Use insertBeforeBlockEnd */
|
|
45
|
-
export declare const insertBeforeTimeLine: typeof insertBeforeBlockEnd;
|
|
46
|
-
export interface ChatMessageTarget {
|
|
47
|
-
chatId: string;
|
|
48
|
-
messageId: number;
|
|
49
|
-
isCaption: boolean;
|
|
50
|
-
}
|
|
51
|
-
export interface EditMessageInput {
|
|
52
|
-
alertId: string;
|
|
53
|
-
alertTs: number;
|
|
54
|
-
alertType: AlertType;
|
|
55
|
-
chatId: string;
|
|
56
|
-
messageId: number;
|
|
57
|
-
isCaption: boolean;
|
|
58
|
-
/** All chat targets for multi-chat broadcasting */
|
|
59
|
-
chatMessages?: ChatMessageTarget[];
|
|
60
|
-
currentText: string;
|
|
61
|
-
votedResult: VotedResult | null;
|
|
62
|
-
previousEnrichment: EnrichmentData;
|
|
63
|
-
monitoringLabel?: string;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Edit the Telegram message with enriched data.
|
|
67
|
-
*/
|
|
68
|
-
export declare function editMessage(input: EditMessageInput): Promise<void>;
|
|
69
|
-
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/agent/message.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,cAAc,EACd,UAAU,EAEV,WAAW,EACZ,MAAM,YAAY,CAAC;AAKpB,gCAAgC;AAChC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ7C,CAAC;AAIF,sDAAsD;AACtD,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,WAAW,EAAE,GAC1B,MAAM,CASR;AAED,6CAA6C;AAC7C,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,WAAW,EAAE,GAC1B,UAAU,EAAE,CASd;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAK/D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,cAAc,GACzB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBrB;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EAAE,EACnB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAUR;AAID,eAAO,MAAM,IAAI,MAAM,CAAC;AACxB,eAAO,MAAM,SAAS,OAAO,CAAC;AAC9B,eAAO,MAAM,OAAO,OAAO,CAAC;AAI5B,2DAA2D;AAC3D,eAAO,MAAM,aAAa,QAC6B,CAAC;AAExD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AA0BD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,WAAW,EACd,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,GACd,cAAc,CAqIhB;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,EAC1B,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CA+GR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAevE;AAED,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,6BAAuB,CAAC;AAIzD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,cAAc,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJxE"}
|