@4da/mcp-server 4.5.0 → 4.6.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 (155) hide show
  1. package/README.md +61 -81
  2. package/dist/db.d.ts +12 -1
  3. package/dist/db.d.ts.map +1 -1
  4. package/dist/db.js +71 -8
  5. package/dist/db.js.map +1 -1
  6. package/dist/index.d.ts +9 -14
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +12 -17
  9. package/dist/index.js.map +1 -1
  10. package/dist/schema-registry.d.ts +4 -2
  11. package/dist/schema-registry.d.ts.map +1 -1
  12. package/dist/schema-registry.js +55 -235
  13. package/dist/schema-registry.js.map +1 -1
  14. package/dist/tool-dispatch.d.ts +1 -7
  15. package/dist/tool-dispatch.d.ts.map +1 -1
  16. package/dist/tool-dispatch.js +14 -48
  17. package/dist/tool-dispatch.js.map +1 -1
  18. package/dist/tools/index.d.ts +13 -42
  19. package/dist/tools/index.d.ts.map +1 -1
  20. package/dist/tools/index.js +18 -54
  21. package/dist/tools/index.js.map +1 -1
  22. package/dist/tools/what-should-i-know.d.ts +4 -12
  23. package/dist/tools/what-should-i-know.d.ts.map +1 -1
  24. package/dist/tools/what-should-i-know.js +11 -102
  25. package/dist/tools/what-should-i-know.js.map +1 -1
  26. package/package.json +2 -2
  27. package/dist/schemas/agent-feedback-stats.json +0 -14
  28. package/dist/schemas/agent-session-brief.json +0 -25
  29. package/dist/schemas/attention-report.json +0 -13
  30. package/dist/schemas/autophagy-status.json +0 -13
  31. package/dist/schemas/compound-advantage.json +0 -14
  32. package/dist/schemas/config-validator.json +0 -18
  33. package/dist/schemas/context-analysis.json +0 -25
  34. package/dist/schemas/daily-briefing.json +0 -34
  35. package/dist/schemas/decision-windows.json +0 -22
  36. package/dist/schemas/delegation-score.json +0 -18
  37. package/dist/schemas/explain-relevance.json +0 -19
  38. package/dist/schemas/export-context.json +0 -17
  39. package/dist/schemas/llm-status.json +0 -13
  40. package/dist/schemas/preemption-feed.json +0 -18
  41. package/dist/schemas/project-health.json +0 -13
  42. package/dist/schemas/record-agent-feedback.json +0 -28
  43. package/dist/schemas/reverse-mentions.json +0 -13
  44. package/dist/schemas/score-autopsy.json +0 -30
  45. package/dist/schemas/semantic-shifts.json +0 -17
  46. package/dist/schemas/signal-chains.json +0 -19
  47. package/dist/schemas/source-health.json +0 -17
  48. package/dist/schemas/tech-radar.json +0 -23
  49. package/dist/schemas/topic-connections.json +0 -34
  50. package/dist/schemas/trend-analysis.json +0 -29
  51. package/dist/schemas/trust-summary.json +0 -13
  52. package/dist/tools/agent-feedback-stats.d.ts +0 -30
  53. package/dist/tools/agent-feedback-stats.d.ts.map +0 -1
  54. package/dist/tools/agent-feedback-stats.js +0 -41
  55. package/dist/tools/agent-feedback-stats.js.map +0 -1
  56. package/dist/tools/agent-session-brief.d.ts +0 -44
  57. package/dist/tools/agent-session-brief.d.ts.map +0 -1
  58. package/dist/tools/agent-session-brief.js +0 -179
  59. package/dist/tools/agent-session-brief.js.map +0 -1
  60. package/dist/tools/attention-report.d.ts +0 -40
  61. package/dist/tools/attention-report.d.ts.map +0 -1
  62. package/dist/tools/attention-report.js +0 -73
  63. package/dist/tools/attention-report.js.map +0 -1
  64. package/dist/tools/autophagy-status.d.ts +0 -25
  65. package/dist/tools/autophagy-status.d.ts.map +0 -1
  66. package/dist/tools/autophagy-status.js +0 -56
  67. package/dist/tools/autophagy-status.js.map +0 -1
  68. package/dist/tools/compound-advantage.d.ts +0 -30
  69. package/dist/tools/compound-advantage.d.ts.map +0 -1
  70. package/dist/tools/compound-advantage.js +0 -133
  71. package/dist/tools/compound-advantage.js.map +0 -1
  72. package/dist/tools/config-validator.d.ts +0 -59
  73. package/dist/tools/config-validator.d.ts.map +0 -1
  74. package/dist/tools/config-validator.js +0 -417
  75. package/dist/tools/config-validator.js.map +0 -1
  76. package/dist/tools/context-analysis.d.ts +0 -108
  77. package/dist/tools/context-analysis.d.ts.map +0 -1
  78. package/dist/tools/context-analysis.js +0 -301
  79. package/dist/tools/context-analysis.js.map +0 -1
  80. package/dist/tools/daily-briefing.d.ts +0 -103
  81. package/dist/tools/daily-briefing.d.ts.map +0 -1
  82. package/dist/tools/daily-briefing.js +0 -294
  83. package/dist/tools/daily-briefing.js.map +0 -1
  84. package/dist/tools/decision-windows.d.ts +0 -37
  85. package/dist/tools/decision-windows.d.ts.map +0 -1
  86. package/dist/tools/decision-windows.js +0 -67
  87. package/dist/tools/decision-windows.js.map +0 -1
  88. package/dist/tools/delegation-score.d.ts +0 -34
  89. package/dist/tools/delegation-score.d.ts.map +0 -1
  90. package/dist/tools/delegation-score.js +0 -260
  91. package/dist/tools/delegation-score.js.map +0 -1
  92. package/dist/tools/explain-relevance.d.ts +0 -36
  93. package/dist/tools/explain-relevance.d.ts.map +0 -1
  94. package/dist/tools/explain-relevance.js +0 -51
  95. package/dist/tools/explain-relevance.js.map +0 -1
  96. package/dist/tools/export-context.d.ts +0 -60
  97. package/dist/tools/export-context.d.ts.map +0 -1
  98. package/dist/tools/export-context.js +0 -179
  99. package/dist/tools/export-context.js.map +0 -1
  100. package/dist/tools/llm-status.d.ts +0 -45
  101. package/dist/tools/llm-status.d.ts.map +0 -1
  102. package/dist/tools/llm-status.js +0 -93
  103. package/dist/tools/llm-status.js.map +0 -1
  104. package/dist/tools/muse-context.d.ts +0 -195
  105. package/dist/tools/muse-context.d.ts.map +0 -1
  106. package/dist/tools/muse-context.js +0 -284
  107. package/dist/tools/muse-context.js.map +0 -1
  108. package/dist/tools/preemption-feed.d.ts +0 -55
  109. package/dist/tools/preemption-feed.d.ts.map +0 -1
  110. package/dist/tools/preemption-feed.js +0 -124
  111. package/dist/tools/preemption-feed.js.map +0 -1
  112. package/dist/tools/project-health.d.ts +0 -53
  113. package/dist/tools/project-health.d.ts.map +0 -1
  114. package/dist/tools/project-health.js +0 -122
  115. package/dist/tools/project-health.js.map +0 -1
  116. package/dist/tools/record-agent-feedback.d.ts +0 -46
  117. package/dist/tools/record-agent-feedback.d.ts.map +0 -1
  118. package/dist/tools/record-agent-feedback.js +0 -71
  119. package/dist/tools/record-agent-feedback.js.map +0 -1
  120. package/dist/tools/reverse-mentions.d.ts +0 -38
  121. package/dist/tools/reverse-mentions.d.ts.map +0 -1
  122. package/dist/tools/reverse-mentions.js +0 -75
  123. package/dist/tools/reverse-mentions.js.map +0 -1
  124. package/dist/tools/score-autopsy.d.ts +0 -93
  125. package/dist/tools/score-autopsy.d.ts.map +0 -1
  126. package/dist/tools/score-autopsy.js +0 -295
  127. package/dist/tools/score-autopsy.js.map +0 -1
  128. package/dist/tools/semantic-shifts.d.ts +0 -53
  129. package/dist/tools/semantic-shifts.d.ts.map +0 -1
  130. package/dist/tools/semantic-shifts.js +0 -74
  131. package/dist/tools/semantic-shifts.js.map +0 -1
  132. package/dist/tools/signal-chains.d.ts +0 -52
  133. package/dist/tools/signal-chains.d.ts.map +0 -1
  134. package/dist/tools/signal-chains.js +0 -63
  135. package/dist/tools/signal-chains.js.map +0 -1
  136. package/dist/tools/source-health.d.ts +0 -64
  137. package/dist/tools/source-health.d.ts.map +0 -1
  138. package/dist/tools/source-health.js +0 -205
  139. package/dist/tools/source-health.js.map +0 -1
  140. package/dist/tools/tech-radar.d.ts +0 -38
  141. package/dist/tools/tech-radar.d.ts.map +0 -1
  142. package/dist/tools/tech-radar.js +0 -249
  143. package/dist/tools/tech-radar.js.map +0 -1
  144. package/dist/tools/topic-connections.d.ts +0 -112
  145. package/dist/tools/topic-connections.d.ts.map +0 -1
  146. package/dist/tools/topic-connections.js +0 -319
  147. package/dist/tools/topic-connections.js.map +0 -1
  148. package/dist/tools/trend-analysis.d.ts +0 -105
  149. package/dist/tools/trend-analysis.d.ts.map +0 -1
  150. package/dist/tools/trend-analysis.js +0 -296
  151. package/dist/tools/trend-analysis.js.map +0 -1
  152. package/dist/tools/trust-summary.d.ts +0 -38
  153. package/dist/tools/trust-summary.d.ts.map +0 -1
  154. package/dist/tools/trust-summary.js +0 -89
  155. package/dist/tools/trust-summary.js.map +0 -1
