@zhin.js/plugin-lottery 1.0.8 → 1.1.1

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 (101) hide show
  1. package/AGENTS.md +8 -0
  2. package/commands/lottery/{[game:string=].js → [[game]]/index.js} +8 -7
  3. package/commands/lottery/{[game:string=].ts → [[game]]/index.ts} +8 -8
  4. package/commands/lottery-backtest/{[game:string=].js → [[game]]/index.js} +9 -10
  5. package/commands/lottery-backtest/{[game:string=].ts → [[game]]/index.ts} +9 -10
  6. package/commands/lottery-history/{[game:string].js → [game]/index.js} +7 -9
  7. package/commands/lottery-history/{[game:string].ts → [game]/index.ts} +8 -8
  8. package/commands/lottery-stats/{[game:string].js → [game]/index.js} +11 -12
  9. package/commands/lottery-stats/{[game:string].ts → [game]/index.ts} +11 -12
  10. package/commands/lottery-today/index.js +14 -0
  11. package/commands/lottery-today/index.ts +14 -0
  12. package/commands/lottery-train/{[game:string=].js → [[game]]/index.js} +9 -10
  13. package/commands/lottery-train/{[game:string=].ts → [[game]]/index.ts} +9 -10
  14. package/lib/agent/prompts.js +1 -1
  15. package/lib/agent/prompts.js.map +1 -1
  16. package/lib/agent/read-skills.js +3 -3
  17. package/lib/agent/read-skills.js.map +1 -1
  18. package/lib/command-helpers.d.ts +2 -3
  19. package/lib/command-helpers.d.ts.map +1 -1
  20. package/lib/command-helpers.js +4 -4
  21. package/lib/command-helpers.js.map +1 -1
  22. package/lib/config.d.ts +1 -1
  23. package/lib/config.d.ts.map +1 -1
  24. package/lib/config.js +1 -1
  25. package/lib/config.js.map +1 -1
  26. package/lib/db.d.ts +2 -2
  27. package/lib/db.d.ts.map +1 -1
  28. package/lib/db.js.map +1 -1
  29. package/lib/index.d.ts +1 -2
  30. package/lib/index.d.ts.map +1 -1
  31. package/lib/index.js +1 -2
  32. package/lib/index.js.map +1 -1
  33. package/lib/lottery-tool-handlers.d.ts +6 -16
  34. package/lib/lottery-tool-handlers.d.ts.map +1 -1
  35. package/lib/lottery-tool-handlers.js +20 -102
  36. package/lib/lottery-tool-handlers.js.map +1 -1
  37. package/lib/memory-db.d.ts +1 -1
  38. package/lib/memory-db.js +1 -1
  39. package/lib/pipeline.d.ts +2 -1
  40. package/lib/pipeline.d.ts.map +1 -1
  41. package/lib/pipeline.js +3 -13
  42. package/lib/pipeline.js.map +1 -1
  43. package/lib/runtime-state.d.ts +6 -7
  44. package/lib/runtime-state.d.ts.map +1 -1
  45. package/lib/runtime-state.js +2 -12
  46. package/lib/runtime-state.js.map +1 -1
  47. package/package.json +22 -10
  48. package/plugin.js +22 -35
  49. package/{agent/skills/lottery.md → skills/lottery/SKILL.md} +9 -9
  50. package/skills/lottery/tools/compute-recommend/index.js +12 -0
  51. package/skills/lottery/tools/compute-recommend/index.ts +12 -0
  52. package/skills/lottery/tools/get-model-state/index.js +12 -0
  53. package/skills/lottery/tools/get-model-state/index.ts +12 -0
  54. package/skills/lottery/tools/history/index.js +18 -0
  55. package/skills/lottery/tools/history/index.ts +17 -0
  56. package/skills/lottery/tools/list-pending/index.js +12 -0
  57. package/skills/lottery/tools/list-pending/index.ts +12 -0
  58. package/skills/lottery/tools/save-prediction/index.js +12 -0
  59. package/skills/lottery/tools/save-prediction/index.ts +12 -0
  60. package/skills/lottery/tools/stats-snapshot/index.js +12 -0
  61. package/skills/lottery/tools/stats-snapshot/index.ts +12 -0
  62. package/skills/lottery/tools/sync/index.js +16 -0
  63. package/skills/lottery/tools/sync/index.ts +21 -0
  64. package/src/agent/prompts.ts +1 -1
  65. package/src/agent/read-skills.ts +3 -3
  66. package/src/command-helpers.ts +4 -4
  67. package/src/config.ts +2 -2
  68. package/src/db.ts +3 -2
  69. package/src/index.ts +1 -8
  70. package/src/lottery-tool-handlers.ts +21 -106
  71. package/src/memory-db.ts +1 -1
  72. package/src/pipeline.ts +5 -14
  73. package/src/runtime-state.ts +7 -14
  74. package/agent/agent.ts +0 -6
  75. package/agent/instructions.md +0 -2
  76. package/agent/runtime-tools.ts +0 -57
  77. package/agent/tools/compute_recommend.ts +0 -11
  78. package/agent/tools/get_model_state.ts +0 -11
  79. package/agent/tools/history.ts +0 -22
  80. package/agent/tools/list_pending.ts +0 -11
  81. package/agent/tools/save_prediction.ts +0 -14
  82. package/agent/tools/stats_snapshot.ts +0 -11
  83. package/agent/tools/sync.ts +0 -18
  84. package/commands/lottery-today.js +0 -17
  85. package/commands/lottery-today.ts +0 -15
  86. package/lib/db-store.d.ts +0 -10
  87. package/lib/db-store.d.ts.map +0 -1
  88. package/lib/db-store.js +0 -30
  89. package/lib/db-store.js.map +0 -1
  90. package/lib/lottery-agent-deps.d.ts +0 -29
  91. package/lib/lottery-agent-deps.d.ts.map +0 -1
  92. package/lib/lottery-agent-deps.js +0 -25
  93. package/lib/lottery-agent-deps.js.map +0 -1
  94. package/lib/push.d.ts +0 -14
  95. package/lib/push.d.ts.map +0 -1
  96. package/lib/push.js +0 -24
  97. package/lib/push.js.map +0 -1
  98. package/src/db-store.ts +0 -34
  99. package/src/lottery-agent-deps.ts +0 -40
  100. package/src/push.ts +0 -35
  101. /package/evals/{pipeline_smoke.eval.ts → $pipeline_smoke.eval.ts} +0 -0
