@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.
@@ -1,7 +1,20 @@
1
1
  import { getDB } from "../../core/database.js";
2
- import { ensureChartPlaceholdersInBody } from "../chartOutput.js";
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 `daily_morning_briefing_${market}_${briefingDate}_${Date.now()}`;
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 sessionId = existing?.sessionId || buildDailyMorningBriefingSessionId(market, briefingDate);
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
- const generating = selectGeneratingDailyMorningBriefing(db, market, briefingDate);
142
- if (generating) {
143
- return JSON.stringify({ success: true, skipped: true, reason: "already_generating", data: generating });
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: string;
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 &&
@@ -10,6 +10,7 @@
10
10
  "tools": [
11
11
  "get_watchlist",
12
12
  "get_industry_list",
13
+ "dispatch_daily_morning_briefing",
13
14
  "save_daily_morning_briefing",
14
15
  "save_stock_ai_analysis",
15
16
  "save_information_verification",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hedgehog-finance/hedgehog-plugin",
3
- "version": "1.0.28",
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": {
@@ -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'))