@timmeck/brain-core 2.36.4 → 2.36.6

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 (38) hide show
  1. package/dist/curiosity/curiosity-engine.d.ts +5 -0
  2. package/dist/curiosity/curiosity-engine.js +29 -0
  3. package/dist/curiosity/curiosity-engine.js.map +1 -1
  4. package/dist/debate/debate-engine.d.ts +5 -0
  5. package/dist/debate/debate-engine.js +53 -2
  6. package/dist/debate/debate-engine.js.map +1 -1
  7. package/dist/hypothesis/engine.d.ts +11 -2
  8. package/dist/hypothesis/engine.js +69 -3
  9. package/dist/hypothesis/engine.js.map +1 -1
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/llm/__tests__/llm-service.test.d.ts +1 -0
  14. package/dist/llm/__tests__/llm-service.test.js +366 -0
  15. package/dist/llm/__tests__/llm-service.test.js.map +1 -0
  16. package/dist/llm/index.d.ts +2 -0
  17. package/dist/llm/index.js +2 -0
  18. package/dist/llm/index.js.map +1 -0
  19. package/dist/llm/llm-service.d.ts +97 -0
  20. package/dist/llm/llm-service.js +323 -0
  21. package/dist/llm/llm-service.js.map +1 -0
  22. package/dist/missions/mission-engine.d.ts +114 -0
  23. package/dist/missions/mission-engine.js +528 -0
  24. package/dist/missions/mission-engine.js.map +1 -0
  25. package/dist/narrative/narrative-engine.d.ts +13 -0
  26. package/dist/narrative/narrative-engine.js +127 -37
  27. package/dist/narrative/narrative-engine.js.map +1 -1
  28. package/dist/research/adapters/web-research-adapter.d.ts +24 -0
  29. package/dist/research/adapters/web-research-adapter.js +103 -0
  30. package/dist/research/adapters/web-research-adapter.js.map +1 -0
  31. package/dist/research/research-orchestrator.d.ts +6 -0
  32. package/dist/research/research-orchestrator.js +12 -0
  33. package/dist/research/research-orchestrator.js.map +1 -1
  34. package/dist/unified/unified-server.d.ts +4 -0
  35. package/dist/unified/unified-server.js +26 -0
  36. package/dist/unified/unified-server.js.map +1 -1
  37. package/package.json +1 -1
  38. package/unified-dashboard.html +120 -1
