@4da/mcp-server 3.2.0

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 (123) hide show
  1. package/README.md +135 -0
  2. package/dist/db.d.ts +64 -0
  3. package/dist/db.d.ts.map +1 -0
  4. package/dist/db.js +578 -0
  5. package/dist/db.js.map +1 -0
  6. package/dist/index.d.ts +37 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +422 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/llm.d.ts +144 -0
  11. package/dist/llm.d.ts.map +1 -0
  12. package/dist/llm.js +447 -0
  13. package/dist/llm.js.map +1 -0
  14. package/dist/output-manager.d.ts +156 -0
  15. package/dist/output-manager.d.ts.map +1 -0
  16. package/dist/output-manager.js +156 -0
  17. package/dist/output-manager.js.map +1 -0
  18. package/dist/schema-registry.d.ts +46 -0
  19. package/dist/schema-registry.d.ts.map +1 -0
  20. package/dist/schema-registry.js +133 -0
  21. package/dist/schema-registry.js.map +1 -0
  22. package/dist/schemas/config-validator.json +18 -0
  23. package/dist/schemas/context-analysis.json +25 -0
  24. package/dist/schemas/daily-briefing.json +34 -0
  25. package/dist/schemas/explain-relevance.json +19 -0
  26. package/dist/schemas/get-actionable-signals.json +29 -0
  27. package/dist/schemas/get-context.json +17 -0
  28. package/dist/schemas/get-relevant-content.json +26 -0
  29. package/dist/schemas/llm-status.json +13 -0
  30. package/dist/schemas/record-feedback.json +24 -0
  31. package/dist/schemas/score-autopsy.json +30 -0
  32. package/dist/schemas/source-health.json +17 -0
  33. package/dist/schemas/topic-connections.json +34 -0
  34. package/dist/schemas/trend-analysis.json +29 -0
  35. package/dist/tools/attention-report.d.ts +39 -0
  36. package/dist/tools/attention-report.d.ts.map +1 -0
  37. package/dist/tools/attention-report.js +72 -0
  38. package/dist/tools/attention-report.js.map +1 -0
  39. package/dist/tools/config-validator.d.ts +59 -0
  40. package/dist/tools/config-validator.d.ts.map +1 -0
  41. package/dist/tools/config-validator.js +375 -0
  42. package/dist/tools/config-validator.js.map +1 -0
  43. package/dist/tools/context-analysis.d.ts +108 -0
  44. package/dist/tools/context-analysis.d.ts.map +1 -0
  45. package/dist/tools/context-analysis.js +300 -0
  46. package/dist/tools/context-analysis.js.map +1 -0
  47. package/dist/tools/daily-briefing.d.ts +103 -0
  48. package/dist/tools/daily-briefing.d.ts.map +1 -0
  49. package/dist/tools/daily-briefing.js +278 -0
  50. package/dist/tools/daily-briefing.js.map +1 -0
  51. package/dist/tools/explain-relevance.d.ts +36 -0
  52. package/dist/tools/explain-relevance.d.ts.map +1 -0
  53. package/dist/tools/explain-relevance.js +50 -0
  54. package/dist/tools/explain-relevance.js.map +1 -0
  55. package/dist/tools/export-context.d.ts +43 -0
  56. package/dist/tools/export-context.d.ts.map +1 -0
  57. package/dist/tools/export-context.js +104 -0
  58. package/dist/tools/export-context.js.map +1 -0
  59. package/dist/tools/get-actionable-signals.d.ts +65 -0
  60. package/dist/tools/get-actionable-signals.d.ts.map +1 -0
  61. package/dist/tools/get-actionable-signals.js +268 -0
  62. package/dist/tools/get-actionable-signals.js.map +1 -0
  63. package/dist/tools/get-context.d.ts +34 -0
  64. package/dist/tools/get-context.d.ts.map +1 -0
  65. package/dist/tools/get-context.js +43 -0
  66. package/dist/tools/get-context.js.map +1 -0
  67. package/dist/tools/get-relevant-content.d.ts +44 -0
  68. package/dist/tools/get-relevant-content.d.ts.map +1 -0
  69. package/dist/tools/get-relevant-content.js +56 -0
  70. package/dist/tools/get-relevant-content.js.map +1 -0
  71. package/dist/tools/index.d.ts +40 -0
  72. package/dist/tools/index.d.ts.map +1 -0
  73. package/dist/tools/index.js +44 -0
  74. package/dist/tools/index.js.map +1 -0
  75. package/dist/tools/knowledge-gaps.d.ts +36 -0
  76. package/dist/tools/knowledge-gaps.d.ts.map +1 -0
  77. package/dist/tools/knowledge-gaps.js +76 -0
  78. package/dist/tools/knowledge-gaps.js.map +1 -0
  79. package/dist/tools/llm-status.d.ts +45 -0
  80. package/dist/tools/llm-status.d.ts.map +1 -0
  81. package/dist/tools/llm-status.js +92 -0
  82. package/dist/tools/llm-status.js.map +1 -0
  83. package/dist/tools/project-health.d.ts +41 -0
  84. package/dist/tools/project-health.d.ts.map +1 -0
  85. package/dist/tools/project-health.js +71 -0
  86. package/dist/tools/project-health.js.map +1 -0
  87. package/dist/tools/record-feedback.d.ts +39 -0
  88. package/dist/tools/record-feedback.d.ts.map +1 -0
  89. package/dist/tools/record-feedback.js +60 -0
  90. package/dist/tools/record-feedback.js.map +1 -0
  91. package/dist/tools/reverse-mentions.d.ts +38 -0
  92. package/dist/tools/reverse-mentions.d.ts.map +1 -0
  93. package/dist/tools/reverse-mentions.js +57 -0
  94. package/dist/tools/reverse-mentions.js.map +1 -0
  95. package/dist/tools/score-autopsy.d.ts +93 -0
  96. package/dist/tools/score-autopsy.d.ts.map +1 -0
  97. package/dist/tools/score-autopsy.js +288 -0
  98. package/dist/tools/score-autopsy.js.map +1 -0
  99. package/dist/tools/semantic-shifts.d.ts +37 -0
  100. package/dist/tools/semantic-shifts.d.ts.map +1 -0
  101. package/dist/tools/semantic-shifts.js +73 -0
  102. package/dist/tools/semantic-shifts.js.map +1 -0
  103. package/dist/tools/signal-chains.d.ts +45 -0
  104. package/dist/tools/signal-chains.d.ts.map +1 -0
  105. package/dist/tools/signal-chains.js +60 -0
  106. package/dist/tools/signal-chains.js.map +1 -0
  107. package/dist/tools/source-health.d.ts +64 -0
  108. package/dist/tools/source-health.d.ts.map +1 -0
  109. package/dist/tools/source-health.js +176 -0
  110. package/dist/tools/source-health.js.map +1 -0
  111. package/dist/tools/topic-connections.d.ts +112 -0
  112. package/dist/tools/topic-connections.d.ts.map +1 -0
  113. package/dist/tools/topic-connections.js +318 -0
  114. package/dist/tools/topic-connections.js.map +1 -0
  115. package/dist/tools/trend-analysis.d.ts +105 -0
  116. package/dist/tools/trend-analysis.d.ts.map +1 -0
  117. package/dist/tools/trend-analysis.js +295 -0
  118. package/dist/tools/trend-analysis.js.map +1 -0
  119. package/dist/types.d.ts +163 -0
  120. package/dist/types.d.ts.map +1 -0
  121. package/dist/types.js +7 -0
  122. package/dist/types.js.map +1 -0
  123. package/package.json +61 -0
