@hedgehog-finance/hedgehog-plugin 1.0.28 → 1.0.30
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/index.js +23 -1
- package/dist/index.js.map +1 -1
- package/dist/src/core/database.js +20 -2
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/dailyMorningBriefingCron.d.ts +15 -0
- package/dist/src/dailyMorningBriefingCron.js +40 -7
- package/dist/src/dailyMorningBriefingCron.js.map +1 -1
- package/dist/src/features/chartOutput.js +1 -4
- package/dist/src/features/chartOutput.js.map +1 -1
- package/dist/src/features/dailyMorningBriefing/tools.d.ts +4 -1
- package/dist/src/features/dailyMorningBriefing/tools.js +240 -23
- package/dist/src/features/dailyMorningBriefing/tools.js.map +1 -1
- package/dist/src/features/index.d.ts +4 -1
- package/dist/src/features/pluginInfo/tools.js +2 -0
- package/dist/src/features/pluginInfo/tools.js.map +1 -1
- package/index.ts +31 -1
- package/openclaw.plugin.json +1 -0
- package/package.json +3 -2
- package/src/core/database.ts +20 -2
- package/src/dailyMorningBriefingCron.ts +81 -7
- package/src/features/chartOutput.ts +1 -4
- package/src/features/dailyMorningBriefing/tools.ts +285 -29
- package/src/features/index.ts +1 -1
- package/src/features/pluginInfo/tools.ts +4 -0
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import { getDB } from "../../core/database.js";
|
|
2
|
-
import {
|
|
2
|
+
import { getHedgehogRuntime } from "../../runtime.js";
|
|
3
|
+
import { HEDGEHOG_AGENT_ID } from "../../openclawConstants.js";
|
|
4
|
+
import { CHART_OUTPUT_GUIDANCE, ensureChartPlaceholdersInBody } from "../chartOutput.js";
|
|
3
5
|
import { GetDailyMorningBriefingDetailParamsSchema, QueryDailyMorningBriefingsParamsSchema, SaveDailyMorningBriefingParamsSchema } from "./schema.js";
|
|
4
6
|
const DAILY_MORNING_BRIEFING_MARKET = "CN";
|
|
7
|
+
const DAILY_MORNING_BRIEFING_START_HOUR = 7;
|
|
8
|
+
const DAILY_MORNING_BRIEFING_START_MINUTE = 30;
|
|
9
|
+
const DAILY_MORNING_BRIEFING_CRON_ID = "hedgehog_daily_morning_briefing";
|
|
10
|
+
const DAILY_MORNING_BRIEFING_SKILL = "hedgehog-daily-morning-briefing";
|
|
11
|
+
const DAILY_MORNING_BRIEFING_CONTINUE_MESSAGE = "完成了吗,如果没完成请继续";
|
|
12
|
+
const DAILY_MORNING_BRIEFING_NUDGE_INTERVAL_MS = 30 * 60 * 1000;
|
|
13
|
+
const DAILY_MORNING_BRIEFING_MAX_ATTEMPTS_PER_DAY = 3;
|
|
14
|
+
const DAILY_MORNING_BRIEFING_FAILED_RETRY_COOLDOWNS_MS = [
|
|
15
|
+
30 * 60 * 1000,
|
|
16
|
+
60 * 60 * 1000
|
|
17
|
+
];
|
|
5
18
|
const SaveDailyMorningBriefingAgentToolSchema = {
|
|
6
19
|
type: "object",
|
|
7
20
|
additionalProperties: false,
|
|
@@ -11,6 +24,26 @@ const SaveDailyMorningBriefingAgentToolSchema = {
|
|
|
11
24
|
status: { type: "string", enum: ["generating", "completed", "failed"], description: "保存状态:generating 表示开始生成,completed 表示生成成功,failed 表示生成失败" }
|
|
12
25
|
}
|
|
13
26
|
};
|
|
27
|
+
const DispatchDailyMorningBriefingAgentToolSchema = {
|
|
28
|
+
type: "object",
|
|
29
|
+
additionalProperties: false,
|
|
30
|
+
properties: {}
|
|
31
|
+
};
|
|
32
|
+
const DAILY_MORNING_BRIEFING_GENERATION_MESSAGE = JSON.stringify({
|
|
33
|
+
cw_system_prompt: [
|
|
34
|
+
"开始分析前必须先调用 save_daily_morning_briefing,参数为 {\"status\":\"generating\",\"content\":\"\"};如果返回 skipped=true,必须立即停止,不要继续调用 skill 或生成正文。",
|
|
35
|
+
`必须触发并使用 ${DAILY_MORNING_BRIEFING_SKILL} skill 生成盘前简报。`,
|
|
36
|
+
"生成成功后必须调用 save_daily_morning_briefing,参数为 {\"status\":\"completed\",\"content\":\"...\"},content 传最终完整早报正文。",
|
|
37
|
+
"生成失败后必须调用 save_daily_morning_briefing,参数为 {\"status\":\"failed\",\"content\":\"...\"},content 存放完整错误信息。",
|
|
38
|
+
"如果最终内容包含 [图表数据],正文必须已经包含所有对应图表占位符。"
|
|
39
|
+
].join("\n"),
|
|
40
|
+
cw_market: "CN",
|
|
41
|
+
cw_content: "生成每日早报",
|
|
42
|
+
cw_output: [
|
|
43
|
+
`输出结构以 ${DAILY_MORNING_BRIEFING_SKILL} skill 的交付模板为准。`,
|
|
44
|
+
CHART_OUTPUT_GUIDANCE
|
|
45
|
+
].join("\n")
|
|
46
|
+
});
|
|
14
47
|
function normalizeMarket(market) {
|
|
15
48
|
const raw = market.trim().toUpperCase();
|
|
16
49
|
if (raw === "A股" || raw === "中国股市" || raw === "MARKETS.CN")
|
|
@@ -24,11 +57,48 @@ function getLocalDateString() {
|
|
|
24
57
|
const day = String(now.getDate()).padStart(2, "0");
|
|
25
58
|
return `${year}-${month}-${day}`;
|
|
26
59
|
}
|
|
60
|
+
function getUnixMsFromDbTimestamp(value) {
|
|
61
|
+
if (!value)
|
|
62
|
+
return 0;
|
|
63
|
+
const timestamp = Date.parse(value);
|
|
64
|
+
return Number.isFinite(timestamp) ? timestamp : 0;
|
|
65
|
+
}
|
|
66
|
+
function toDbTimestamp(ms) {
|
|
67
|
+
return new Date(ms).toISOString();
|
|
68
|
+
}
|
|
69
|
+
function getFailedRetryCooldownMs(attemptCount) {
|
|
70
|
+
if (attemptCount >= DAILY_MORNING_BRIEFING_MAX_ATTEMPTS_PER_DAY)
|
|
71
|
+
return undefined;
|
|
72
|
+
return DAILY_MORNING_BRIEFING_FAILED_RETRY_COOLDOWNS_MS[Math.max(0, attemptCount - 1)] ?? DAILY_MORNING_BRIEFING_FAILED_RETRY_COOLDOWNS_MS[DAILY_MORNING_BRIEFING_FAILED_RETRY_COOLDOWNS_MS.length - 1];
|
|
73
|
+
}
|
|
74
|
+
function getNextRetryAtForFailedAttempt(attemptCount, nowMs = Date.now()) {
|
|
75
|
+
const cooldownMs = getFailedRetryCooldownMs(attemptCount);
|
|
76
|
+
return typeof cooldownMs === "number" ? toDbTimestamp(nowMs + cooldownMs) : "";
|
|
77
|
+
}
|
|
78
|
+
function getHalfHourBucket() {
|
|
79
|
+
const now = new Date();
|
|
80
|
+
const year = now.getFullYear();
|
|
81
|
+
const month = String(now.getMonth() + 1).padStart(2, "0");
|
|
82
|
+
const day = String(now.getDate()).padStart(2, "0");
|
|
83
|
+
const hour = String(now.getHours()).padStart(2, "0");
|
|
84
|
+
const minute = now.getMinutes() < 30 ? "00" : "30";
|
|
85
|
+
return `${year}${month}${day}${hour}${minute}`;
|
|
86
|
+
}
|
|
87
|
+
function isBeforeDailyMorningBriefingStart() {
|
|
88
|
+
const now = new Date();
|
|
89
|
+
const currentMinutes = now.getHours() * 60 + now.getMinutes();
|
|
90
|
+
const startMinutes = DAILY_MORNING_BRIEFING_START_HOUR * 60 + DAILY_MORNING_BRIEFING_START_MINUTE;
|
|
91
|
+
return currentMinutes < startMinutes;
|
|
92
|
+
}
|
|
27
93
|
function buildDailyMorningBriefingId(market, briefingDate) {
|
|
28
94
|
return `daily_morning_briefing_${market}_${briefingDate}`;
|
|
29
95
|
}
|
|
30
96
|
function buildDailyMorningBriefingSessionId(market, briefingDate) {
|
|
31
|
-
return `
|
|
97
|
+
return `agent:${HEDGEHOG_AGENT_ID}:cron:${DAILY_MORNING_BRIEFING_CRON_ID}:${market}:${briefingDate}`;
|
|
98
|
+
}
|
|
99
|
+
function buildDailyMorningBriefingAttemptSessionId(market, briefingDate, attemptCount) {
|
|
100
|
+
const base = buildDailyMorningBriefingSessionId(market, briefingDate);
|
|
101
|
+
return attemptCount > 1 ? `${base}:attempt:${attemptCount}` : base;
|
|
32
102
|
}
|
|
33
103
|
function selectDailyMorningBriefing(db, id) {
|
|
34
104
|
const row = db.prepare(`
|
|
@@ -65,18 +135,6 @@ function selectExistingActiveDailyMorningBriefing(db, market, briefingDate) {
|
|
|
65
135
|
`).get(market, briefingDate);
|
|
66
136
|
return row ? selectDailyMorningBriefing(db, row.id) : undefined;
|
|
67
137
|
}
|
|
68
|
-
function selectGeneratingDailyMorningBriefing(db, market, briefingDate) {
|
|
69
|
-
const row = db.prepare(`
|
|
70
|
-
SELECT id
|
|
71
|
-
FROM daily_morning_briefings
|
|
72
|
-
WHERE market = ?
|
|
73
|
-
AND briefingDate = ?
|
|
74
|
-
AND status = 'generating'
|
|
75
|
-
ORDER BY updatedAt DESC, createdAt DESC
|
|
76
|
-
LIMIT 1
|
|
77
|
-
`).get(market, briefingDate);
|
|
78
|
-
return row ? selectDailyMorningBriefing(db, row.id) : undefined;
|
|
79
|
-
}
|
|
80
138
|
function mapDailyMorningBriefingRow(row) {
|
|
81
139
|
return {
|
|
82
140
|
id: row.id,
|
|
@@ -118,14 +176,151 @@ function getFullWatchlistSnapshot(db) {
|
|
|
118
176
|
};
|
|
119
177
|
});
|
|
120
178
|
}
|
|
179
|
+
function insertGeneratingDailyMorningBriefing(db, market, briefingDate, id, sessionId, watchlistSnapshot) {
|
|
180
|
+
db.prepare(`
|
|
181
|
+
INSERT INTO daily_morning_briefings (id, market, briefingDate, content, status, sessionId, lastNudgeAt, nextRetryAt, attemptCount, watchlistSnapshot)
|
|
182
|
+
VALUES (?, ?, ?, '', 'generating', ?, '', '', 1, ?)
|
|
183
|
+
`).run(id, market, briefingDate, sessionId, watchlistSnapshot);
|
|
184
|
+
return selectDailyMorningBriefing(db, id);
|
|
185
|
+
}
|
|
186
|
+
function markDailyMorningBriefingFailed(db, id, content) {
|
|
187
|
+
const row = db.prepare(`
|
|
188
|
+
SELECT attemptCount
|
|
189
|
+
FROM daily_morning_briefings
|
|
190
|
+
WHERE id = ?
|
|
191
|
+
`).get(id);
|
|
192
|
+
const attemptCount = Math.max(1, Number(row?.attemptCount) || 1);
|
|
193
|
+
const result = db.prepare(`
|
|
194
|
+
UPDATE daily_morning_briefings
|
|
195
|
+
SET status = 'failed',
|
|
196
|
+
content = ?,
|
|
197
|
+
nextRetryAt = ?,
|
|
198
|
+
updatedAt = STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')
|
|
199
|
+
WHERE id = ?
|
|
200
|
+
`).run(content, getNextRetryAtForFailedAttempt(attemptCount), id);
|
|
201
|
+
return result.changes > 0;
|
|
202
|
+
}
|
|
203
|
+
function claimDailyMorningBriefingDispatch(db, market, briefingDate) {
|
|
204
|
+
if (isBeforeDailyMorningBriefingStart()) {
|
|
205
|
+
return { action: "skip", reason: "before_start_time" };
|
|
206
|
+
}
|
|
207
|
+
const id = buildDailyMorningBriefingId(market, briefingDate);
|
|
208
|
+
const watchlistSnapshot = JSON.stringify(getFullWatchlistSnapshot(db));
|
|
209
|
+
db.exec("BEGIN IMMEDIATE");
|
|
210
|
+
try {
|
|
211
|
+
const existing = db.prepare(`
|
|
212
|
+
SELECT id, market, briefingDate, content, status, sessionId, lastNudgeAt, nextRetryAt, attemptCount, watchlistSnapshot, createdAt, updatedAt
|
|
213
|
+
FROM daily_morning_briefings
|
|
214
|
+
WHERE id = ?
|
|
215
|
+
`).get(id);
|
|
216
|
+
if (existing?.status === "completed") {
|
|
217
|
+
db.exec("COMMIT");
|
|
218
|
+
return { action: "skip", reason: "already_completed", data: mapDailyMorningBriefingRow(existing) };
|
|
219
|
+
}
|
|
220
|
+
if (existing?.status === "generating") {
|
|
221
|
+
const lastNudgeAtMs = getUnixMsFromDbTimestamp(existing.lastNudgeAt);
|
|
222
|
+
if (lastNudgeAtMs > 0 && Date.now() - lastNudgeAtMs < DAILY_MORNING_BRIEFING_NUDGE_INTERVAL_MS) {
|
|
223
|
+
db.exec("COMMIT");
|
|
224
|
+
return { action: "skip", reason: "nudge_throttled", data: mapDailyMorningBriefingRow(existing) };
|
|
225
|
+
}
|
|
226
|
+
db.prepare(`
|
|
227
|
+
UPDATE daily_morning_briefings
|
|
228
|
+
SET lastNudgeAt = STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW'),
|
|
229
|
+
updatedAt = STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')
|
|
230
|
+
WHERE id = ?
|
|
231
|
+
AND status = 'generating'
|
|
232
|
+
`).run(id);
|
|
233
|
+
const data = selectDailyMorningBriefing(db, id);
|
|
234
|
+
db.exec("COMMIT");
|
|
235
|
+
return { action: "continue", data, idempotencyKey: `${id}:continue:${getHalfHourBucket()}` };
|
|
236
|
+
}
|
|
237
|
+
if (existing) {
|
|
238
|
+
const currentAttemptCount = Math.max(0, Number(existing.attemptCount) || 0);
|
|
239
|
+
const nextAttemptCount = currentAttemptCount > 0 ? currentAttemptCount + 1 : 1;
|
|
240
|
+
if (nextAttemptCount > DAILY_MORNING_BRIEFING_MAX_ATTEMPTS_PER_DAY) {
|
|
241
|
+
db.exec("COMMIT");
|
|
242
|
+
return { action: "skip", reason: "max_attempts_reached", data: mapDailyMorningBriefingRow(existing) };
|
|
243
|
+
}
|
|
244
|
+
const nextRetryAtMs = getUnixMsFromDbTimestamp(existing.nextRetryAt);
|
|
245
|
+
if (nextRetryAtMs > Date.now()) {
|
|
246
|
+
db.exec("COMMIT");
|
|
247
|
+
return { action: "skip", reason: "retry_cooling_down", nextRetryAt: existing.nextRetryAt, data: mapDailyMorningBriefingRow(existing) };
|
|
248
|
+
}
|
|
249
|
+
const sessionId = buildDailyMorningBriefingAttemptSessionId(market, briefingDate, nextAttemptCount);
|
|
250
|
+
db.prepare(`
|
|
251
|
+
UPDATE daily_morning_briefings
|
|
252
|
+
SET content = '',
|
|
253
|
+
status = 'generating',
|
|
254
|
+
sessionId = ?,
|
|
255
|
+
lastNudgeAt = '',
|
|
256
|
+
nextRetryAt = '',
|
|
257
|
+
attemptCount = ?,
|
|
258
|
+
watchlistSnapshot = ?,
|
|
259
|
+
updatedAt = STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')
|
|
260
|
+
WHERE id = ?
|
|
261
|
+
AND status != 'completed'
|
|
262
|
+
`).run(sessionId, nextAttemptCount, watchlistSnapshot, id);
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
insertGeneratingDailyMorningBriefing(db, market, briefingDate, id, buildDailyMorningBriefingAttemptSessionId(market, briefingDate, 1), watchlistSnapshot);
|
|
266
|
+
}
|
|
267
|
+
const data = selectDailyMorningBriefing(db, id);
|
|
268
|
+
db.exec("COMMIT");
|
|
269
|
+
return { action: "start", data, idempotencyKey: `${id}:start:${data.sessionId}` };
|
|
270
|
+
}
|
|
271
|
+
catch (e) {
|
|
272
|
+
if (db.inTransaction)
|
|
273
|
+
db.exec("ROLLBACK");
|
|
274
|
+
throw e;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
121
277
|
export const dailyMorningBriefingTools = {
|
|
278
|
+
dispatch_daily_morning_briefing: {
|
|
279
|
+
name: "dispatch_daily_morning_briefing",
|
|
280
|
+
label: "调度每日盘前早报",
|
|
281
|
+
description: "调度每日盘前早报。7:30 前跳过;当天已完成则跳过;当天生成中则向当天生成会话发送“完成了吗,如果没完成请继续”;当天未触发则创建当天生成记录并在按日期隔离的会话中启动早报生成。",
|
|
282
|
+
parameters: DispatchDailyMorningBriefingAgentToolSchema,
|
|
283
|
+
registerTool: true,
|
|
284
|
+
async execute() {
|
|
285
|
+
const db = getDB();
|
|
286
|
+
const market = DAILY_MORNING_BRIEFING_MARKET;
|
|
287
|
+
const briefingDate = getLocalDateString();
|
|
288
|
+
const decision = claimDailyMorningBriefingDispatch(db, market, briefingDate);
|
|
289
|
+
if (decision.action === "skip") {
|
|
290
|
+
return JSON.stringify({ success: true, skipped: true, reason: decision.reason, nextRetryAt: decision.nextRetryAt, data: decision.data });
|
|
291
|
+
}
|
|
292
|
+
const runtime = getHedgehogRuntime();
|
|
293
|
+
if (decision.action === "continue") {
|
|
294
|
+
await runtime.subagent.run({
|
|
295
|
+
sessionKey: decision.data.sessionId,
|
|
296
|
+
message: DAILY_MORNING_BRIEFING_CONTINUE_MESSAGE,
|
|
297
|
+
deliver: false,
|
|
298
|
+
idempotencyKey: decision.idempotencyKey
|
|
299
|
+
});
|
|
300
|
+
return JSON.stringify({ success: true, skipped: true, reason: "already_generating", action: "continued", data: decision.data });
|
|
301
|
+
}
|
|
302
|
+
try {
|
|
303
|
+
await runtime.subagent.run({
|
|
304
|
+
sessionKey: decision.data.sessionId,
|
|
305
|
+
message: DAILY_MORNING_BRIEFING_GENERATION_MESSAGE,
|
|
306
|
+
deliver: false,
|
|
307
|
+
idempotencyKey: decision.idempotencyKey
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
catch (e) {
|
|
311
|
+
markDailyMorningBriefingFailed(db, decision.data.id, e instanceof Error ? e.message : String(e));
|
|
312
|
+
throw e;
|
|
313
|
+
}
|
|
314
|
+
return JSON.stringify({ success: true, action: "started", data: decision.data });
|
|
315
|
+
}
|
|
316
|
+
},
|
|
122
317
|
save_daily_morning_briefing: {
|
|
123
318
|
name: "save_daily_morning_briefing",
|
|
124
319
|
label: "保存每日盘前早报",
|
|
125
320
|
description: "保存每日盘前早报的生成进度和最终结果。生成前必须先以 status=generating、content=\"\" 调用;生成成功后以 status=completed 保存完整正文 content;生成失败后以 status=failed 保存完整错误信息。未传 id 时会自动使用当天固定记录,完成或失败时可直接更新当天早报。",
|
|
126
321
|
parameters: SaveDailyMorningBriefingAgentToolSchema,
|
|
127
322
|
registerTool: true,
|
|
128
|
-
async execute(params) {
|
|
323
|
+
async execute(params, ctx) {
|
|
129
324
|
const args = SaveDailyMorningBriefingParamsSchema.parse(params);
|
|
130
325
|
const db = getDB();
|
|
131
326
|
const market = DAILY_MORNING_BRIEFING_MARKET;
|
|
@@ -136,28 +331,50 @@ export const dailyMorningBriefingTools = {
|
|
|
136
331
|
FROM daily_morning_briefings
|
|
137
332
|
WHERE id = ?
|
|
138
333
|
`).get(id);
|
|
139
|
-
const
|
|
334
|
+
const expectedSessionId = buildDailyMorningBriefingSessionId(market, briefingDate);
|
|
335
|
+
const currentSessionId = ctx?.sessionKey?.trim() || ctx?.sessionId?.trim() || "";
|
|
336
|
+
const sessionId = existing?.sessionId || expectedSessionId;
|
|
140
337
|
if (args.status === "generating") {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
338
|
+
if (isBeforeDailyMorningBriefingStart()) {
|
|
339
|
+
return JSON.stringify({ success: true, skipped: true, reason: "before_start_time" });
|
|
340
|
+
}
|
|
341
|
+
const active = selectExistingActiveDailyMorningBriefing(db, market, briefingDate);
|
|
342
|
+
if (active) {
|
|
343
|
+
if (active.status === "generating" && currentSessionId && active.sessionId === currentSessionId) {
|
|
344
|
+
return JSON.stringify({ success: true, data: active });
|
|
345
|
+
}
|
|
346
|
+
const reason = active.status === "generating" ? "already_generating" : "already_completed";
|
|
347
|
+
return JSON.stringify({ success: true, skipped: true, reason, data: active });
|
|
144
348
|
}
|
|
145
349
|
}
|
|
146
350
|
const watchlistSnapshot = JSON.stringify(getFullWatchlistSnapshot(db));
|
|
147
351
|
const content = args.status === "completed" ? ensureChartPlaceholdersInBody(args.content) : args.content.trim();
|
|
352
|
+
const nextRetryAt = args.status === "failed" ? getNextRetryAtForFailedAttempt(1) : "";
|
|
353
|
+
if (args.status === "failed") {
|
|
354
|
+
const updated = markDailyMorningBriefingFailed(db, id, content);
|
|
355
|
+
if (!updated) {
|
|
356
|
+
db.prepare(`
|
|
357
|
+
INSERT INTO daily_morning_briefings (id, market, briefingDate, content, status, sessionId, nextRetryAt, attemptCount, watchlistSnapshot)
|
|
358
|
+
VALUES (?, ?, ?, ?, 'failed', ?, ?, 1, ?)
|
|
359
|
+
`).run(id, market, briefingDate, content, sessionId, nextRetryAt, watchlistSnapshot);
|
|
360
|
+
}
|
|
361
|
+
return JSON.stringify({ success: true, data: selectDailyMorningBriefing(db, id) });
|
|
362
|
+
}
|
|
148
363
|
const result = db.prepare(`
|
|
149
364
|
UPDATE daily_morning_briefings
|
|
150
365
|
SET content = ?,
|
|
151
366
|
status = ?,
|
|
152
367
|
watchlistSnapshot = ?,
|
|
368
|
+
sessionId = CASE WHEN ? != '' THEN ? ELSE sessionId END,
|
|
369
|
+
nextRetryAt = ?,
|
|
153
370
|
updatedAt = STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')
|
|
154
371
|
WHERE id = ?
|
|
155
|
-
`).run(content, args.status, watchlistSnapshot, id);
|
|
372
|
+
`).run(content, args.status, watchlistSnapshot, sessionId, sessionId, nextRetryAt, id);
|
|
156
373
|
if (result.changes === 0) {
|
|
157
374
|
db.prepare(`
|
|
158
|
-
INSERT INTO daily_morning_briefings (id, market, briefingDate, content, status, sessionId, watchlistSnapshot)
|
|
159
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
160
|
-
`).run(id, market, briefingDate, content, args.status, sessionId, watchlistSnapshot);
|
|
375
|
+
INSERT INTO daily_morning_briefings (id, market, briefingDate, content, status, sessionId, lastNudgeAt, nextRetryAt, attemptCount, watchlistSnapshot)
|
|
376
|
+
VALUES (?, ?, ?, ?, ?, ?, '', '', ?, ?)
|
|
377
|
+
`).run(id, market, briefingDate, content, args.status, sessionId, args.status === "generating" ? 1 : 0, watchlistSnapshot);
|
|
161
378
|
}
|
|
162
379
|
const data = selectDailyMorningBriefing(db, id);
|
|
163
380
|
return JSON.stringify({ success: true, data });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/features/dailyMorningBriefing/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/features/dailyMorningBriefing/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,10 @@ export interface RuntimeTool {
|
|
|
6
6
|
registerTool?: boolean;
|
|
7
7
|
agentToolTarget?: "main";
|
|
8
8
|
execute(params: unknown, ctx?: {
|
|
9
|
-
userId
|
|
9
|
+
userId?: string;
|
|
10
|
+
sessionKey?: string;
|
|
11
|
+
sessionId?: string;
|
|
12
|
+
runId?: string;
|
|
10
13
|
}): Promise<string>;
|
|
11
14
|
}
|
|
12
15
|
export declare const allFeaturesTools: Record<string, RuntimeTool>;
|
|
@@ -76,6 +76,8 @@ function normalizeSkillVersionUpdates(params) {
|
|
|
76
76
|
}
|
|
77
77
|
function updateSkillVersions(params) {
|
|
78
78
|
const updates = normalizeSkillVersionUpdates(params);
|
|
79
|
+
// 在操作数据库前,确保数据库已初始化
|
|
80
|
+
// getDB() 会自动创建数据库文件和表结构
|
|
79
81
|
const db = getDB();
|
|
80
82
|
const stmt = db.prepare(`
|
|
81
83
|
INSERT INTO skill_versions (skillName, version, updatedAt)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/features/pluginInfo/tools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/features/pluginInfo/tools.ts"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
|
@@ -8,10 +8,40 @@ import { logger } from "./src/core/logger.js";
|
|
|
8
8
|
import { registerDailyMorningBriefingCron } from "./src/dailyMorningBriefingCron.js";
|
|
9
9
|
|
|
10
10
|
const registeredToolApis = new WeakSet<OpenClawPluginApi>();
|
|
11
|
+
const registeredToolContextApis = new WeakSet<OpenClawPluginApi>();
|
|
12
|
+
|
|
13
|
+
type ToolExecutionContext = {
|
|
14
|
+
agentId?: string;
|
|
15
|
+
sessionKey?: string;
|
|
16
|
+
sessionId?: string;
|
|
17
|
+
runId?: string;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const toolExecutionContexts = new Map<string, ToolExecutionContext>();
|
|
21
|
+
|
|
22
|
+
function registerToolContextCapture(api: OpenClawPluginApi): void {
|
|
23
|
+
if (registeredToolContextApis.has(api)) return;
|
|
24
|
+
registeredToolContextApis.add(api);
|
|
25
|
+
|
|
26
|
+
api.on("before_tool_call", (_event, ctx) => {
|
|
27
|
+
if (!ctx.toolCallId) return;
|
|
28
|
+
toolExecutionContexts.set(ctx.toolCallId, {
|
|
29
|
+
agentId: ctx.agentId,
|
|
30
|
+
sessionKey: ctx.sessionKey,
|
|
31
|
+
sessionId: ctx.sessionId,
|
|
32
|
+
runId: ctx.runId
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
api.on("after_tool_call", (event) => {
|
|
37
|
+
if (event.toolCallId) toolExecutionContexts.delete(event.toolCallId);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
11
40
|
|
|
12
41
|
function registerFeatureTools(api: OpenClawPluginApi): void {
|
|
13
42
|
if (registeredToolApis.has(api)) return;
|
|
14
43
|
registeredToolApis.add(api);
|
|
44
|
+
registerToolContextCapture(api);
|
|
15
45
|
|
|
16
46
|
Object.entries(allFeaturesTools).forEach(([name, tool]) => {
|
|
17
47
|
if (tool.registerTool === false && tool.agentToolTarget !== "main") return;
|
|
@@ -21,7 +51,7 @@ function registerFeatureTools(api: OpenClawPluginApi): void {
|
|
|
21
51
|
description: tool.description,
|
|
22
52
|
parameters: tool.parameters as any,
|
|
23
53
|
async execute(_toolCallId, params) {
|
|
24
|
-
const result = await tool.execute(params);
|
|
54
|
+
const result = await tool.execute(params, toolExecutionContexts.get(_toolCallId));
|
|
25
55
|
const payload: unknown = JSON.parse(result);
|
|
26
56
|
if (
|
|
27
57
|
payload &&
|
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hedgehog-finance/hedgehog-plugin",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.30",
|
|
4
4
|
"description": "Hedgehog App WebSocket channel and Watchlist Tools for OpenClaw",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bot",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"tools": [
|
|
48
48
|
"get_watchlist",
|
|
49
49
|
"get_industry_list",
|
|
50
|
+
"dispatch_daily_morning_briefing",
|
|
50
51
|
"save_daily_morning_briefing",
|
|
51
52
|
"save_stock_ai_analysis",
|
|
52
53
|
"save_information_verification",
|
|
@@ -64,7 +65,7 @@
|
|
|
64
65
|
],
|
|
65
66
|
"setupEntry": "./dist/setup-api.js",
|
|
66
67
|
"install": {
|
|
67
|
-
"npmSpec": "@hedgehog-finance/hedgehog-plugin",
|
|
68
|
+
"npmSpec": "@hedgehog-finance/hedgehog-plugin@latest",
|
|
68
69
|
"defaultChoice": "npm"
|
|
69
70
|
},
|
|
70
71
|
"compat": {
|
package/src/core/database.ts
CHANGED
|
@@ -277,6 +277,9 @@ function runDailyMorningBriefingMigrations(db: DatabaseSync) {
|
|
|
277
277
|
const snapshotColumn = tableColumnNames.has("watchlistSnapshot") ? "watchlistSnapshot" : "watchlistSnapshotJson";
|
|
278
278
|
const statusColumn = tableColumnNames.has("status") ? "status" : "'completed'";
|
|
279
279
|
const sessionIdColumn = tableColumnNames.has("sessionId") ? "sessionId" : "''";
|
|
280
|
+
const lastNudgeAtColumn = tableColumnNames.has("lastNudgeAt") ? "lastNudgeAt" : "''";
|
|
281
|
+
const nextRetryAtColumn = tableColumnNames.has("nextRetryAt") ? "nextRetryAt" : "''";
|
|
282
|
+
const attemptCountColumn = tableColumnNames.has("attemptCount") ? "attemptCount" : "0";
|
|
280
283
|
db.exec("BEGIN");
|
|
281
284
|
try {
|
|
282
285
|
db.exec(`
|
|
@@ -289,13 +292,16 @@ function runDailyMorningBriefingMigrations(db: DatabaseSync) {
|
|
|
289
292
|
content TEXT NOT NULL,
|
|
290
293
|
status TEXT NOT NULL DEFAULT 'completed',
|
|
291
294
|
sessionId TEXT NOT NULL DEFAULT '',
|
|
295
|
+
lastNudgeAt TEXT NOT NULL DEFAULT '',
|
|
296
|
+
nextRetryAt TEXT NOT NULL DEFAULT '',
|
|
297
|
+
attemptCount INTEGER NOT NULL DEFAULT 0,
|
|
292
298
|
watchlistSnapshot TEXT NOT NULL DEFAULT '[]',
|
|
293
299
|
createdAt DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')),
|
|
294
300
|
updatedAt DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW'))
|
|
295
301
|
);
|
|
296
302
|
|
|
297
|
-
INSERT INTO daily_morning_briefings_history (id, market, briefingDate, content, status, sessionId, watchlistSnapshot, createdAt, updatedAt)
|
|
298
|
-
SELECT id, market, briefingDate, content, ${statusColumn}, ${sessionIdColumn}, ${snapshotColumn}, createdAt, updatedAt
|
|
303
|
+
INSERT INTO daily_morning_briefings_history (id, market, briefingDate, content, status, sessionId, lastNudgeAt, nextRetryAt, attemptCount, watchlistSnapshot, createdAt, updatedAt)
|
|
304
|
+
SELECT id, market, briefingDate, content, ${statusColumn}, ${sessionIdColumn}, ${lastNudgeAtColumn}, ${nextRetryAtColumn}, ${attemptCountColumn}, ${snapshotColumn}, createdAt, updatedAt
|
|
299
305
|
FROM daily_morning_briefings;
|
|
300
306
|
|
|
301
307
|
DROP TABLE daily_morning_briefings;
|
|
@@ -324,6 +330,15 @@ function runDailyMorningBriefingSchemaMigrations(db: DatabaseSync) {
|
|
|
324
330
|
if (!columnNames.has("sessionId")) {
|
|
325
331
|
db.prepare("ALTER TABLE daily_morning_briefings ADD COLUMN sessionId TEXT NOT NULL DEFAULT ''").run();
|
|
326
332
|
}
|
|
333
|
+
if (!columnNames.has("lastNudgeAt")) {
|
|
334
|
+
db.prepare("ALTER TABLE daily_morning_briefings ADD COLUMN lastNudgeAt TEXT NOT NULL DEFAULT ''").run();
|
|
335
|
+
}
|
|
336
|
+
if (!columnNames.has("nextRetryAt")) {
|
|
337
|
+
db.prepare("ALTER TABLE daily_morning_briefings ADD COLUMN nextRetryAt TEXT NOT NULL DEFAULT ''").run();
|
|
338
|
+
}
|
|
339
|
+
if (!columnNames.has("attemptCount")) {
|
|
340
|
+
db.prepare("ALTER TABLE daily_morning_briefings ADD COLUMN attemptCount INTEGER NOT NULL DEFAULT 0").run();
|
|
341
|
+
}
|
|
327
342
|
}
|
|
328
343
|
|
|
329
344
|
function runStockAiAnalysisMigrations(db: DatabaseSync) {
|
|
@@ -788,6 +803,9 @@ export function getDB(): DatabaseSync {
|
|
|
788
803
|
content TEXT NOT NULL,
|
|
789
804
|
status TEXT NOT NULL DEFAULT 'completed',
|
|
790
805
|
sessionId TEXT NOT NULL DEFAULT '',
|
|
806
|
+
lastNudgeAt TEXT NOT NULL DEFAULT '',
|
|
807
|
+
nextRetryAt TEXT NOT NULL DEFAULT '',
|
|
808
|
+
attemptCount INTEGER NOT NULL DEFAULT 0,
|
|
791
809
|
watchlistSnapshot TEXT NOT NULL DEFAULT '[]',
|
|
792
810
|
createdAt DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')),
|
|
793
811
|
updatedAt DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW'))
|