@@ -1,319 +0,0 @@
1
- // SPDX-License-Identifier: FSL-1.1-Apache-2.0
2
- /**
3
- * Topic Connections Tool
4
- *
5
- * Build and explore knowledge graphs from discovered content.
6
- * This is a SUPERPOWER - it reveals hidden connections between topics.
7
- *
8
- * With synthesize=true, uses LLM to explain the significance of connections.
9
- */
10
- import { getLLMConfig, canSynthesize, synthesize, SYNTHESIS_PROMPTS } from "../llm.js";
11
- import { createTopicConnectionsCompact } from "../output-manager.js";
12
- export const topicConnectionsTool = {
13
- name: "topic_connections",
14
- description: `Discover connections between topics in your content.
15
-
16
- With synthesize=true (recommended), uses AI to explain the significance of connections.
17
-
18
- Returns:
19
- - Topic co-occurrence graph
20
- - Strongest topic relationships
21
- - Central/hub topics
22
- - Path finding between topics
23
- - AI insights about connections (when enabled)
24
-
25
- Use this to understand how your interests connect.`,
26
- inputSchema: {
27
- type: "object",
28
- properties: {
29
- topics: {
30
- type: "array",
31
- items: { type: "string" },
32
- description: "Specific topics to analyze (optional, auto-detect if not specified)",
33
- },
34
- find_path: {
35
- type: "object",
36
- properties: {
37
- from: { type: "string" },
38
- to: { type: "string" },
39
- },
40
- description: "Find connection path between two topics",
41
- },
42
- days: {
43
- type: "number",
44
- description: "Days of content to analyze (default: 30)",
45
- },
46
- synthesize: {
47
- type: "boolean",
48
- description: "Use AI to explain connection significance (default: true if LLM configured)",
49
- },
50
- compact: {
51
- type: "boolean",
52
- description: "Return compact result with file reference (default: true for ~80% token reduction)",
53
- },
54
- },
55
- },
56
- };
57
- export async function executeTopicConnections(db, params) {
58
- const { topics: customTopics, find_path, days = 30 } = params;
59
- const useCompact = params.compact !== false; // Default to compact=true
60
- const dbInstance = db.db;
61
- // Check LLM availability
62
- const llmConfig = getLLMConfig(dbInstance);
63
- const shouldSynthesize = params.synthesize ?? canSynthesize(llmConfig);
64
- // Default topics to analyze
65
- const topics = customTopics || [
66
- "rust", "typescript", "python", "go", "javascript",
67
- "ai", "llm", "embedding", "database", "sql", "sqlite",
68
- "react", "async", "wasm", "security", "api", "performance"
69
- ];
70
- // Get items for analysis
71
- const items = db.getRelevantContent(0, undefined, 500, days * 24);
72
- // Build nodes
73
- const nodes = [];
74
- const topicItems = new Map();
75
- for (const topic of topics) {
76
- const matching = items.filter(i => {
77
- const text = (i.title + " " + i.content).toLowerCase();
78
- return text.includes(topic.toLowerCase());
79
- });
80
- if (matching.length > 0) {
81
- topicItems.set(topic, matching);
82
- const avgRelevance = matching.reduce((sum, i) => sum + i.relevance_score, 0) / matching.length;
83
- nodes.push({
84
- topic,
85
- mention_count: matching.length,
86
- avg_relevance: Math.round(avgRelevance * 100) / 100,
87
- centrality: 0, // Calculated later
88
- connections: 0, // Calculated later
89
- });
90
- }
91
- }
92
- // Build edges (co-occurrence)
93
- const edges = [];
94
- const nodeTopics = nodes.map(n => n.topic);
95
- for (let i = 0; i < nodeTopics.length; i++) {
96
- for (let j = i + 1; j < nodeTopics.length; j++) {
97
- const topicA = nodeTopics[i];
98
- const topicB = nodeTopics[j];
99
- // Count co-occurrences
100
- const coOccur = items.filter(item => {
101
- const text = (item.title + " " + item.content).toLowerCase();
102
- return text.includes(topicA.toLowerCase()) && text.includes(topicB.toLowerCase());
103
- }).length;
104
- if (coOccur > 0) {
105
- edges.push({
106
- from: topicA,
107
- to: topicB,
108
- co_occurrences: coOccur,
109
- strength: coOccur >= 10 ? "strong" : coOccur >= 3 ? "medium" : "weak",
110
- });
111
- // Update connection counts
112
- const nodeA = nodes.find(n => n.topic === topicA);
113
- const nodeB = nodes.find(n => n.topic === topicB);
114
- if (nodeA)
115
- nodeA.connections++;
116
- if (nodeB)
117
- nodeB.connections++;
118
- }
119
- }
120
- }
121
- // Calculate centrality (simplified: connection count weighted by strength)
122
- const maxConnections = Math.max(...nodes.map(n => n.connections), 1);
123
- for (const node of nodes) {
124
- node.centrality = Math.round((node.connections / maxConnections) * 100) / 100;
125
- }
126
- // Find path if requested
127
- let path;
128
- if (find_path) {
129
- path = findTopicPath(find_path.from, find_path.to, edges, items);
130
- }
131
- // Identify clusters
132
- const clusters = identifyClusters(nodes, edges);
133
- // Central and isolated topics
134
- const centralTopics = nodes
135
- .filter(n => n.centrality >= 0.5)
136
- .sort((a, b) => b.centrality - a.centrality)
137
- .slice(0, 5)
138
- .map(n => n.topic);
139
- const isolatedTopics = nodes
140
- .filter(n => n.connections === 0)
141
- .map(n => n.topic);
142
- // Generate insights
143
- const insights = generateGraphInsights(nodes, edges, clusters);
144
- const result = {
145
- analysis_period: {
146
- days,
147
- items_analyzed: items.length,
148
- },
149
- nodes: nodes.sort((a, b) => b.mention_count - a.mention_count),
150
- edges: edges.sort((a, b) => b.co_occurrences - a.co_occurrences),
151
- path,
152
- clusters,
153
- central_topics: centralTopics,
154
- isolated_topics: isolatedTopics,
155
- insights,
156
- };
157
- // AI Graph Insights - the actual superpower
158
- if (shouldSynthesize && canSynthesize(llmConfig)) {
159
- try {
160
- const context = db.getUserContext(true, true);
161
- const graphData = {
162
- nodes: result.nodes.slice(0, 15),
163
- edges: result.edges.slice(0, 20),
164
- clusters: result.clusters,
165
- central_topics: result.central_topics,
166
- isolated_topics: result.isolated_topics,
167
- path: result.path,
168
- };
169
- const contextData = {
170
- interests: context.interests.slice(0, 10),
171
- tech_stack: context.tech_stack,
172
- role: context.role,
173
- };
174
- const synthesis = await synthesize(llmConfig, {
175
- system: SYNTHESIS_PROMPTS.topicConnections.system,
176
- prompt: SYNTHESIS_PROMPTS.topicConnections.buildPrompt(graphData, contextData),
177
- max_tokens: 400,
178
- complexity: SYNTHESIS_PROMPTS.topicConnections.complexity,
179
- });
180
- // Parse the synthesis
181
- const lines = synthesis.synthesis.split("\n").filter(l => l.trim());
182
- const surprisingConnection = lines.find(l => l.toLowerCase().includes("surprising") ||
183
- l.toLowerCase().includes("interesting") ||
184
- l.toLowerCase().includes("unexpected")) || lines[0] || "";
185
- const exploration = lines.find(l => l.toLowerCase().includes("explore") ||
186
- l.toLowerCase().includes("investigate") ||
187
- l.toLowerCase().includes("look into")) || "";
188
- const hiddenPattern = lines.find(l => l.toLowerCase().includes("pattern") ||
189
- l.toLowerCase().includes("reveals") ||
190
- l.toLowerCase().includes("suggests")) || "";
191
- result.ai_insights = {
192
- graph_narrative: synthesis.synthesis,
193
- surprising_connection: surprisingConnection,
194
- exploration_suggestion: exploration || "Explore connections between central topics",
195
- hidden_pattern: hiddenPattern || "No hidden patterns detected",
196
- model_used: synthesis.model_used,
197
- };
198
- }
199
- catch (error) {
200
- console.error("AI graph insights failed:", error);
201
- }
202
- }
203
- // Return compact or full result based on parameter
204
- if (useCompact) {
205
- return createTopicConnectionsCompact(result);
206
- }
207
- return result;
208
- }
209
- function findTopicPath(from, to, edges, items) {
210
- // Direct connection
211
- const directEdge = edges.find(e => (e.from === from && e.to === to) || (e.from === to && e.to === from));
212
- if (directEdge) {
213
- // Get connecting items
214
- const connectingItems = items
215
- .filter(i => {
216
- const text = (i.title + " " + i.content).toLowerCase();
217
- return text.includes(from.toLowerCase()) && text.includes(to.toLowerCase());
218
- })
219
- .slice(0, 3)
220
- .map(i => ({ title: i.title, score: i.relevance_score }));
221
- return {
222
- from,
223
- to,
224
- path: [from, to],
225
- direct_connection: true,
226
- connecting_items: connectingItems,
227
- };
228
- }
229
- // Two-hop path (simplified BFS)
230
- for (const edge of edges) {
231
- const intermediate = edge.from === from ? edge.to :
232
- edge.to === from ? edge.from : null;
233
- if (intermediate) {
234
- const secondEdge = edges.find(e => (e.from === intermediate && e.to === to) ||
235
- (e.to === intermediate && e.from === to));
236
- if (secondEdge) {
237
- const connectingItems = items
238
- .filter(i => {
239
- const text = (i.title + " " + i.content).toLowerCase();
240
- return text.includes(intermediate.toLowerCase());
241
- })
242
- .slice(0, 3)
243
- .map(i => ({ title: i.title, score: i.relevance_score }));
244
- return {
245
- from,
246
- to,
247
- path: [from, intermediate, to],
248
- direct_connection: false,
249
- connecting_items: connectingItems,
250
- };
251
- }
252
- }
253
- }
254
- // No path found
255
- return {
256
- from,
257
- to,
258
- path: [],
259
- direct_connection: false,
260
- connecting_items: [],
261
- };
262
- }
263
- function identifyClusters(nodes, edges) {
264
- // Predefined cluster patterns
265
- const clusterPatterns = [
266
- { name: "Systems Programming", keywords: ["rust", "go", "async", "wasm", "performance"] },
267
- { name: "AI & ML", keywords: ["ai", "llm", "embedding", "python", "ml"] },
268
- { name: "Web Development", keywords: ["typescript", "javascript", "react", "frontend", "api"] },
269
- { name: "Data & Storage", keywords: ["database", "sql", "sqlite", "redis", "postgres"] },
270
- ];
271
- const clusters = [];
272
- for (const pattern of clusterPatterns) {
273
- const matchingNodes = nodes.filter(n => pattern.keywords.includes(n.topic.toLowerCase()));
274
- if (matchingNodes.length >= 2) {
275
- // Calculate internal edge count for coherence
276
- let internalEdges = 0;
277
- const topics = matchingNodes.map(n => n.topic);
278
- for (const edge of edges) {
279
- if (topics.includes(edge.from) && topics.includes(edge.to)) {
280
- internalEdges++;
281
- }
282
- }
283
- const maxEdges = (topics.length * (topics.length - 1)) / 2;
284
- const coherence = maxEdges > 0 ? internalEdges / maxEdges : 0;
285
- clusters.push({
286
- name: pattern.name,
287
- topics: matchingNodes.map(n => n.topic),
288
- item_count: matchingNodes.reduce((sum, n) => sum + n.mention_count, 0),
289
- coherence: Math.round(coherence * 100) / 100,
290
- });
291
- }
292
- }
293
- return clusters.sort((a, b) => b.item_count - a.item_count);
294
- }
295
- function generateGraphInsights(nodes, edges, clusters) {
296
- const insights = [];
297
- // Most central topic
298
- const mostCentral = nodes.sort((a, b) => b.centrality - a.centrality)[0];
299
- if (mostCentral) {
300
- insights.push(`"${mostCentral.topic}" is your most connected topic (${mostCentral.connections} connections)`);
301
- }
302
- // Strongest connection
303
- const strongestEdge = edges[0];
304
- if (strongestEdge) {
305
- insights.push(`Strongest connection: "${strongestEdge.from}" ↔ "${strongestEdge.to}" (${strongestEdge.co_occurrences} co-occurrences)`);
306
- }
307
- // Isolated topics
308
- const isolated = nodes.filter(n => n.connections === 0);
309
- if (isolated.length > 0) {
310
- insights.push(`${isolated.length} isolated topic(s): ${isolated.map(n => n.topic).join(", ")} - consider exploring connections`);
311
- }
312
- // Cluster insight
313
- const topCluster = clusters[0];
314
- if (topCluster) {
315
- insights.push(`"${topCluster.name}" is your strongest cluster with ${topCluster.topics.length} related topics`);
316
- }
317
- return insights;
318
- }
319
- //# sourceMappingURL=topic-connections.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"topic-connections.js","sourceRoot":"","sources":["../../src/tools/topic-connections.ts"],"names":[],"mappings":"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"}
@@ -1,105 +0,0 @@
1
- /**
2
- * Trend Analysis Tool
3
- *
4
- * Statistical analysis of patterns and trends over time.
5
- * This is a SUPERPOWER - it reveals what's rising, falling, and anomalous.
6
- *
7
- * With synthesize=true, uses LLM to interpret trends and make predictions.
8
- */
9
- import type { FourDADatabase } from "../db.js";
10
- import { type CompactResult, type TrendAnalysisKeyData } from "../output-manager.js";
11
- export declare const trendAnalysisTool: {
12
- name: string;
13
- description: string;
14
- inputSchema: {
15
- type: string;
16
- properties: {
17
- days: {
18
- type: string;
19
- description: string;
20
- };
21
- topic: {
22
- type: string;
23
- description: string;
24
- };
25
- detect_anomalies: {
26
- type: string;
27
- description: string;
28
- };
29
- synthesize: {
30
- type: string;
31
- description: string;
32
- };
33
- compact: {
34
- type: string;
35
- description: string;
36
- };
37
- };
38
- };
39
- };
40
- export interface TrendAnalysisParams {
41
- days?: number;
42
- topic?: string;
43
- detect_anomalies?: boolean;
44
- synthesize?: boolean;
45
- compact?: boolean;
46
- }
47
- interface TopicTrend {
48
- topic: string;
49
- current_week: number;
50
- previous_week: number;
51
- change_percent: number;
52
- trend: "rising" | "falling" | "stable";
53
- avg_score: number;
54
- }
55
- interface VolumeAnomaly {
56
- date: string;
57
- volume: number;
58
- expected: number;
59
- z_score: number;
60
- status: "spike" | "drop" | "normal";
61
- }
62
- interface SourceTrend {
63
- source: string;
64
- volume_trend: "up" | "down" | "stable";
65
- quality_trend: "up" | "down" | "stable";
66
- avg_score: number;
67
- item_count: number;
68
- }
69
- interface TrendResult {
70
- period: {
71
- start: string;
72
- end: string;
73
- days: number;
74
- };
75
- summary: {
76
- total_items: number;
77
- avg_relevance: number;
78
- volume_trend: string;
79
- top_rising_topic: string | null;
80
- top_falling_topic: string | null;
81
- };
82
- topic_trends: TopicTrend[];
83
- volume_by_day: {
84
- date: string;
85
- count: number;
86
- }[];
87
- anomalies: VolumeAnomaly[];
88
- source_trends: SourceTrend[];
89
- correlations: {
90
- topic_a: string;
91
- topic_b: string;
92
- co_occurrences: number;
93
- }[];
94
- predictions: string[];
95
- ai_interpretation?: {
96
- narrative: string;
97
- key_signal: string;
98
- forecast: string;
99
- recommended_focus: string;
100
- model_used: string;
101
- };
102
- }
103
- export declare function executeTrendAnalysis(db: FourDADatabase, params: TrendAnalysisParams): Promise<TrendResult | CompactResult<TrendAnalysisKeyData>>;
104
- export {};
105
- //# sourceMappingURL=trend-analysis.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trend-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/trend-analysis.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAA8B,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC7B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;CACrC;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;IACvC,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,WAAW;IACnB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,CAAC;IACF,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7E,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,iBAAiB,CAAC,EAAE;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAkJ5D"}