package/dist/llm.js ADDED
@@ -0,0 +1,447 @@
1
+ /**
2
+ * LLM Client for 4DA MCP Server
3
+ *
4
+ * Provides intelligence synthesis over raw tool data.
5
+ * Supports Anthropic Claude, OpenAI, and Ollama (local).
6
+ *
7
+ * Features:
8
+ * - Tiered model selection (use smaller models for simpler tasks)
9
+ * - Optimized prompts for local models
10
+ * - Automatic fallback
11
+ */
12
+ // =============================================================================
13
+ // Model Tiers - Optimized for 16GB VRAM (RTX 4080 Super)
14
+ // =============================================================================
15
+ /**
16
+ * Default models for different task complexities
17
+ * Optimized for 16GB VRAM
18
+ */
19
+ export const DEFAULT_OLLAMA_MODELS = {
20
+ // Simple tasks: summarization, formatting, basic extraction
21
+ light: "llama3.1:8b-instruct-q8_0",
22
+ // Medium tasks: analysis, recommendations
23
+ medium: "qwen2.5:14b-instruct-q5_K_M",
24
+ // Complex tasks: reasoning, predictions, pattern recognition
25
+ heavy: "qwen2.5:14b-instruct-q5_K_M",
26
+ };
27
+ /**
28
+ * Task complexity by tool
29
+ */
30
+ export const TOOL_COMPLEXITY = {
31
+ daily_briefing: "medium", // Needs to synthesize multiple themes
32
+ score_autopsy: "heavy", // Needs to reason about score correctness
33
+ trend_analysis: "heavy", // Needs pattern recognition + prediction
34
+ context_analysis: "medium", // Structured advice
35
+ topic_connections: "heavy", // Graph reasoning
36
+ };
37
+ // =============================================================================
38
+ // Configuration
39
+ // =============================================================================
40
+ import { readFileSync, existsSync } from "fs";
41
+ import { join, dirname } from "path";
42
+ /**
43
+ * Find settings.json by looking in common locations
44
+ */
45
+ function findSettingsFile() {
46
+ // Check environment variable first
47
+ const envPath = process.env.FOURDA_SETTINGS_PATH;
48
+ if (envPath && existsSync(envPath)) {
49
+ return envPath;
50
+ }
51
+ // Check relative to database path
52
+ const dbPath = process.env.FOURDA_DB_PATH;
53
+ if (dbPath) {
54
+ const settingsPath = join(dirname(dbPath), "settings.json");
55
+ if (existsSync(settingsPath)) {
56
+ return settingsPath;
57
+ }
58
+ }
59
+ // Check common locations
60
+ const commonPaths = [
61
+ "/mnt/d/4da-v3/data/settings.json",
62
+ join(process.cwd(), "data/settings.json"),
63
+ join(process.cwd(), "../data/settings.json"),
64
+ ];
65
+ for (const path of commonPaths) {
66
+ if (existsSync(path)) {
67
+ return path;
68
+ }
69
+ }
70
+ return null;
71
+ }
72
+ /**
73
+ * Get LLM configuration from settings.json file
74
+ */
75
+ export function getLLMConfig(_db) {
76
+ const settingsPath = findSettingsFile();
77
+ if (!settingsPath) {
78
+ // Return environment-based config as fallback
79
+ return {
80
+ provider: process.env.LLM_PROVIDER || null,
81
+ anthropic_api_key: process.env.ANTHROPIC_API_KEY,
82
+ openai_api_key: process.env.OPENAI_API_KEY,
83
+ ollama_url: process.env.OLLAMA_URL || "http://localhost:11434",
84
+ model: process.env.LLM_MODEL,
85
+ model_light: process.env.LLM_MODEL_LIGHT,
86
+ model_heavy: process.env.LLM_MODEL_HEAVY,
87
+ };
88
+ }
89
+ try {
90
+ const settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
91
+ const llm = settings.llm || {};
92
+ return {
93
+ provider: llm.provider,
94
+ anthropic_api_key: llm.api_key || llm.anthropic_api_key,
95
+ openai_api_key: llm.openai_api_key,
96
+ ollama_url: llm.base_url || llm.ollama_url || "http://localhost:11434",
97
+ model: llm.model,
98
+ model_light: llm.model_light,
99
+ model_heavy: llm.model_heavy,
100
+ };
101
+ }
102
+ catch (error) {
103
+ console.error("Failed to read settings.json:", error);
104
+ return { provider: null };
105
+ }
106
+ }
107
+ /**
108
+ * Check if LLM synthesis is available
109
+ */
110
+ export function canSynthesize(config) {
111
+ if (!config.provider)
112
+ return false;
113
+ switch (config.provider) {
114
+ case "anthropic":
115
+ return !!config.anthropic_api_key;
116
+ case "openai":
117
+ return !!config.openai_api_key;
118
+ case "ollama":
119
+ return true; // Ollama doesn't need a key
120
+ default:
121
+ return false;
122
+ }
123
+ }
124
+ /**
125
+ * Get the appropriate model for task complexity
126
+ */
127
+ function getModelForComplexity(config, complexity) {
128
+ if (config.provider !== "ollama") {
129
+ // Cloud providers use the configured model
130
+ return config.model || (config.provider === "anthropic" ? "claude-3-5-sonnet-20241022" : "gpt-4o");
131
+ }
132
+ // Ollama: use tiered models
133
+ switch (complexity) {
134
+ case "light":
135
+ return config.model_light || config.model || DEFAULT_OLLAMA_MODELS.light;
136
+ case "medium":
137
+ return config.model || DEFAULT_OLLAMA_MODELS.medium;
138
+ case "heavy":
139
+ return config.model_heavy || config.model || DEFAULT_OLLAMA_MODELS.heavy;
140
+ }
141
+ }
142
+ // =============================================================================
143
+ // Synthesis
144
+ // =============================================================================
145
+ /**
146
+ * Synthesize insights using LLM
147
+ */
148
+ export async function synthesize(config, request) {
149
+ if (!canSynthesize(config)) {
150
+ throw new Error("LLM not configured - cannot synthesize");
151
+ }
152
+ const startTime = Date.now();
153
+ const complexity = request.complexity || "medium";
154
+ let result;
155
+ switch (config.provider) {
156
+ case "anthropic":
157
+ result = await synthesizeAnthropic(config, request);
158
+ break;
159
+ case "openai":
160
+ result = await synthesizeOpenAI(config, request);
161
+ break;
162
+ case "ollama":
163
+ result = await synthesizeOllama(config, request, complexity);
164
+ break;
165
+ default:
166
+ throw new Error(`Unknown LLM provider: ${config.provider}`);
167
+ }
168
+ result.latency_ms = Date.now() - startTime;
169
+ return result;
170
+ }
171
+ /**
172
+ * Anthropic Claude synthesis
173
+ */
174
+ async function synthesizeAnthropic(config, request) {
175
+ const model = config.model || "claude-3-5-sonnet-20241022";
176
+ const maxTokens = request.max_tokens || 1024;
177
+ const response = await fetch("https://api.anthropic.com/v1/messages", {
178
+ method: "POST",
179
+ headers: {
180
+ "Content-Type": "application/json",
181
+ "x-api-key": config.anthropic_api_key,
182
+ "anthropic-version": "2023-06-01",
183
+ },
184
+ body: JSON.stringify({
185
+ model,
186
+ max_tokens: maxTokens,
187
+ system: request.system,
188
+ messages: [{ role: "user", content: request.prompt }],
189
+ }),
190
+ });
191
+ if (!response.ok) {
192
+ const error = await response.text();
193
+ throw new Error(`Anthropic API error: ${error}`);
194
+ }
195
+ const data = (await response.json());
196
+ return {
197
+ synthesis: data.content[0]?.text || "",
198
+ model_used: model,
199
+ tokens_used: data.usage?.output_tokens,
200
+ };
201
+ }
202
+ /**
203
+ * OpenAI synthesis
204
+ */
205
+ async function synthesizeOpenAI(config, request) {
206
+ const model = config.model || "gpt-4o";
207
+ const maxTokens = request.max_tokens || 1024;
208
+ const response = await fetch("https://api.openai.com/v1/chat/completions", {
209
+ method: "POST",
210
+ headers: {
211
+ "Content-Type": "application/json",
212
+ Authorization: `Bearer ${config.openai_api_key}`,
213
+ },
214
+ body: JSON.stringify({
215
+ model,
216
+ max_tokens: maxTokens,
217
+ messages: [
218
+ { role: "system", content: request.system },
219
+ { role: "user", content: request.prompt },
220
+ ],
221
+ }),
222
+ });
223
+ if (!response.ok) {
224
+ const error = await response.text();
225
+ throw new Error(`OpenAI API error: ${error}`);
226
+ }
227
+ const data = (await response.json());
228
+ return {
229
+ synthesis: data.choices[0]?.message?.content || "",
230
+ model_used: model,
231
+ tokens_used: data.usage?.completion_tokens,
232
+ };
233
+ }
234
+ /**
235
+ * Ollama synthesis (local) - optimized for local models
236
+ */
237
+ async function synthesizeOllama(config, request, complexity) {
238
+ const model = getModelForComplexity(config, complexity);
239
+ const baseUrl = config.ollama_url || "http://localhost:11434";
240
+ // Use chat endpoint for better instruction following
241
+ const response = await fetch(`${baseUrl}/api/chat`, {
242
+ method: "POST",
243
+ headers: {
244
+ "Content-Type": "application/json",
245
+ },
246
+ body: JSON.stringify({
247
+ model,
248
+ messages: [
249
+ { role: "system", content: request.system },
250
+ { role: "user", content: request.prompt },
251
+ ],
252
+ stream: false,
253
+ options: {
254
+ num_predict: request.max_tokens || 512,
255
+ temperature: 0.7,
256
+ top_p: 0.9,
257
+ },
258
+ }),
259
+ });
260
+ if (!response.ok) {
261
+ const error = await response.text();
262
+ throw new Error(`Ollama API error: ${error}`);
263
+ }
264
+ const data = (await response.json());
265
+ return {
266
+ synthesis: data.message?.content || "",
267
+ model_used: model,
268
+ tokens_used: data.eval_count,
269
+ };
270
+ }
271
+ // =============================================================================
272
+ // Synthesis Prompts - Optimized for Local Models
273
+ // =============================================================================
274
+ /**
275
+ * Prompts are optimized for:
276
+ * 1. Clear structure (local models need explicit formatting)
277
+ * 2. Concise output (fewer tokens = faster inference)
278
+ * 3. Specific instructions (reduce ambiguity)
279
+ */
280
+ export const SYNTHESIS_PROMPTS = {
281
+ /**
282
+ * Daily Briefing - Executive synthesis
283
+ * Complexity: MEDIUM
284
+ */
285
+ dailyBriefing: {
286
+ complexity: "medium",
287
+ system: `You are an intelligence analyst. Synthesize data into actionable briefings.
288
+
289
+ OUTPUT FORMAT:
290
+ 1. One-sentence summary of the day
291
+ 2. The single most important thing to review (with reason)
292
+ 3. One recommended action
293
+
294
+ Be direct. No filler. Every word must add value.`,
295
+ buildPrompt: (data, context) => `
296
+ DATA:
297
+ ${JSON.stringify(data, null, 2)}
298
+
299
+ USER CONTEXT:
300
+ ${JSON.stringify(context, null, 2)}
301
+
302
+ Generate briefing with:
303
+ 1. ONE-LINE SUMMARY
304
+ 2. TOP PRIORITY (title + why it matters to this user)
305
+ 3. RECOMMENDED ACTION`,
306
+ },
307
+ /**
308
+ * Score Autopsy - Explain the reasoning
309
+ * Complexity: HEAVY (needs to reason about correctness)
310
+ */
311
+ scoreAutopsy: {
312
+ complexity: "heavy",
313
+ system: `You are a scoring forensics expert. Analyze if relevance scores are correct.
314
+
315
+ OUTPUT FORMAT:
316
+ 1. VERDICT: [ACCURATE / TOO HIGH / TOO LOW]
317
+ 2. REASONING: Why you reached this verdict (cite specific data)
318
+ 3. KEY FACTOR: The main thing driving this score
319
+ 4. SUGGESTION: How to get more/fewer items like this
320
+
321
+ Be analytical. Cite numbers from the data.`,
322
+ buildPrompt: (data, context) => `
323
+ SCORE DATA:
324
+ ${JSON.stringify(data, null, 2)}
325
+
326
+ USER INTERESTS:
327
+ ${JSON.stringify(context, null, 2)}
328
+
329
+ Analyze: Is this score correct given the user's interests?`,
330
+ },
331
+ /**
332
+ * Trend Analysis - Predict and explain
333
+ * Complexity: HEAVY (needs pattern recognition + prediction)
334
+ */
335
+ trendAnalysis: {
336
+ complexity: "heavy",
337
+ system: `You are a tech trend analyst. Interpret patterns and predict trajectories.
338
+
339
+ OUTPUT FORMAT:
340
+ 1. KEY SIGNAL: The most important trend (one sentence)
341
+ 2. WHY IT'S HAPPENING: Brief explanation
342
+ 3. PREDICTION: What to expect in the next 1-2 weeks
343
+ 4. ACTION: Should the user adjust their focus?
344
+
345
+ Ground predictions in the data. Don't speculate wildly.`,
346
+ buildPrompt: (data, context) => `
347
+ TREND DATA:
348
+ ${JSON.stringify(data, null, 2)}
349
+
350
+ USER CONTEXT:
351
+ ${JSON.stringify(context, null, 2)}
352
+
353
+ Interpret: What do these trends mean for this specific user?`,
354
+ },
355
+ /**
356
+ * Context Analysis - Personalized optimization advice
357
+ * Complexity: MEDIUM (structured recommendations)
358
+ */
359
+ contextAnalysis: {
360
+ complexity: "medium",
361
+ system: `You are a personalization expert. Help users optimize their content filtering.
362
+
363
+ OUTPUT FORMAT:
364
+ 1. BIGGEST GAP: What's missing from their context?
365
+ 2. HIGHEST IMPACT CHANGE: One specific thing to add/remove
366
+ 3. QUICK WIN: Something they can do in 30 seconds
367
+
368
+ Be specific. Give exact examples they can copy-paste.`,
369
+ buildPrompt: (data) => `
370
+ CONTEXT DATA:
371
+ ${JSON.stringify(data, null, 2)}
372
+
373
+ Provide optimization recommendations. Be specific and actionable.`,
374
+ },
375
+ /**
376
+ * Topic Connections - Explain the knowledge graph
377
+ * Complexity: HEAVY (needs graph reasoning)
378
+ */
379
+ topicConnections: {
380
+ complexity: "heavy",
381
+ system: `You are a knowledge graph analyst. Find hidden patterns in topic relationships.
382
+
383
+ OUTPUT FORMAT:
384
+ 1. SURPRISING CONNECTION: A non-obvious relationship and its significance
385
+ 2. MISSING LINK: Topics that should connect but don't
386
+ 3. EXPLORATION PATH: A topic worth investigating based on the graph
387
+ 4. PATTERN: What the graph structure reveals about their interests
388
+
389
+ Look for insights the user wouldn't notice themselves.`,
390
+ buildPrompt: (data, context) => `
391
+ GRAPH DATA:
392
+ ${JSON.stringify(data, null, 2)}
393
+
394
+ USER CONTEXT:
395
+ ${JSON.stringify(context, null, 2)}
396
+
397
+ Interpret: What hidden patterns does this graph reveal?`,
398
+ },
399
+ };
400
+ // =============================================================================
401
+ // Utility: Check Ollama availability
402
+ // =============================================================================
403
+ /**
404
+ * Check if Ollama is running and has required models
405
+ */
406
+ export async function checkOllamaStatus(baseUrl = "http://localhost:11434") {
407
+ try {
408
+ const response = await fetch(`${baseUrl}/api/tags`, {
409
+ method: "GET",
410
+ signal: AbortSignal.timeout(5000),
411
+ });
412
+ if (!response.ok) {
413
+ return { available: false, models: [], error: "Ollama not responding" };
414
+ }
415
+ const data = (await response.json());
416
+ const models = data.models?.map(m => m.name) || [];
417
+ return { available: true, models };
418
+ }
419
+ catch (error) {
420
+ return {
421
+ available: false,
422
+ models: [],
423
+ error: error instanceof Error ? error.message : "Connection failed",
424
+ };
425
+ }
426
+ }
427
+ /**
428
+ * Recommended models for 4DA synthesis tasks
429
+ */
430
+ export const RECOMMENDED_MODELS = {
431
+ "16GB_VRAM": {
432
+ primary: "qwen2.5:14b-instruct-q5_K_M",
433
+ fallback: "llama3.1:8b-instruct-q8_0",
434
+ install: "ollama pull qwen2.5:14b-instruct-q5_K_M",
435
+ },
436
+ "12GB_VRAM": {
437
+ primary: "mistral-nemo:12b-instruct-q5_K_M",
438
+ fallback: "llama3.1:8b-instruct-q6_K",
439
+ install: "ollama pull mistral-nemo:12b-instruct-q5_K_M",
440
+ },
441
+ "8GB_VRAM": {
442
+ primary: "llama3.1:8b-instruct-q6_K",
443
+ fallback: "llama3.2:3b-instruct-q8_0",
444
+ install: "ollama pull llama3.1:8b-instruct-q6_K",
445
+ },
446
+ };
447
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Output Manager for Dynamic Context Discovery
3
+ *
4
+ * Reduces token usage by ~80% through:
5
+ * - Writing full results to files (referenced by path)
6
+ * - Returning compact summaries inline
7
+ * - Providing retrieval hints for common queries
8
+ *
9
+ * Full results stored at: ~/.local/share/4da/context/results/
10
+ */
11
+ /**
12
+ * Compact result format - what gets returned inline to Claude
13
+ */
14
+ export interface CompactResult<T> {
15
+ /** 2-3 sentence human-readable summary */
16
+ summary: string;
17
+ /** Essential 20% of data inline for immediate use */
18
+ key_data: T;
19
+ /** Path to complete JSON file */
20
+ full_result_path: string;
21
+ /** Hints for retrieving specific data (jq patterns, grep patterns) */
22
+ retrieval_hints: string[];
23
+ }
24
+ /**
25
+ * Get the results directory path (for documentation)
26
+ */
27
+ export declare function getResultsDir(): string;
28
+ /**
29
+ * Daily Briefing compact output
30
+ */
31
+ export interface DailyBriefingKeyData {
32
+ total_items: number;
33
+ high_priority: number;
34
+ top_theme: string;
35
+ tldr: string;
36
+ executive_brief?: string;
37
+ }
38
+ export declare function createDailyBriefingCompact(result: {
39
+ summary: {
40
+ total_items_analyzed: number;
41
+ high_relevance_count: number;
42
+ tldr: string;
43
+ };
44
+ themes: {
45
+ name: string;
46
+ item_count: number;
47
+ }[];
48
+ ai_synthesis?: {
49
+ executive_brief: string;
50
+ };
51
+ }): CompactResult<DailyBriefingKeyData>;
52
+ /**
53
+ * Trend Analysis compact output
54
+ */
55
+ export interface TrendAnalysisKeyData {
56
+ total_items: number;
57
+ volume_trend: string;
58
+ top_rising: string | null;
59
+ top_falling: string | null;
60
+ anomaly_count: number;
61
+ narrative?: string;
62
+ }
63
+ export declare function createTrendAnalysisCompact(result: {
64
+ summary: {
65
+ total_items: number;
66
+ volume_trend: string;
67
+ top_rising_topic: string | null;
68
+ top_falling_topic: string | null;
69
+ };
70
+ anomalies: unknown[];
71
+ ai_interpretation?: {
72
+ narrative: string;
73
+ };
74
+ }): CompactResult<TrendAnalysisKeyData>;
75
+ /**
76
+ * Score Autopsy compact output
77
+ */
78
+ export interface ScoreAutopsyKeyData {
79
+ item_title: string;
80
+ final_score: number;
81
+ score_assessment?: "accurate" | "too_high" | "too_low" | "uncertain";
82
+ top_contributor: string;
83
+ verdict?: string;
84
+ }
85
+ export declare function createScoreAutopsyCompact(result: {
86
+ item: {
87
+ title: string;
88
+ };
89
+ final_score: number;
90
+ components: {
91
+ name: string;
92
+ contribution: number;
93
+ }[];
94
+ ai_analysis?: {
95
+ score_assessment: "accurate" | "too_high" | "too_low" | "uncertain";
96
+ verdict: string;
97
+ };
98
+ }): CompactResult<ScoreAutopsyKeyData>;
99
+ /**
100
+ * Context Analysis compact output
101
+ */
102
+ export interface ContextAnalysisKeyData {
103
+ quality_score: number;
104
+ interests_count: number;
105
+ tech_count: number;
106
+ gap_count: number;
107
+ top_recommendation: string;
108
+ personalized_advice?: string;
109
+ }
110
+ export declare function createContextAnalysisCompact(result: {
111
+ context_summary: {
112
+ interests_count: number;
113
+ tech_stack_count: number;
114
+ };
115
+ quality_score: {
116
+ overall: number;
117
+ };
118
+ coverage_gaps: unknown[];
119
+ recommendations: {
120
+ action: string;
121
+ }[];
122
+ ai_advice?: {
123
+ personalized_recommendations: string;
124
+ };
125
+ }): CompactResult<ContextAnalysisKeyData>;
126
+ /**
127
+ * Topic Connections compact output
128
+ */
129
+ export interface TopicConnectionsKeyData {
130
+ items_analyzed: number;
131
+ node_count: number;
132
+ edge_count: number;
133
+ central_topics: string[];
134
+ top_connection: {
135
+ from: string;
136
+ to: string;
137
+ strength: number;
138
+ } | null;
139
+ graph_narrative?: string;
140
+ }
141
+ export declare function createTopicConnectionsCompact(result: {
142
+ analysis_period: {
143
+ items_analyzed: number;
144
+ };
145
+ nodes: unknown[];
146
+ edges: {
147
+ from: string;
148
+ to: string;
149
+ co_occurrences: number;
150
+ }[];
151
+ central_topics: string[];
152
+ ai_insights?: {
153
+ graph_narrative: string;
154
+ };
155
+ }): CompactResult<TopicConnectionsKeyData>;
156
+ //# sourceMappingURL=output-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-manager.d.ts","sourceRoot":"","sources":["../src/output-manager.ts"],"names":[],"mappings":"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"}