@@ -55,6 +55,7 @@ export class HypothesisEngine {
55
55
  minEvidence;
56
56
  confirmThreshold; // p-value below this → confirmed
57
57
  rejectThreshold; // p-value above this → rejected
58
+ llm = null;
58
59
  constructor(db, config) {
59
60
  this.db = db;
60
61
  runHypothesisMigration(db);
@@ -62,6 +63,7 @@ export class HypothesisEngine {
62
63
  this.confirmThreshold = config?.confirmThreshold ?? 0.05;
63
64
  this.rejectThreshold = config?.rejectThreshold ?? 0.5;
64
65
  }
66
+ setLLMService(llm) { this.llm = llm; }
65
67
  /** Record an observation for hypothesis generation and testing. */
66
68
  observe(observation) {
67
69
  this.db.prepare(`
@@ -218,10 +220,75 @@ export class HypothesisEngine {
218
220
  // ── Creative Hypothesis Generation ──────────────
219
221
  /**
220
222
  * Generate "wild" hypotheses using creative strategies.
221
- * These push the boundaries of what the system considers possible.
222
- * Each gets a source like 'creative_inversion', 'creative_combination', etc.
223
+ * Uses LLM if available, otherwise falls back to heuristic strategies.
223
224
  */
224
225
  generateCreative(count = 3) {
226
+ // Try LLM creative generation (fire-and-forget — results used in async version)
227
+ if (this.llm?.isAvailable()) {
228
+ void this.generateCreativeLLMAsync(count).catch(() => { });
229
+ }
230
+ // Always run heuristic version for sync compat
231
+ return this.generateCreativeHeuristic(count);
232
+ }
233
+ /**
234
+ * Async creative hypothesis generation via LLM.
235
+ * Generates truly novel hypotheses by reasoning about the knowledge base.
236
+ */
237
+ async generateCreativeLLM(count = 3) {
238
+ if (!this.llm?.isAvailable())
239
+ return this.generateCreativeHeuristic(count);
240
+ try {
241
+ // Gather knowledge context
242
+ const confirmed = this.list('confirmed', 10);
243
+ const rejected = this.list('rejected', 5);
244
+ const types = this.getObservationTypes();
245
+ const context = [
246
+ 'Confirmed hypotheses:',
247
+ ...confirmed.map(h => `- ${h.statement} (confidence: ${(h.confidence * 100).toFixed(0)}%)`),
248
+ '',
249
+ 'Rejected hypotheses:',
250
+ ...rejected.map(h => `- ${h.statement}`),
251
+ '',
252
+ 'Known observation types:',
253
+ ...types.map(t => `- ${t}`),
254
+ ].join('\n');
255
+ const prompt = `${context}\n\nGenerate ${count} novel, testable hypotheses. Each should explore non-obvious connections.\n\nOutput as JSON array: [{"statement": "...", "variables": ["var1", "var2"], "reasoning": "why this is interesting"}]`;
256
+ const result = await this.llm.call('creative_hypothesis', prompt, { temperature: 0.9 });
257
+ if (!result?.text)
258
+ return this.generateCreativeHeuristic(count);
259
+ // Parse JSON from LLM response
260
+ const jsonMatch = result.text.match(/\[[\s\S]*\]/);
261
+ if (!jsonMatch)
262
+ return this.generateCreativeHeuristic(count);
263
+ const hypotheses = JSON.parse(jsonMatch[0]);
264
+ const generated = [];
265
+ for (const h of hypotheses.slice(0, count)) {
266
+ // Check for duplicate
267
+ const existing = this.db.prepare("SELECT id FROM hypotheses WHERE statement = ? AND status != 'rejected'").get(h.statement);
268
+ if (existing)
269
+ continue;
270
+ generated.push(this.propose({
271
+ statement: h.statement,
272
+ type: 'creative',
273
+ source: 'creative_llm',
274
+ variables: h.variables || [],
275
+ condition: { type: 'correlation', params: { strategy: 'llm', reasoning: h.reasoning } },
276
+ }));
277
+ }
278
+ if (generated.length > 0) {
279
+ this.logger.info(`Generated ${generated.length} LLM creative hypotheses`);
280
+ }
281
+ return generated.length > 0 ? generated : this.generateCreativeHeuristic(count);
282
+ }
283
+ catch (err) {
284
+ this.logger.debug(`[HypothesisEngine] LLM creative failed: ${err.message}`);
285
+ return this.generateCreativeHeuristic(count);
286
+ }
287
+ }
288
+ async generateCreativeLLMAsync(count) {
289
+ await this.generateCreativeLLM(count);
290
+ }
291
+ generateCreativeHeuristic(count = 3) {
225
292
  const generated = [];
226
293
  const strategies = [
227
294
  () => this.creativeInversion(),
@@ -230,7 +297,6 @@ export class HypothesisEngine {
230
297
  () => this.creativeNegation(),
231
298
  () => this.creativeRandomWalk(),
232
299
  ];
233
- // Rotate through strategies to fill the requested count
234
300
  for (let i = 0; i < count; i++) {
235
301
  const strategy = strategies[i % strategies.length];
236
302
  const hypothesis = strategy();
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/hypothesis/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/hypothesis/engine.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -159,6 +159,8 @@ export { ConceptAbstraction, runConceptAbstractionMigration } from './concept-ab
159
159
  export type { ConceptAbstractionConfig, ConceptDataSources, AbstractConcept, ConceptMember, MemberType, ConceptHistoryEntry, ConceptHierarchy, ConceptStatus, } from './concept-abstraction/index.js';
160
160
  export { PeerNetwork } from './peer-network/index.js';
161
161
  export type { PeerInfo, PeerNetworkConfig, PeerNetworkStatus } from './peer-network/index.js';
162
+ export { LLMService, runLLMServiceMigration } from './llm/index.js';
163
+ export type { LLMServiceConfig, LLMResponse, LLMUsageStats, PromptTemplate } from './llm/index.js';
162
164
  export { SignalScanner, runScannerMigration } from './scanner/index.js';
163
165
  export { GitHubCollector } from './scanner/index.js';
164
166
  export { HnCollector } from './scanner/index.js';
package/dist/index.js CHANGED
@@ -142,6 +142,8 @@ export { SelfModificationEngine, runSelfModificationMigration } from './self-mod
142
142
  export { ConceptAbstraction, runConceptAbstractionMigration } from './concept-abstraction/index.js';
143
143
  // ── Peer Network ────────────────────────────────────────
144
144
  export { PeerNetwork } from './peer-network/index.js';
145
+ // ── LLM Service ──────────────────────────────────────────
146
+ export { LLMService, runLLMServiceMigration } from './llm/index.js';
145
147
  // ── Scanner ──────────────────────────────────────────────
146
148
  export { SignalScanner, runScannerMigration } from './scanner/index.js';
147
149
  export { GitHubCollector } from './scanner/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,366 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import Database from 'better-sqlite3';
3
+ vi.mock('../../utils/logger.js', () => ({
4
+ getLogger: () => ({
5
+ info: vi.fn(),
6
+ warn: vi.fn(),
7
+ error: vi.fn(),
8
+ debug: vi.fn(),
9
+ }),
10
+ }));
11
+ import { LLMService, runLLMServiceMigration } from '../llm-service.js';
12
+ function createTestDb() {
13
+ return new Database(':memory:');
14
+ }
15
+ describe('LLMService', () => {
16
+ let db;
17
+ beforeEach(() => {
18
+ db = createTestDb();
19
+ });
20
+ afterEach(() => {
21
+ try {
22
+ db.close();
23
+ }
24
+ catch { /* ignore */ }
25
+ });
26
+ // ── Migration ──────────────────────────────────────
27
+ describe('runLLMServiceMigration', () => {
28
+ it('creates llm_usage table', () => {
29
+ runLLMServiceMigration(db);
30
+ const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='llm_usage'").all();
31
+ expect(tables).toHaveLength(1);
32
+ });
33
+ it('is idempotent', () => {
34
+ runLLMServiceMigration(db);
35
+ runLLMServiceMigration(db);
36
+ const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='llm_usage'").all();
37
+ expect(tables).toHaveLength(1);
38
+ });
39
+ it('creates indexes', () => {
40
+ runLLMServiceMigration(db);
41
+ const indexes = db.prepare("SELECT name FROM sqlite_master WHERE type='index' AND name LIKE 'idx_llm_%'").all();
42
+ expect(indexes.length).toBeGreaterThanOrEqual(2);
43
+ });
44
+ });
45
+ // ── Constructor & isAvailable ──────────────────────
46
+ describe('constructor', () => {
47
+ it('constructs without API key', () => {
48
+ const svc = new LLMService(db, {});
49
+ expect(svc.isAvailable()).toBe(false);
50
+ });
51
+ it('constructs with API key', () => {
52
+ const svc = new LLMService(db, { apiKey: 'test-key-123' });
53
+ expect(svc.isAvailable()).toBe(true);
54
+ });
55
+ it('uses env var if no config key', () => {
56
+ const original = process.env.ANTHROPIC_API_KEY;
57
+ process.env.ANTHROPIC_API_KEY = 'env-key-456';
58
+ try {
59
+ const svc = new LLMService(db, {});
60
+ expect(svc.isAvailable()).toBe(true);
61
+ }
62
+ finally {
63
+ if (original !== undefined) {
64
+ process.env.ANTHROPIC_API_KEY = original;
65
+ }
66
+ else {
67
+ delete process.env.ANTHROPIC_API_KEY;
68
+ }
69
+ }
70
+ });
71
+ });
72
+ // ── getStats ───────────────────────────────────────
73
+ describe('getStats', () => {
74
+ it('returns initial zero stats', () => {
75
+ const svc = new LLMService(db, {});
76
+ const stats = svc.getStats();
77
+ expect(stats.totalCalls).toBe(0);
78
+ expect(stats.totalTokens).toBe(0);
79
+ expect(stats.cacheHits).toBe(0);
80
+ expect(stats.cacheMisses).toBe(0);
81
+ expect(stats.cacheHitRate).toBe(0);
82
+ expect(stats.callsThisHour).toBe(0);
83
+ expect(stats.tokensThisHour).toBe(0);
84
+ expect(stats.tokensToday).toBe(0);
85
+ expect(stats.rateLimitHits).toBe(0);
86
+ expect(stats.errors).toBe(0);
87
+ expect(stats.lastCallAt).toBeNull();
88
+ expect(stats.averageLatencyMs).toBe(0);
89
+ });
90
+ it('has correct budget remaining', () => {
91
+ const svc = new LLMService(db, {
92
+ tokenBudgetPerHour: 50_000,
93
+ tokenBudgetPerDay: 200_000,
94
+ });
95
+ const stats = svc.getStats();
96
+ expect(stats.budgetRemainingHour).toBe(50_000);
97
+ expect(stats.budgetRemainingDay).toBe(200_000);
98
+ });
99
+ it('reports configured model', () => {
100
+ const svc = new LLMService(db, { model: 'claude-test-model' });
101
+ expect(svc.getStats().model).toBe('claude-test-model');
102
+ });
103
+ });
104
+ // ── call (without API key) ─────────────────────────
105
+ describe('call', () => {
106
+ it('returns null when no API key', async () => {
107
+ const svc = new LLMService(db, {});
108
+ const result = await svc.call('explain', 'test message');
109
+ expect(result).toBeNull();
110
+ });
111
+ });
112
+ // ── call (with mocked fetch) ───────────────────────
113
+ describe('call with mocked API', () => {
114
+ let svc;
115
+ let fetchMock;
116
+ beforeEach(() => {
117
+ svc = new LLMService(db, {
118
+ apiKey: 'test-key',
119
+ maxCallsPerHour: 5,
120
+ tokenBudgetPerHour: 10_000,
121
+ tokenBudgetPerDay: 50_000,
122
+ });
123
+ fetchMock = vi.fn().mockResolvedValue({
124
+ ok: true,
125
+ json: async () => ({
126
+ content: [{ type: 'text', text: 'Test response from Claude' }],
127
+ usage: { input_tokens: 100, output_tokens: 50 },
128
+ }),
129
+ });
130
+ vi.stubGlobal('fetch', fetchMock);
131
+ });
132
+ afterEach(() => {
133
+ vi.unstubAllGlobals();
134
+ });
135
+ it('makes API call and returns response', async () => {
136
+ const result = await svc.call('explain', 'What is momentum trading?');
137
+ expect(result).not.toBeNull();
138
+ expect(result.text).toBe('Test response from Claude');
139
+ expect(result.tokensUsed).toBe(150);
140
+ expect(result.inputTokens).toBe(100);
141
+ expect(result.outputTokens).toBe(50);
142
+ expect(result.cached).toBe(false);
143
+ });
144
+ it('sends correct headers', async () => {
145
+ await svc.call('explain', 'test');
146
+ expect(fetchMock).toHaveBeenCalledTimes(1);
147
+ const callArgs = fetchMock.mock.calls[0];
148
+ expect(callArgs[0]).toBe('https://api.anthropic.com/v1/messages');
149
+ expect(callArgs[1].headers['x-api-key']).toBe('test-key');
150
+ expect(callArgs[1].headers['anthropic-version']).toBe('2023-06-01');
151
+ });
152
+ it('sends template system prompt', async () => {
153
+ await svc.call('creative_hypothesis', 'test');
154
+ const body = JSON.parse(fetchMock.mock.calls[0][1].body);
155
+ expect(body.system).toContain('creative research hypothesis generator');
156
+ expect(body.messages[0].content).toBe('test');
157
+ });
158
+ it('updates stats after call', async () => {
159
+ await svc.call('explain', 'test');
160
+ const stats = svc.getStats();
161
+ expect(stats.totalCalls).toBe(1);
162
+ expect(stats.totalTokens).toBe(150);
163
+ expect(stats.callsThisHour).toBe(1);
164
+ expect(stats.tokensThisHour).toBe(150);
165
+ expect(stats.lastCallAt).not.toBeNull();
166
+ expect(stats.cacheMisses).toBe(1);
167
+ });
168
+ it('caches identical requests', async () => {
169
+ const r1 = await svc.call('explain', 'same question');
170
+ const r2 = await svc.call('explain', 'same question');
171
+ expect(fetchMock).toHaveBeenCalledTimes(1); // Only 1 API call
172
+ expect(r2.cached).toBe(true);
173
+ expect(r2.text).toBe(r1.text);
174
+ const stats = svc.getStats();
175
+ expect(stats.cacheHits).toBe(1);
176
+ expect(stats.cacheMisses).toBe(1);
177
+ expect(stats.cacheHitRate).toBeCloseTo(0.5);
178
+ });
179
+ it('different templates hit different cache keys', async () => {
180
+ await svc.call('explain', 'same text');
181
+ await svc.call('ask', 'same text');
182
+ expect(fetchMock).toHaveBeenCalledTimes(2);
183
+ });
184
+ it('enforces rate limit', async () => {
185
+ // max 5 calls per hour
186
+ for (let i = 0; i < 5; i++) {
187
+ const r = await svc.call('explain', `q${i}`);
188
+ expect(r).not.toBeNull();
189
+ }
190
+ // 6th call should be rate limited
191
+ const r6 = await svc.call('explain', 'q5');
192
+ expect(r6).toBeNull();
193
+ expect(svc.getStats().rateLimitHits).toBeGreaterThan(0);
194
+ });
195
+ it('handles API errors gracefully', async () => {
196
+ fetchMock.mockResolvedValueOnce({
197
+ ok: false,
198
+ status: 429,
199
+ text: async () => 'Rate limited by Anthropic',
200
+ });
201
+ const result = await svc.call('explain', 'test');
202
+ expect(result).toBeNull();
203
+ expect(svc.getStats().errors).toBe(1);
204
+ });
205
+ it('handles network errors gracefully', async () => {
206
+ fetchMock.mockRejectedValueOnce(new Error('Network failure'));
207
+ const result = await svc.call('explain', 'test');
208
+ expect(result).toBeNull();
209
+ expect(svc.getStats().errors).toBe(1);
210
+ });
211
+ it('records usage to database', async () => {
212
+ await svc.call('explain', 'test db recording');
213
+ const rows = db.prepare('SELECT * FROM llm_usage').all();
214
+ expect(rows).toHaveLength(1);
215
+ expect(rows[0].template).toBe('explain');
216
+ expect(rows[0].total_tokens).toBe(150);
217
+ expect(rows[0].cached).toBe(0);
218
+ });
219
+ it('records cached hits to database too', async () => {
220
+ await svc.call('explain', 'test caching');
221
+ await svc.call('explain', 'test caching'); // cached
222
+ const rows = db.prepare('SELECT * FROM llm_usage ORDER BY id').all();
223
+ expect(rows).toHaveLength(2);
224
+ expect(rows[0].cached).toBe(0);
225
+ expect(rows[1].cached).toBe(1);
226
+ });
227
+ it('respects custom maxTokens and temperature', async () => {
228
+ await svc.call('explain', 'test', { maxTokens: 512, temperature: 0.3 });
229
+ const body = JSON.parse(fetchMock.mock.calls[0][1].body);
230
+ expect(body.max_tokens).toBe(512);
231
+ expect(body.temperature).toBe(0.3);
232
+ });
233
+ });
234
+ // ── getUsageHistory ────────────────────────────────
235
+ describe('getUsageHistory', () => {
236
+ it('returns empty when no data', () => {
237
+ const svc = new LLMService(db, {});
238
+ expect(svc.getUsageHistory()).toEqual([]);
239
+ });
240
+ it('groups by hour after manual insert', () => {
241
+ const svc = new LLMService(db, {});
242
+ // Insert test data
243
+ db.prepare("INSERT INTO llm_usage (prompt_hash, template, model, input_tokens, output_tokens, total_tokens, duration_ms, cached, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))").run('hash1', 'explain', 'test-model', 100, 50, 150, 500, 0);
244
+ db.prepare("INSERT INTO llm_usage (prompt_hash, template, model, input_tokens, output_tokens, total_tokens, duration_ms, cached, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))").run('hash2', 'ask', 'test-model', 80, 40, 120, 300, 0);
245
+ const history = svc.getUsageHistory(24);
246
+ expect(history).toHaveLength(1); // Both in same hour
247
+ expect(history[0].calls).toBe(2);
248
+ expect(history[0].tokens).toBe(270);
249
+ });
250
+ });
251
+ // ── getUsageByTemplate ─────────────────────────────
252
+ describe('getUsageByTemplate', () => {
253
+ it('returns empty when no data', () => {
254
+ const svc = new LLMService(db, {});
255
+ expect(svc.getUsageByTemplate()).toEqual([]);
256
+ });
257
+ it('groups by template', () => {
258
+ const svc = new LLMService(db, {});
259
+ db.prepare("INSERT INTO llm_usage (prompt_hash, template, model, input_tokens, output_tokens, total_tokens, duration_ms, cached) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run('h1', 'explain', 'model', 100, 50, 150, 500, 0);
260
+ db.prepare("INSERT INTO llm_usage (prompt_hash, template, model, input_tokens, output_tokens, total_tokens, duration_ms, cached) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run('h2', 'explain', 'model', 200, 80, 280, 600, 0);
261
+ db.prepare("INSERT INTO llm_usage (prompt_hash, template, model, input_tokens, output_tokens, total_tokens, duration_ms, cached) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run('h3', 'ask', 'model', 50, 30, 80, 200, 0);
262
+ // Cached entries should be excluded
263
+ db.prepare("INSERT INTO llm_usage (prompt_hash, template, model, input_tokens, output_tokens, total_tokens, duration_ms, cached) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run('h4', 'explain', 'model', 100, 50, 150, 0, 1);
264
+ const result = svc.getUsageByTemplate();
265
+ expect(result).toHaveLength(2);
266
+ const explain = result.find(r => r.template === 'explain');
267
+ expect(explain).toBeDefined();
268
+ expect(explain.calls).toBe(2); // Excludes cached
269
+ expect(explain.tokens).toBe(430);
270
+ const ask = result.find(r => r.template === 'ask');
271
+ expect(ask).toBeDefined();
272
+ expect(ask.calls).toBe(1);
273
+ expect(ask.tokens).toBe(80);
274
+ });
275
+ });
276
+ // ── Token budget enforcement ───────────────────────
277
+ describe('token budget', () => {
278
+ it('blocks calls when hourly budget exhausted', async () => {
279
+ const svc = new LLMService(db, {
280
+ apiKey: 'test-key',
281
+ maxCallsPerHour: 100,
282
+ tokenBudgetPerHour: 200, // Very small budget
283
+ tokenBudgetPerDay: 50_000,
284
+ });
285
+ const fetchMock = vi.fn().mockResolvedValue({
286
+ ok: true,
287
+ json: async () => ({
288
+ content: [{ type: 'text', text: 'ok' }],
289
+ usage: { input_tokens: 100, output_tokens: 100 },
290
+ }),
291
+ });
292
+ vi.stubGlobal('fetch', fetchMock);
293
+ // First call uses 200 tokens = budget
294
+ const r1 = await svc.call('explain', 'first');
295
+ expect(r1).not.toBeNull();
296
+ // Second call should be blocked (budget exhausted)
297
+ const r2 = await svc.call('explain', 'second');
298
+ expect(r2).toBeNull();
299
+ vi.unstubAllGlobals();
300
+ });
301
+ });
302
+ // ── Cache eviction ─────────────────────────────────
303
+ describe('cache', () => {
304
+ it('evicts oldest entries when max reached', async () => {
305
+ const svc = new LLMService(db, {
306
+ apiKey: 'test-key',
307
+ maxCallsPerHour: 100,
308
+ tokenBudgetPerHour: 100_000,
309
+ maxCacheEntries: 3,
310
+ });
311
+ let callCount = 0;
312
+ const fetchMock = vi.fn().mockImplementation(async () => ({
313
+ ok: true,
314
+ json: async () => ({
315
+ content: [{ type: 'text', text: `response-${++callCount}` }],
316
+ usage: { input_tokens: 10, output_tokens: 10 },
317
+ }),
318
+ }));
319
+ vi.stubGlobal('fetch', fetchMock);
320
+ await svc.call('explain', 'q1');
321
+ await svc.call('explain', 'q2');
322
+ await svc.call('explain', 'q3');
323
+ expect(fetchMock).toHaveBeenCalledTimes(3);
324
+ // q1 should still be cached
325
+ await svc.call('explain', 'q1');
326
+ expect(fetchMock).toHaveBeenCalledTimes(3); // no new call
327
+ // Add q4 — this should evict q1 (oldest)
328
+ await svc.call('explain', 'q4');
329
+ expect(fetchMock).toHaveBeenCalledTimes(4);
330
+ // q1 should be evicted, new API call needed
331
+ await svc.call('explain', 'q1');
332
+ expect(fetchMock).toHaveBeenCalledTimes(5);
333
+ vi.unstubAllGlobals();
334
+ });
335
+ });
336
+ // ── All templates supported ────────────────────────
337
+ describe('templates', () => {
338
+ it('supports all template types', async () => {
339
+ const svc = new LLMService(db, {
340
+ apiKey: 'test-key',
341
+ maxCallsPerHour: 100,
342
+ tokenBudgetPerHour: 100_000,
343
+ });
344
+ const fetchMock = vi.fn().mockResolvedValue({
345
+ ok: true,
346
+ json: async () => ({
347
+ content: [{ type: 'text', text: 'ok' }],
348
+ usage: { input_tokens: 10, output_tokens: 10 },
349
+ }),
350
+ });
351
+ vi.stubGlobal('fetch', fetchMock);
352
+ const templates = [
353
+ 'explain', 'ask', 'synthesize_debate', 'creative_hypothesis',
354
+ 'research_question', 'summarize', 'analyze_contradiction', 'custom',
355
+ ];
356
+ for (const template of templates) {
357
+ const result = await svc.call(template, `test ${template}`);
358
+ expect(result).not.toBeNull();
359
+ expect(result.text).toBe('ok');
360
+ }
361
+ expect(fetchMock).toHaveBeenCalledTimes(templates.length);
362
+ vi.unstubAllGlobals();
363
+ });
364
+ });
365
+ });
366
+ //# sourceMappingURL=llm-service.test.js.map