@hedgehog-finance/hedgehog-plugin 1.0.11 → 1.0.13

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.
Files changed (45) hide show
  1. package/dist/index.d.ts +10 -0
  2. package/dist/index.js +24 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/src/channel.d.ts +6 -0
  5. package/dist/src/channel.js +620 -0
  6. package/dist/src/channel.js.map +1 -0
  7. package/dist/src/core/database.d.ts +2 -0
  8. package/dist/src/core/database.js +220 -0
  9. package/dist/src/core/database.js.map +1 -0
  10. package/dist/src/core/logger.d.ts +3 -0
  11. package/dist/src/core/logger.js +20 -0
  12. package/dist/src/core/logger.js.map +1 -0
  13. package/dist/src/features/index.d.ts +22 -0
  14. package/dist/src/features/index.js +8 -0
  15. package/dist/src/features/index.js.map +1 -0
  16. package/dist/src/features/watchlist/logic.d.ts +48 -0
  17. package/dist/src/features/watchlist/logic.js +607 -0
  18. package/dist/src/features/watchlist/logic.js.map +1 -0
  19. package/dist/src/features/watchlist/schema.d.ts +85 -0
  20. package/dist/src/features/watchlist/schema.js +29 -0
  21. package/dist/src/features/watchlist/schema.js.map +1 -0
  22. package/dist/src/features/watchlist/store.d.ts +1 -0
  23. package/dist/src/features/watchlist/store.js +2 -0
  24. package/dist/src/features/watchlist/store.js.map +1 -0
  25. package/dist/src/features/watchlist/tools.d.ts +135 -0
  26. package/dist/src/features/watchlist/tools.js +572 -0
  27. package/dist/src/features/watchlist/tools.js.map +1 -0
  28. package/dist/src/runtime.d.ts +5 -0
  29. package/dist/src/runtime.js +40 -0
  30. package/dist/src/runtime.js.map +1 -0
  31. package/dist/src/types.d.ts +99 -0
  32. package/dist/src/types.js +16 -0
  33. package/dist/src/types.js.map +1 -0
  34. package/index.ts +5 -5
  35. package/openclaw.plugin.json +2 -2
  36. package/package.json +24 -7
  37. package/src/channel.ts +35 -13
  38. package/src/core/database.ts +90 -3
  39. package/src/features/index.ts +2 -1
  40. package/src/features/watchlist/logic.ts +503 -128
  41. package/src/features/watchlist/schema.ts +1 -6
  42. package/src/features/watchlist/tools.ts +248 -103
  43. package/src/runtime.ts +3 -3
  44. package/src/types.ts +1 -1
  45. package/tsconfig.json +0 -16
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { DatabaseSync } from 'node:sqlite';
2
+ export declare function getDB(): DatabaseSync;
@@ -0,0 +1,220 @@
1
+ // src/db/sqlite.ts
2
+ // @ts-ignore
3
+ import { DatabaseSync } from 'node:sqlite';
4
+ import { mkdirSync, existsSync, copyFileSync, readdirSync, statSync, unlinkSync } from "node:fs";
5
+ import path from "node:path";
6
+ import { getDbPath, getBackupDir } from "../runtime.js";
7
+ import { logger } from "./logger.js";
8
+ let _db = null;
9
+ let _backupJobStarted = false;
10
+ const MAX_BACKUPS = 10;
11
+ function performBackup(trigger = 'cron') {
12
+ const dbPath = getDbPath();
13
+ const backupDir = getBackupDir();
14
+ if (!existsSync(dbPath))
15
+ return;
16
+ try {
17
+ const safeTimestamp = new Date().toISOString().replace(/[:]/g, '-');
18
+ const backupFilePath = path.join(backupDir, `business_backup_${safeTimestamp}_${trigger}.db`);
19
+ copyFileSync(dbPath, backupFilePath);
20
+ logger.info({ trigger, backupFilePath }, "数据库已自动备份");
21
+ const files = readdirSync(backupDir);
22
+ const backupFiles = files
23
+ .filter((f) => f.startsWith("business_backup_") && f.endsWith(".db"))
24
+ .map((f) => {
25
+ const fullPath = path.join(backupDir, f);
26
+ return { path: fullPath, time: statSync(fullPath).mtimeMs };
27
+ });
28
+ if (backupFiles.length > MAX_BACKUPS) {
29
+ backupFiles.sort((a, b) => a.time - b.time);
30
+ const filesToDelete = backupFiles.slice(0, backupFiles.length - MAX_BACKUPS);
31
+ for (const fileObj of filesToDelete) {
32
+ unlinkSync(fileObj.path);
33
+ logger.info({ fileName: path.basename(fileObj.path) }, "清理过期备份");
34
+ }
35
+ }
36
+ }
37
+ catch (e) {
38
+ logger.error({ err: e, trigger }, "数据库备份或清理失败");
39
+ }
40
+ }
41
+ function startDailyBackupJob() {
42
+ const scheduleNextBackup = () => {
43
+ const now = new Date();
44
+ const nextBackupTime = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1, 3, 0, 0, 0);
45
+ const delayMs = nextBackupTime.getTime() - now.getTime();
46
+ setTimeout(() => {
47
+ performBackup('cron');
48
+ scheduleNextBackup();
49
+ }, delayMs);
50
+ logger.info({ nextBackupTime: nextBackupTime.toLocaleString() }, "已安排下一次定时备份");
51
+ };
52
+ scheduleNextBackup();
53
+ }
54
+ function normalizeMetadataStockCode(stockCode, exchange) {
55
+ const code = String(stockCode || "").trim().toUpperCase();
56
+ if (/\.(SH|SS|SZ|HK|US)$/i.test(code)) {
57
+ return code.replace(/\.SS$/i, ".SH");
58
+ }
59
+ switch (exchange) {
60
+ case "SSE":
61
+ return `${code}.SH`;
62
+ case "SZSE":
63
+ return `${code}.SZ`;
64
+ case "HKEX":
65
+ return `${code}.HK`;
66
+ default:
67
+ return code;
68
+ }
69
+ }
70
+ function runWatchlistDedupMigrations(db) {
71
+ db.exec("BEGIN TRANSACTION");
72
+ try {
73
+ const metadataRows = db.prepare(`
74
+ SELECT stockCode, exchange FROM global_stock_metadata
75
+ `).all();
76
+ const metadataDeleteStmt = db.prepare(`
77
+ DELETE FROM global_stock_metadata WHERE stockCode = ? AND exchange = ?
78
+ `);
79
+ const metadataUpdateStmt = db.prepare(`
80
+ UPDATE global_stock_metadata SET stockCode = ? WHERE stockCode = ? AND exchange = ?
81
+ `);
82
+ const metadataExistsStmt = db.prepare(`
83
+ SELECT 1 FROM global_stock_metadata WHERE stockCode = ? AND exchange = ?
84
+ `);
85
+ for (const row of metadataRows) {
86
+ const normalizedCode = normalizeMetadataStockCode(row.stockCode, row.exchange);
87
+ if (!normalizedCode || normalizedCode === row.stockCode)
88
+ continue;
89
+ const existing = metadataExistsStmt.get(normalizedCode, row.exchange);
90
+ if (existing) {
91
+ metadataDeleteStmt.run(row.stockCode, row.exchange);
92
+ }
93
+ else {
94
+ metadataUpdateStmt.run(normalizedCode, row.stockCode, row.exchange);
95
+ }
96
+ }
97
+ const duplicateCategories = db.prepare(`
98
+ SELECT userId, name, type, MIN(id) AS keepId, GROUP_CONCAT(id) AS ids
99
+ FROM watchlist_categories
100
+ GROUP BY userId, name, type
101
+ HAVING COUNT(*) > 1
102
+ `).all();
103
+ for (const dup of duplicateCategories) {
104
+ const table = dup.type === 'industry' ? 'watchlist_industry_items' : 'watchlist_theme_items';
105
+ const ids = dup.ids.split(",").filter(id => id && id !== dup.keepId);
106
+ for (const oldId of ids) {
107
+ db.prepare(`UPDATE ${table} SET categoryId = ? WHERE userId = ? AND categoryId = ?`).run(dup.keepId, dup.userId, oldId);
108
+ db.prepare("DELETE FROM watchlist_categories WHERE id = ?").run(oldId);
109
+ }
110
+ }
111
+ db.exec(`
112
+ DELETE FROM watchlist_industry_items
113
+ WHERE rowid NOT IN (
114
+ SELECT MIN(rowid) FROM watchlist_industry_items GROUP BY watchlistId, categoryId
115
+ );
116
+
117
+ DELETE FROM watchlist_theme_items
118
+ WHERE rowid NOT IN (
119
+ SELECT MIN(rowid) FROM watchlist_theme_items GROUP BY watchlistId, categoryId
120
+ );
121
+ `);
122
+ db.exec("COMMIT");
123
+ }
124
+ catch (e) {
125
+ if (db.inTransaction)
126
+ db.exec("ROLLBACK");
127
+ throw e;
128
+ }
129
+ db.exec(`
130
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_watchlist_categories_user_name_type
131
+ ON watchlist_categories(userId, name, type);
132
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_watchlist_industry_items_watchlist_category
133
+ ON watchlist_industry_items(watchlistId, categoryId);
134
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_watchlist_theme_items_watchlist_category
135
+ ON watchlist_theme_items(watchlistId, categoryId);
136
+ `);
137
+ }
138
+ export function getDB() {
139
+ if (!_db) {
140
+ const dbPath = getDbPath();
141
+ const backupDir = getBackupDir();
142
+ mkdirSync(path.dirname(dbPath), { recursive: true });
143
+ mkdirSync(backupDir, { recursive: true });
144
+ if (!_backupJobStarted) {
145
+ performBackup('startup');
146
+ startDailyBackupJob();
147
+ _backupJobStarted = true;
148
+ }
149
+ _db = new DatabaseSync(dbPath);
150
+ _db.exec("PRAGMA journal_mode = WAL");
151
+ _db.exec("PRAGMA synchronous = NORMAL");
152
+ // 1. 基础表结构
153
+ _db.exec(`
154
+ CREATE TABLE IF NOT EXISTS watchlist (
155
+ id TEXT PRIMARY KEY,
156
+ userId TEXT NOT NULL,
157
+ stockCode TEXT NOT NULL,
158
+ exchange TEXT NOT NULL,
159
+ market TEXT NOT NULL,
160
+ stockName TEXT NOT NULL,
161
+ sortOrder REAL DEFAULT 0,
162
+ isDeleted INTEGER DEFAULT 0 CHECK (isDeleted IN (0, 1)),
163
+ createdAt DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')),
164
+ updatedAt DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')),
165
+ UNIQUE(userId, stockCode, exchange)
166
+ );
167
+
168
+ CREATE TABLE IF NOT EXISTS global_stock_metadata (
169
+ stockCode TEXT NOT NULL,
170
+ exchange TEXT NOT NULL,
171
+ stockName TEXT NOT NULL,
172
+ industryJson TEXT,
173
+ themeJson TEXT,
174
+ lastUpdated DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')),
175
+ PRIMARY KEY(stockCode, exchange)
176
+ );
177
+
178
+ CREATE INDEX IF NOT EXISTS idx_watchlist_main ON watchlist(userId, isDeleted, sortOrder ASC);
179
+
180
+ CREATE TABLE IF NOT EXISTS watchlist_categories (
181
+ id TEXT PRIMARY KEY,
182
+ remoteId TEXT,
183
+ userId TEXT NOT NULL,
184
+ name TEXT NOT NULL,
185
+ type TEXT NOT NULL CHECK (type IN ('industry', 'theme')),
186
+ weight REAL DEFAULT 0,
187
+ sortOrder REAL DEFAULT 0,
188
+ createdAt DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')),
189
+ updatedAt DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')),
190
+ UNIQUE(userId, remoteId),
191
+ UNIQUE(userId, name, type)
192
+ );
193
+
194
+ CREATE TABLE IF NOT EXISTS watchlist_industry_items (
195
+ id TEXT PRIMARY KEY,
196
+ watchlistId TEXT NOT NULL,
197
+ userId TEXT NOT NULL,
198
+ categoryId TEXT NOT NULL,
199
+ weight REAL DEFAULT 0,
200
+ createdAt DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')),
201
+ UNIQUE(watchlistId, categoryId)
202
+ );
203
+ CREATE INDEX IF NOT EXISTS idx_watchlist_industry_user ON watchlist_industry_items(userId);
204
+
205
+ CREATE TABLE IF NOT EXISTS watchlist_theme_items (
206
+ id TEXT PRIMARY KEY,
207
+ watchlistId TEXT NOT NULL,
208
+ userId TEXT NOT NULL,
209
+ categoryId TEXT NOT NULL,
210
+ weight REAL DEFAULT 0,
211
+ createdAt DATETIME DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%fZ', 'NOW')),
212
+ UNIQUE(watchlistId, categoryId)
213
+ );
214
+ CREATE INDEX IF NOT EXISTS idx_watchlist_theme_user ON watchlist_theme_items(userId);
215
+ `);
216
+ runWatchlistDedupMigrations(_db);
217
+ }
218
+ return _db;
219
+ }
220
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/core/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import pino from 'pino';
2
+ export declare const logger: pino.Logger<never, boolean>;
3
+ export default logger;
@@ -0,0 +1,20 @@
1
+ import pino from 'pino';
2
+ const isProduction = process.env.NODE_ENV === 'production';
3
+ export const logger = pino({
4
+ level: process.env.LOG_LEVEL || (isProduction ? 'info' : 'debug'),
5
+ transport: isProduction
6
+ ? undefined
7
+ : {
8
+ target: 'pino-pretty',
9
+ options: {
10
+ colorize: true,
11
+ translateTime: 'HH:MM:ss Z',
12
+ ignore: 'pid,hostname',
13
+ },
14
+ },
15
+ base: {
16
+ name: 'hedgehog-app',
17
+ },
18
+ });
19
+ export default logger;
20
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AAE3D,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,SAAS,EAAE,YAAY;QACrB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC;YACE,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,YAAY;gBAC3B,MAAM,EAAE,cAAc;aACvB;SACF;IACL,IAAI,EAAE;QACJ,IAAI,EAAE,cAAc;KACrB;CACF,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Runtime tool shape used for dynamic RPC dispatch and registerTool.
3
+ *
4
+ * - `label` is required by OpenClaw's AgentTool interface.
5
+ * - `execute` uses bivariant-friendly method syntax so that
6
+ * specific param types (AddToWatchlistParams etc.) are assignable
7
+ * without fighting TypeScript's strict function contravariance.
8
+ */
9
+ export interface RuntimeTool {
10
+ name: string;
11
+ label?: string;
12
+ description: string;
13
+ parameters: unknown;
14
+ registerTool?: boolean;
15
+ execute(params: unknown, ctx: {
16
+ userId: string;
17
+ }): Promise<string>;
18
+ }
19
+ /**
20
+ * Aggregated export of all tools across all features.
21
+ */
22
+ export declare const allFeaturesTools: Record<string, RuntimeTool>;
@@ -0,0 +1,8 @@
1
+ import { watchlistTools } from "./watchlist/tools.js";
2
+ /**
3
+ * Aggregated export of all tools across all features.
4
+ */
5
+ export const allFeaturesTools = {
6
+ ...watchlistTools
7
+ };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAoBtD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAgC;IACzD,GAAG,cAAc;CACpB,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { PluginRuntime } from "openclaw/plugin-sdk";
2
+ import { StockClassification } from "../../types.js";
3
+ declare function normalizeStockCodeForCache(stockCode: string, exchange?: string): string;
4
+ /**
5
+ * 智能分类元数据引擎
6
+ */
7
+ export declare const watchlistLogic: {
8
+ _normalizeStockCodeForCache: typeof normalizeStockCodeForCache;
9
+ /**
10
+ * 获取单只股票的分类与权重(带全局缓存)
11
+ */
12
+ getStockClassification(rt: PluginRuntime, stockName: string, stockCode: string, exchange: string, _userId: string): Promise<StockClassification | null>;
13
+ /**
14
+ * 批量获取股票分类
15
+ */
16
+ classifyStocksTogether(rt: PluginRuntime, stocks: any[], _userId: string): Promise<StockClassification[]>;
17
+ getBatchStockClassification(rt: PluginRuntime, stocks: any[], _userId: string, options?: {
18
+ requireComplete?: boolean;
19
+ forceRefresh?: boolean;
20
+ }): Promise<(StockClassification | null)[]>;
21
+ _getKnownCategories(db: any): {
22
+ industries: any[];
23
+ themes: any[];
24
+ };
25
+ /**
26
+ * 内部 AI 实现 (适配新协议)
27
+ */
28
+ _autoClassifyWithAI(rt: PluginRuntime, stockName: string, stockCode: string, exchange: string): Promise<StockClassification | null>;
29
+ _callClassifierCompletion(rt: PluginRuntime, sessionId: string, prompt: string, timeoutMs: number): Promise<string>;
30
+ _callClassifierAi(rt: PluginRuntime, sessionId: string, prompt: string, timeoutMs: number): Promise<string>;
31
+ _ensureCategory(db: any, name: string, type: "industry" | "theme", userId: string): string;
32
+ _buildSmartSortPrompt(stocks: {
33
+ name: string;
34
+ code: string;
35
+ }[]): string;
36
+ applySmartSort(rt: PluginRuntime, sessionId: string, stocks: {
37
+ name: string;
38
+ code: string;
39
+ }[]): Promise<any[]>;
40
+ _parseClassification(raw: any, cats: {
41
+ industries: string[];
42
+ themes: string[];
43
+ }, label: string): StockClassification;
44
+ _normalizeCachedClassification(value: StockClassification): StockClassification;
45
+ _buildAiPrompt(industries: string[], themes: string[], input: string, isBatch: boolean): string;
46
+ _anchorToCategory(value: string, categories: string[]): string;
47
+ };
48
+ export {};