@@ -1,19 +1,12 @@
1
- import { DISCLAIMER } from './types.js';
2
1
  import { parseGameId } from './games/registry.js';
3
2
  import { loadDraws } from './db.js';
4
3
  import { recommendGame } from './recommend/game-pick.js';
5
- import { loadGameWeights, saveGameWeights, loadAccuracySnapshot, savePrediction, listPendingPredictions, submitAgentReview, saveAgentMemory, loadAgentMemory, } from './evaluate/tracker.js';
6
- import { saveDailyReport } from './recommend/report.js';
7
- import { pushLotteryReport, getLotteryOutboundPush } from './push.js';
8
- import { normalizeWeights } from './stats/weights.js';
9
- import { getLotteryAgentDeps } from './lottery-agent-deps.js';
10
- export async function handleGetModelState(game) {
11
- const deps = getLotteryAgentDeps();
12
- const db = deps.getDb();
13
- if (!db)
14
- return 'db not ready';
4
+ import { loadGameWeights, loadAccuracySnapshot, savePrediction, listPendingPredictions, } from './evaluate/tracker.js';
5
+ import { lotteryKl8 } from './config.js';
6
+ export async function handleGetModelState(runtime, game) {
7
+ const { db } = runtime;
15
8
  const gid = parseGameId(game ?? '');
16
- const ids = gid ? [gid] : deps.enabledGames();
9
+ const ids = gid ? [gid] : runtime.enabledGames;
17
10
  const out = [];
18
11
  for (const id of ids) {
19
12
  const w = await loadGameWeights(db, id);
@@ -22,35 +15,29 @@ export async function handleGetModelState(game) {
22
15
  }
23
16
  return JSON.stringify(out);
24
17
  }
25
- export async function handleComputeRecommend(game) {
26
- const deps = getLotteryAgentDeps();
18
+ export async function handleComputeRecommend(runtime, game) {
27
19
  const gid = parseGameId(game);
28
20
  if (!gid)
29
21
  return 'invalid game';
30
- const db = deps.getDb();
31
- if (!db)
32
- return 'db not ready';
33
- const cfg = deps.getConfig();
22
+ const { db, config: cfg } = runtime;
23
+ const kl8 = lotteryKl8(cfg);
34
24
  const draws = await loadDraws(db, gid, cfg.historyLimit);
35
25
  if (!draws.length)
36
- return 'no data, run lottery_sync first';
26
+ return 'no data; run the lottery draw synchronization tool first';
37
27
  const pick = recommendGame(gid, draws, {
38
- pickCount: gid === 'kl8' ? cfg.kl8.pickCount : cfg.pickCount,
28
+ pickCount: gid === 'kl8' ? kl8.pickCount : cfg.pickCount,
39
29
  tieSeed: new Date().toISOString().slice(0, 10),
40
30
  weights: await loadGameWeights(db, gid),
41
31
  accuracy: await loadAccuracySnapshot(db, gid),
42
- kl8: gid === 'kl8' ? cfg.kl8 : undefined,
32
+ kl8: gid === 'kl8' ? kl8 : undefined,
43
33
  });
44
34
  return JSON.stringify(pick);
45
35
  }
46
- export async function handleSavePrediction(game, numbersJson) {
47
- const deps = getLotteryAgentDeps();
36
+ export async function handleSavePrediction(runtime, game, numbersJson) {
48
37
  const gid = parseGameId(game);
49
38
  if (!gid)
50
39
  return 'invalid game';
51
- const db = deps.getDb();
52
- if (!db)
53
- return 'db not ready';
40
+ const { db } = runtime;
54
41
  const numbers = JSON.parse(numbersJson);
55
42
  const weights = await loadGameWeights(db, gid);
56
43
  await savePrediction(db, {
@@ -62,93 +49,24 @@ export async function handleSavePrediction(game, numbersJson) {
62
49
  });
63
50
  return JSON.stringify({ ok: true, gameId: gid });
64
51
  }
65
- export async function handleListPending(game) {
66
- const deps = getLotteryAgentDeps();
67
- const db = deps.getDb();
68
- if (!db)
69
- return 'db not ready';
52
+ export async function handleListPending(runtime, game) {
53
+ const { db } = runtime;
70
54
  const gid = parseGameId(game ?? '');
71
55
  return JSON.stringify(await listPendingPredictions(db, gid ?? undefined));
72
56
  }
73
- export async function handleSubmitReview(input) {
74
- const deps = getLotteryAgentDeps();
75
- const gid = parseGameId(input.game);
76
- if (!gid)
77
- return 'invalid game';
78
- const db = deps.getDb();
79
- if (!db)
80
- return 'db not ready';
81
- const hit = await submitAgentReview(db, {
82
- gameId: gid,
83
- predictAt: input.predict_at,
84
- actualIssue: input.actual_issue,
85
- actualNumbers: JSON.parse(input.actual_numbers_json),
86
- analysis: input.analysis ?? '',
87
- }, deps.getConfig().historyLimit);
88
- return hit ? JSON.stringify(hit) : 'pending not found';
89
- }
90
- export async function handleSetWeights(game, freq, omit, trend) {
91
- const deps = getLotteryAgentDeps();
92
- const gid = parseGameId(game);
93
- if (!gid)
94
- return 'invalid game';
95
- const db = deps.getDb();
96
- if (!db)
97
- return 'db not ready';
98
- const w = normalizeWeights({ freq, omit, trend });
99
- const snap = await loadAccuracySnapshot(db, gid);
100
- await saveGameWeights(db, gid, w, snap?.evalCount ?? 0, snap?.avgHitRate ?? 0);
101
- return JSON.stringify({ ok: true, weights: w });
102
- }
103
- export async function handleSaveMemory(content, memoryType, game) {
104
- const deps = getLotteryAgentDeps();
105
- const db = deps.getDb();
106
- if (!db)
107
- return 'db not ready';
108
- const gid = parseGameId(game ?? '');
109
- await saveAgentMemory(db, content, memoryType || 'insight', gid ?? '');
110
- return JSON.stringify({ ok: true });
111
- }
112
- export async function handleGetMemory(game, limit) {
113
- const deps = getLotteryAgentDeps();
114
- const db = deps.getDb();
115
- if (!db)
116
- return 'db not ready';
117
- const gid = parseGameId(game ?? '');
118
- const lim = Math.min(50, limit || 20);
119
- return JSON.stringify(await loadAgentMemory(db, gid ?? undefined, lim));
120
- }
121
- export async function handlePublishReport(content, push) {
122
- const deps = getLotteryAgentDeps();
123
- const db = deps.getDb();
124
- if (!db)
125
- return 'db not ready';
126
- const text = content.trim();
127
- if (!text.includes(DISCLAIMER))
128
- return 'content must include disclaimer';
129
- const date = new Date().toISOString().slice(0, 10);
130
- await saveDailyReport(db, { date, picks: [], disclaimer: DISCLAIMER, body: text }, text);
131
- const doPush = push === true && Boolean(getLotteryOutboundPush());
132
- if (doPush)
133
- await pushLotteryReport(text);
134
- return JSON.stringify({ ok: true, date, pushed: doPush });
135
- }
136
- export async function handleStatsSnapshot(game) {
137
- const deps = getLotteryAgentDeps();
57
+ export async function handleStatsSnapshot(runtime, game) {
138
58
  const gid = parseGameId(game);
139
59
  if (!gid)
140
60
  return 'invalid game';
141
- const db = deps.getDb();
142
- if (!db)
143
- return 'db not ready';
144
- const cfg = deps.getConfig();
61
+ const { db, config: cfg } = runtime;
62
+ const kl8 = lotteryKl8(cfg);
145
63
  const draws = await loadDraws(db, gid, Math.min(30, cfg.historyLimit));
146
64
  const pick = recommendGame(gid, draws, {
147
- pickCount: gid === 'kl8' ? cfg.kl8.pickCount : cfg.pickCount,
65
+ pickCount: gid === 'kl8' ? kl8.pickCount : cfg.pickCount,
148
66
  tieSeed: 'snapshot',
149
67
  weights: await loadGameWeights(db, gid),
150
68
  accuracy: await loadAccuracySnapshot(db, gid),
151
- kl8: gid === 'kl8' ? cfg.kl8 : undefined,
69
+ kl8: gid === 'kl8' ? kl8 : undefined,
152
70
  });
153
71
  return JSON.stringify({ sample: draws.length, pick, recentDraws: draws.slice(0, 5) });
154
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lottery-tool-handlers.js","sourceRoot":"","sources":["../src/lottery-tool-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lottery-tool-handlers.js","sourceRoot":"","sources":["../src/lottery-tool-handlers.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { LotteryDb } from './db.js';
2
2
  /**
3
- * Slice-2 fallback while Plugin Runtime has no DatabaseFeature Resource path.
3
+ * In-memory fallback for runtimes without a DatabaseHost.
4
4
  * Enough for smoke: today/history/stats/train/backtest/pipeline no longer return「数据库未就绪」.
5
5
  */
6
6
  export declare function createInMemoryLotteryDb(): LotteryDb;
package/lib/memory-db.js CHANGED
@@ -32,7 +32,7 @@ const TABLE_NAMES = [
32
32
  MEMORY_TABLE,
33
33
  ];
34
34
  /**
35
- * Slice-2 fallback while Plugin Runtime has no DatabaseFeature Resource path.
35
+ * In-memory fallback for runtimes without a DatabaseHost.
36
36
  * Enough for smoke: today/history/stats/train/backtest/pipeline no longer return「数据库未就绪」.
37
37
  */
38
38
  export function createInMemoryLotteryDb() {
package/lib/pipeline.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { GameId } from './types.js';
2
2
  import { type LotteryDb } from './db.js';
3
3
  import type { Kl8Config } from './games/kl8-groups.js';
4
4
  export interface PipelineDeps {
5
- getDb: () => LotteryDb | null;
5
+ db: LotteryDb;
6
6
  enabledGames: () => GameId[];
7
7
  historyLimit: number;
8
8
  pickCount: number;
@@ -16,6 +16,7 @@ export interface PipelineDeps {
16
16
  };
17
17
  weightPersist: boolean;
18
18
  weightHoldoutFallback: boolean;
19
+ outbound: ((text: string) => Promise<void>) | null;
19
20
  }
20
21
  export interface PipelineOptions {
21
22
  gameId?: GameId;
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAkBnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,MAAM,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AA0BD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAmH7B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAGtE"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAiBnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,SAAS,CAAC;IACd,YAAY,EAAE,MAAM,MAAM,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;CACpD;AA0BD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CA0G7B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAGtE"}
package/lib/pipeline.js CHANGED
@@ -4,7 +4,6 @@ import { evaluatePendingPredictions, gamesNeedingPrediction } from './evaluate/r
4
4
  import { formatBacktestSection, refreshWeightsForGames, runBacktestForGames } from './evaluate/backtest.js';
5
5
  import { planRecommendWeights, gamesToPredict, runHoldoutBacktest, } from './evaluate/weight-guard.js';
6
6
  import { cancelTodayPendingPredictions } from './evaluate/tracker.js';
7
- import { pushLotteryReport, getLotteryOutboundPush } from './push.js';
8
7
  function backtestOpts(deps) {
9
8
  return {
10
9
  pickCount: deps.pickCount,
@@ -24,16 +23,7 @@ async function attachBacktestOverview(db, gameIds, deps, holdoutSummaries = [])
24
23
  return formatBacktestSection(summaries);
25
24
  }
26
25
  export async function runLotteryPipeline(deps, options = {}) {
27
- const db = deps.getDb();
28
- if (!db) {
29
- return {
30
- sync: 'db not ready',
31
- review: 'skipped',
32
- recommend: 'skipped',
33
- pushed: false,
34
- reportText: '数据库未就绪',
35
- };
36
- }
26
+ const { db } = deps;
37
27
  const gameIds = options.gameId ? [options.gameId] : deps.enabledGames();
38
28
  const syncParts = [];
39
29
  const insertedAll = [];
@@ -107,8 +97,8 @@ export async function runLotteryPipeline(deps, options = {}) {
107
97
  : `saved ${needPredict.join(', ')}`;
108
98
  }
109
99
  let pushed = false;
110
- if (options.push && reportText && getLotteryOutboundPush()) {
111
- await pushLotteryReport(reportText);
100
+ if (options.push && reportText && deps.outbound) {
101
+ await deps.outbound(reportText);
112
102
  pushed = true;
113
103
  }
114
104
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
+ import type { LotteryConfig } from './config.js';
1
2
  import type { LotteryDb } from './db.js';
3
+ import type { GameId } from './types.js';
2
4
  export interface LotteryRuntime {
3
5
  readonly db: LotteryDb;
6
+ readonly config: Readonly<LotteryConfig>;
7
+ readonly enabledGames: readonly GameId[];
8
+ readonly outbound: ((text: string) => Promise<void>) | null;
4
9
  }
5
- export declare const lotteryRuntimeToken: import("@zhin.js/plugin-runtime").Token<LotteryRuntime>;
6
- export declare function resolveLotteryRuntime(context: {
7
- owner?: {
8
- id?: unknown;
9
- };
10
- use<T>(token: typeof lotteryRuntimeToken): T;
11
- }): LotteryRuntime | undefined;
10
+ export declare const lotteryRuntimeToken: import("zhin.js").Token<LotteryRuntime>;
12
11
  //# sourceMappingURL=runtime-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../src/runtime-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;CACxB;AAED,eAAO,MAAM,mBAAmB,yDAG/B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACzB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,mBAAmB,GAAG,CAAC,CAAC;CAC9C,GAAG,cAAc,GAAG,SAAS,CAO7B"}
1
+ {"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../src/runtime-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;CAC7D;AAED,eAAO,MAAM,mBAAmB,yCAG/B,CAAC"}
@@ -1,13 +1,3 @@
1
- import { createToken } from '@zhin.js/plugin-runtime';
2
- export const lotteryRuntimeToken = createToken('zhin.lottery.runtime', 'Owner-scoped Lottery database');
3
- export function resolveLotteryRuntime(context) {
4
- try {
5
- return context.use(lotteryRuntimeToken);
6
- }
7
- catch (error) {
8
- if (context.owner?.id)
9
- throw error;
10
- return undefined;
11
- }
12
- }
1
+ import { createToken } from 'zhin.js';
2
+ export const lotteryRuntimeToken = createToken('zhin.lottery.runtime', 'Owner-scoped Lottery runtime');
13
3
  //# sourceMappingURL=runtime-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../src/runtime-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAC5C,sBAAsB,EACtB,+BAA+B,CAChC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,OAGrC;IACC,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAmB,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE;YAAE,MAAM,KAAK,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../src/runtime-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAYtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAC5C,sBAAsB,EACtB,8BAA8B,CAC/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/plugin-lottery",
3
- "version": "1.0.8",
3
+ "version": "1.1.1",
4
4
  "description": "Multi-game lottery analysis for Zhin.js (Plugin Runtime)",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -19,7 +19,9 @@
19
19
  "commands",
20
20
  "src",
21
21
  "lib",
22
- "agent",
22
+ "AGENTS.md",
23
+ "tools",
24
+ "skills",
23
25
  "evals",
24
26
  "README.md"
25
27
  ],
@@ -41,24 +43,26 @@
41
43
  },
42
44
  "license": "MIT",
43
45
  "dependencies": {
44
- "@zhin.js/command": "1.0.4",
45
- "@zhin.js/plugin-runtime": "1.1.1"
46
+ "zod": "^4.4.3",
47
+ "@zhin.js/tool": "1.1.1",
48
+ "@zhin.js/skill": "1.1.1"
46
49
  },
47
50
  "devDependencies": {
48
51
  "typescript": "^6.0.3",
49
52
  "vitest": "^4.1.10",
50
- "zod": "^4.4.3",
51
- "@zhin.js/agent": "1.0.10"
53
+ "@zhin.js/agent": "1.1.26",
54
+ "zhin.js": "1.1.2"
52
55
  },
53
56
  "peerDependencies": {
54
- "zod": "^4.0.0",
55
- "@zhin.js/agent": "1.0.10"
57
+ "@zhin.js/agent": "^1.1.26",
58
+ "@zhin.js/command": "^1.1.1",
59
+ "zhin.js": "^1.1.2"
56
60
  },
57
61
  "peerDependenciesMeta": {
58
62
  "@zhin.js/agent": {
59
63
  "optional": true
60
64
  },
61
- "zod": {
65
+ "@zhin.js/command": {
62
66
  "optional": true
63
67
  }
64
68
  },
@@ -84,12 +88,20 @@
84
88
  {
85
89
  "package": "@zhin.js/command",
86
90
  "api": "^1.0.0"
91
+ },
92
+ {
93
+ "package": "@zhin.js/tool",
94
+ "api": "^1.0.0"
95
+ },
96
+ {
97
+ "package": "@zhin.js/skill",
98
+ "api": "^1.0.0"
87
99
  }
88
100
  ],
89
101
  "plugins": []
90
102
  },
91
103
  "scripts": {
92
- "build": "tsc",
104
+ "build": "pnpm run clean && tsc",
93
105
  "clean": "rimraf lib",
94
106
  "test": "NODE_OPTIONS=--experimental-strip-types vitest run --root ../../.. plugins/utils/lottery/tests"
95
107
  }
package/plugin.js CHANGED
@@ -1,13 +1,10 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
- import { definePlugin, agentToolsHostToken, databaseHostToken, outboundHostToken, scheduleHostToken, } from '@zhin.js/plugin-runtime';
2
+ import { definePlugin, databaseHostToken, outboundHostToken, scheduleHostToken, } from 'zhin.js';
3
3
  import { lotteryEnabledGames, lotteryKl8, resolveLotteryConfig, } from "./lib/config.js";
4
4
  import { defineLotteryTables } from "./lib/db.js";
5
- import { registerLotteryDb } from "./lib/db-store.js";
6
- import { registerLotteryAgentDeps } from "./lib/lottery-agent-deps.js";
7
5
  import { createInMemoryLotteryDb } from "./lib/memory-db.js";
8
6
  import { lotteryRuntimeToken } from "./lib/runtime-state.js";
9
7
  import { runLotteryPipeline } from "./lib/pipeline.js";
10
- import { registerLotteryOutboundPush } from "./lib/push.js";
11
8
  /**
12
9
  * Plugin Runtime:
13
10
  * - DB: prefer databaseHostToken; else memory.
@@ -21,14 +18,15 @@ export default definePlugin({
21
18
  },
22
19
  async setup(context) {
23
20
  const config = resolveLotteryConfig(context.config.get());
24
- const db = context.resources.has(databaseHostToken)
25
- ? context.resources.use(databaseHostToken)
26
- : createInMemoryLotteryDb();
27
- if (context.resources.has(databaseHostToken)) {
28
- defineLotteryTables(db);
29
- }
30
- context.resources.provide(lotteryRuntimeToken, { db });
31
- context.lifecycle.add(registerLotteryDb(db));
21
+ // host 与 memory 模型表面结构兼容(where 均返回 PromiseLike),可直接互换。
22
+ const db = (() => {
23
+ if (context.resources.has(databaseHostToken)) {
24
+ const host = context.resources.use(databaseHostToken);
25
+ defineLotteryTables(host);
26
+ return host;
27
+ }
28
+ return createInMemoryLotteryDb();
29
+ })();
32
30
  let outboundPush = null;
33
31
  if (context.resources.has(outboundHostToken) && config.pushTargets.length > 0) {
34
32
  const outbound = context.resources.use(outboundHostToken);
@@ -37,9 +35,11 @@ export default definePlugin({
37
35
  try {
38
36
  await outbound.send({
39
37
  adapter: target.adapter,
40
- endpointId: target.endpointId || target.adapter,
41
- channelType: target.channelType || 'private',
42
- channelId: target.channelId,
38
+ endpointKey: target.endpointKey || target.adapter,
39
+ conversation: {
40
+ kind: (target.channelType || 'private'),
41
+ id: target.channelId,
42
+ },
43
43
  content: text,
44
44
  });
45
45
  }
@@ -49,26 +49,12 @@ export default definePlugin({
49
49
  }
50
50
  };
51
51
  }
52
- context.lifecycle.add(registerLotteryOutboundPush(outboundPush));
53
- context.lifecycle.add(registerLotteryAgentDeps({
54
- getDb: () => db,
55
- getConfig: () => ({
56
- pickCount: config.pickCount,
57
- historyLimit: config.historyLimit,
58
- kl8: lotteryKl8(config),
59
- }),
60
- enabledGames: () => lotteryEnabledGames(config),
61
- scheduleCron: () => config.scheduleCron,
62
- scheduleEnabled: () => config.scheduleEnabled,
63
- pipelinePush: config.pushTargets.length > 0,
52
+ context.resources.provide(lotteryRuntimeToken, Object.freeze({
53
+ db,
54
+ config: Object.freeze({ ...config }),
55
+ enabledGames: Object.freeze([...lotteryEnabledGames(config)]),
56
+ outbound: outboundPush,
64
57
  }));
65
- // Agent tools (agent/tools/*): register into the Runtime Agent Host when AI
66
- // is installed. Lazy import keeps @zhin.js/agent out of IM-only installs.
67
- if (context.resources.has(agentToolsHostToken)) {
68
- const agentTools = context.resources.use(agentToolsHostToken);
69
- const { registerLotteryAgentTools } = await import('./agent/runtime-tools.js');
70
- context.lifecycle.add(registerLotteryAgentTools(agentTools));
71
- }
72
58
  if (!context.resources.has(scheduleHostToken) || !config.scheduleEnabled) {
73
59
  return;
74
60
  }
@@ -79,7 +65,7 @@ export default definePlugin({
79
65
  description: 'Daily lottery pipeline',
80
66
  async execute() {
81
67
  await runLotteryPipeline({
82
- getDb: () => db,
68
+ db,
83
69
  enabledGames: () => lotteryEnabledGames(config),
84
70
  historyLimit: config.historyLimit,
85
71
  pickCount: config.pickCount,
@@ -93,6 +79,7 @@ export default definePlugin({
93
79
  },
94
80
  weightPersist: config.weightPersistEnabled,
95
81
  weightHoldoutFallback: config.weightHoldoutFallback,
82
+ outbound: outboundPush,
96
83
  }, { push: config.pushTargets.length > 0 });
97
84
  },
98
85
  });
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  description: Automated daily pipeline — sync, review, recommend, publish
3
3
  tools:
4
- - lottery_sync
5
- - lottery_stats_snapshot
6
- - lottery_compute_recommend
7
- - lottery_save_prediction
8
- - lottery_get_model_state
9
- - lottery_list_pending
10
- - lottery_history
4
+ - "compute-recommend"
5
+ - "get-model-state"
6
+ - "history"
7
+ - "list-pending"
8
+ - "save-prediction"
9
+ - "stats-snapshot"
10
+ - "sync"
11
11
  ---
12
12
 
13
13
  # Lottery pipeline skill
@@ -18,14 +18,14 @@ The plugin runs one job (default 18:00):
18
18
 
19
19
  1. **Sync** — pull official draws into `lottery_draws`
20
20
  2. **Review** — match pending predictions to newly synced issues; tune F/O/T weights
21
- 3. **Recommend** — `lottery_compute_recommend` per enabled game
21
+ 3. **Recommend** — call the lottery recommendation tool for each enabled game
22
22
  4. **Push** — send report to endpoint masters (cron only)
23
23
 
24
24
  Manual trigger: `lottery [game]`
25
25
 
26
26
  ## Agent role
27
27
 
28
- Interactive chat may use `lottery_*` tools — numbers must come from `lottery_compute_recommend`.
28
+ Interactive chat may use the tools owned by this lottery plugin instance. Tool names are qualified from the runtime owner, so instructions must select them by description instead of assuming an instance key. Recommended numbers must come from the lottery recommendation tool.
29
29
 
30
30
  ## Game ids
31
31
 
@@ -0,0 +1,12 @@
1
+ // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
+ import { defineAgentTool } from '@zhin.js/tool';
3
+ import { z } from 'zod';
4
+ import { handleComputeRecommend } from "../../../../lib/lottery-tool-handlers.js";
5
+ import { lotteryRuntimeToken } from "../../../../lib/runtime-state.js";
6
+ export default defineAgentTool({
7
+ description: 'Compute lottery recommendation numbers via F/O/T stats engine',
8
+ inputSchema: z.object({ game: z.string().min(1) }),
9
+ async execute({ game }, context) {
10
+ return handleComputeRecommend(context.use(lotteryRuntimeToken), game);
11
+ },
12
+ });
@@ -0,0 +1,12 @@
1
+ import { defineAgentTool } from '@zhin.js/tool';
2
+ import { z } from 'zod';
3
+ import { handleComputeRecommend } from '../../../../src/lottery-tool-handlers.js';
4
+ import { lotteryRuntimeToken } from '../../../../src/runtime-state.js';
5
+
6
+ export default defineAgentTool<{ game: string }>({
7
+ description: 'Compute lottery recommendation numbers via F/O/T stats engine',
8
+ inputSchema: z.object({ game: z.string().min(1) }),
9
+ async execute({ game }, context) {
10
+ return handleComputeRecommend(context.use(lotteryRuntimeToken), game);
11
+ },
12
+ });
@@ -0,0 +1,12 @@
1
+ // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
+ import { defineAgentTool } from '@zhin.js/tool';
3
+ import { z } from 'zod';
4
+ import { handleGetModelState } from "../../../../lib/lottery-tool-handlers.js";
5
+ import { lotteryRuntimeToken } from "../../../../lib/runtime-state.js";
6
+ export default defineAgentTool({
7
+ description: 'Query model weights and historical hit rate per game',
8
+ inputSchema: z.object({ game: z.string().min(1).optional() }),
9
+ async execute({ game }, context) {
10
+ return handleGetModelState(context.use(lotteryRuntimeToken), game);
11
+ },
12
+ });
@@ -0,0 +1,12 @@
1
+ import { defineAgentTool } from '@zhin.js/tool';
2
+ import { z } from 'zod';
3
+ import { handleGetModelState } from '../../../../src/lottery-tool-handlers.js';
4
+ import { lotteryRuntimeToken } from '../../../../src/runtime-state.js';
5
+
6
+ export default defineAgentTool<{ game?: string }>({
7
+ description: 'Query model weights and historical hit rate per game',
8
+ inputSchema: z.object({ game: z.string().min(1).optional() }),
9
+ async execute({ game }, context) {
10
+ return handleGetModelState(context.use(lotteryRuntimeToken), game);
11
+ },
12
+ });