@4da/mcp-server 4.3.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 (202) 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/live/crates-registry.d.ts +18 -0
  11. package/dist/live/crates-registry.d.ts.map +1 -0
  12. package/dist/live/crates-registry.js +133 -0
  13. package/dist/live/crates-registry.js.map +1 -0
  14. package/dist/live/go-registry.d.ts +19 -0
  15. package/dist/live/go-registry.d.ts.map +1 -0
  16. package/dist/live/go-registry.js +127 -0
  17. package/dist/live/go-registry.js.map +1 -0
  18. package/dist/live/http-utils.d.ts +3 -0
  19. package/dist/live/http-utils.d.ts.map +1 -0
  20. package/dist/live/http-utils.js +20 -0
  21. package/dist/live/http-utils.js.map +1 -0
  22. package/dist/live/index.d.ts +7 -2
  23. package/dist/live/index.d.ts.map +1 -1
  24. package/dist/live/index.js +71 -0
  25. package/dist/live/index.js.map +1 -1
  26. package/dist/live/npm-registry.d.ts +19 -0
  27. package/dist/live/npm-registry.d.ts.map +1 -0
  28. package/dist/live/npm-registry.js +132 -0
  29. package/dist/live/npm-registry.js.map +1 -0
  30. package/dist/live/osv-scanner.d.ts.map +1 -1
  31. package/dist/live/osv-scanner.js +1 -10
  32. package/dist/live/osv-scanner.js.map +1 -1
  33. package/dist/live/pypi-registry.d.ts +18 -0
  34. package/dist/live/pypi-registry.d.ts.map +1 -0
  35. package/dist/live/pypi-registry.js +142 -0
  36. package/dist/live/pypi-registry.js.map +1 -0
  37. package/dist/live/rate-limiter.d.ts +12 -0
  38. package/dist/live/rate-limiter.d.ts.map +1 -1
  39. package/dist/live/rate-limiter.js +4 -0
  40. package/dist/live/rate-limiter.js.map +1 -1
  41. package/dist/live/semver-utils.d.ts +5 -0
  42. package/dist/live/semver-utils.d.ts.map +1 -0
  43. package/dist/live/semver-utils.js +28 -0
  44. package/dist/live/semver-utils.js.map +1 -0
  45. package/dist/live/types.d.ts +41 -0
  46. package/dist/live/types.d.ts.map +1 -1
  47. package/dist/schema-registry.d.ts +4 -2
  48. package/dist/schema-registry.d.ts.map +1 -1
  49. package/dist/schema-registry.js +55 -221
  50. package/dist/schema-registry.js.map +1 -1
  51. package/dist/schemas/dependency-health.json +27 -0
  52. package/dist/schemas/upgrade-planner.json +22 -0
  53. package/dist/tool-dispatch.d.ts +1 -7
  54. package/dist/tool-dispatch.d.ts.map +1 -1
  55. package/dist/tool-dispatch.js +14 -46
  56. package/dist/tool-dispatch.js.map +1 -1
  57. package/dist/tools/dependency-health.d.ts +45 -0
  58. package/dist/tools/dependency-health.d.ts.map +1 -0
  59. package/dist/tools/dependency-health.js +152 -0
  60. package/dist/tools/dependency-health.js.map +1 -0
  61. package/dist/tools/index.d.ts +13 -40
  62. package/dist/tools/index.d.ts.map +1 -1
  63. package/dist/tools/index.js +18 -52
  64. package/dist/tools/index.js.map +1 -1
  65. package/dist/tools/upgrade-planner.d.ts +59 -0
  66. package/dist/tools/upgrade-planner.d.ts.map +1 -0
  67. package/dist/tools/upgrade-planner.js +167 -0
  68. package/dist/tools/upgrade-planner.js.map +1 -0
  69. package/dist/tools/what-should-i-know.d.ts +4 -12
  70. package/dist/tools/what-should-i-know.d.ts.map +1 -1
  71. package/dist/tools/what-should-i-know.js +11 -102
  72. package/dist/tools/what-should-i-know.js.map +1 -1
  73. package/package.json +2 -2
  74. package/dist/schemas/agent-feedback-stats.json +0 -14
  75. package/dist/schemas/agent-session-brief.json +0 -25
  76. package/dist/schemas/attention-report.json +0 -13
  77. package/dist/schemas/autophagy-status.json +0 -13
  78. package/dist/schemas/compound-advantage.json +0 -14
  79. package/dist/schemas/config-validator.json +0 -18
  80. package/dist/schemas/context-analysis.json +0 -25
  81. package/dist/schemas/daily-briefing.json +0 -34
  82. package/dist/schemas/decision-windows.json +0 -22
  83. package/dist/schemas/delegation-score.json +0 -18
  84. package/dist/schemas/explain-relevance.json +0 -19
  85. package/dist/schemas/export-context.json +0 -17
  86. package/dist/schemas/llm-status.json +0 -13
  87. package/dist/schemas/preemption-feed.json +0 -18
  88. package/dist/schemas/project-health.json +0 -13
  89. package/dist/schemas/record-agent-feedback.json +0 -28
  90. package/dist/schemas/reverse-mentions.json +0 -13
  91. package/dist/schemas/score-autopsy.json +0 -30
  92. package/dist/schemas/semantic-shifts.json +0 -17
  93. package/dist/schemas/signal-chains.json +0 -19
  94. package/dist/schemas/source-health.json +0 -17
  95. package/dist/schemas/tech-radar.json +0 -23
  96. package/dist/schemas/topic-connections.json +0 -34
  97. package/dist/schemas/trend-analysis.json +0 -29
  98. package/dist/schemas/trust-summary.json +0 -13
  99. package/dist/tools/agent-feedback-stats.d.ts +0 -30
  100. package/dist/tools/agent-feedback-stats.d.ts.map +0 -1
  101. package/dist/tools/agent-feedback-stats.js +0 -41
  102. package/dist/tools/agent-feedback-stats.js.map +0 -1
  103. package/dist/tools/agent-session-brief.d.ts +0 -44
  104. package/dist/tools/agent-session-brief.d.ts.map +0 -1
  105. package/dist/tools/agent-session-brief.js +0 -179
  106. package/dist/tools/agent-session-brief.js.map +0 -1
  107. package/dist/tools/attention-report.d.ts +0 -40
  108. package/dist/tools/attention-report.d.ts.map +0 -1
  109. package/dist/tools/attention-report.js +0 -73
  110. package/dist/tools/attention-report.js.map +0 -1
  111. package/dist/tools/autophagy-status.d.ts +0 -25
  112. package/dist/tools/autophagy-status.d.ts.map +0 -1
  113. package/dist/tools/autophagy-status.js +0 -56
  114. package/dist/tools/autophagy-status.js.map +0 -1
  115. package/dist/tools/compound-advantage.d.ts +0 -30
  116. package/dist/tools/compound-advantage.d.ts.map +0 -1
  117. package/dist/tools/compound-advantage.js +0 -133
  118. package/dist/tools/compound-advantage.js.map +0 -1
  119. package/dist/tools/config-validator.d.ts +0 -59
  120. package/dist/tools/config-validator.d.ts.map +0 -1
  121. package/dist/tools/config-validator.js +0 -417
  122. package/dist/tools/config-validator.js.map +0 -1
  123. package/dist/tools/context-analysis.d.ts +0 -108
  124. package/dist/tools/context-analysis.d.ts.map +0 -1
  125. package/dist/tools/context-analysis.js +0 -301
  126. package/dist/tools/context-analysis.js.map +0 -1
  127. package/dist/tools/daily-briefing.d.ts +0 -103
  128. package/dist/tools/daily-briefing.d.ts.map +0 -1
  129. package/dist/tools/daily-briefing.js +0 -294
  130. package/dist/tools/daily-briefing.js.map +0 -1
  131. package/dist/tools/decision-windows.d.ts +0 -37
  132. package/dist/tools/decision-windows.d.ts.map +0 -1
  133. package/dist/tools/decision-windows.js +0 -67
  134. package/dist/tools/decision-windows.js.map +0 -1
  135. package/dist/tools/delegation-score.d.ts +0 -34
  136. package/dist/tools/delegation-score.d.ts.map +0 -1
  137. package/dist/tools/delegation-score.js +0 -260
  138. package/dist/tools/delegation-score.js.map +0 -1
  139. package/dist/tools/explain-relevance.d.ts +0 -36
  140. package/dist/tools/explain-relevance.d.ts.map +0 -1
  141. package/dist/tools/explain-relevance.js +0 -51
  142. package/dist/tools/explain-relevance.js.map +0 -1
  143. package/dist/tools/export-context.d.ts +0 -60
  144. package/dist/tools/export-context.d.ts.map +0 -1
  145. package/dist/tools/export-context.js +0 -179
  146. package/dist/tools/export-context.js.map +0 -1
  147. package/dist/tools/llm-status.d.ts +0 -45
  148. package/dist/tools/llm-status.d.ts.map +0 -1
  149. package/dist/tools/llm-status.js +0 -93
  150. package/dist/tools/llm-status.js.map +0 -1
  151. package/dist/tools/muse-context.d.ts +0 -195
  152. package/dist/tools/muse-context.d.ts.map +0 -1
  153. package/dist/tools/muse-context.js +0 -284
  154. package/dist/tools/muse-context.js.map +0 -1
  155. package/dist/tools/preemption-feed.d.ts +0 -55
  156. package/dist/tools/preemption-feed.d.ts.map +0 -1
  157. package/dist/tools/preemption-feed.js +0 -124
  158. package/dist/tools/preemption-feed.js.map +0 -1
  159. package/dist/tools/project-health.d.ts +0 -53
  160. package/dist/tools/project-health.d.ts.map +0 -1
  161. package/dist/tools/project-health.js +0 -122
  162. package/dist/tools/project-health.js.map +0 -1
  163. package/dist/tools/record-agent-feedback.d.ts +0 -46
  164. package/dist/tools/record-agent-feedback.d.ts.map +0 -1
  165. package/dist/tools/record-agent-feedback.js +0 -71
  166. package/dist/tools/record-agent-feedback.js.map +0 -1
  167. package/dist/tools/reverse-mentions.d.ts +0 -38
  168. package/dist/tools/reverse-mentions.d.ts.map +0 -1
  169. package/dist/tools/reverse-mentions.js +0 -75
  170. package/dist/tools/reverse-mentions.js.map +0 -1
  171. package/dist/tools/score-autopsy.d.ts +0 -93
  172. package/dist/tools/score-autopsy.d.ts.map +0 -1
  173. package/dist/tools/score-autopsy.js +0 -295
  174. package/dist/tools/score-autopsy.js.map +0 -1
  175. package/dist/tools/semantic-shifts.d.ts +0 -53
  176. package/dist/tools/semantic-shifts.d.ts.map +0 -1
  177. package/dist/tools/semantic-shifts.js +0 -74
  178. package/dist/tools/semantic-shifts.js.map +0 -1
  179. package/dist/tools/signal-chains.d.ts +0 -52
  180. package/dist/tools/signal-chains.d.ts.map +0 -1
  181. package/dist/tools/signal-chains.js +0 -63
  182. package/dist/tools/signal-chains.js.map +0 -1
  183. package/dist/tools/source-health.d.ts +0 -64
  184. package/dist/tools/source-health.d.ts.map +0 -1
  185. package/dist/tools/source-health.js +0 -205
  186. package/dist/tools/source-health.js.map +0 -1
  187. package/dist/tools/tech-radar.d.ts +0 -38
  188. package/dist/tools/tech-radar.d.ts.map +0 -1
  189. package/dist/tools/tech-radar.js +0 -249
  190. package/dist/tools/tech-radar.js.map +0 -1
  191. package/dist/tools/topic-connections.d.ts +0 -112
  192. package/dist/tools/topic-connections.d.ts.map +0 -1
  193. package/dist/tools/topic-connections.js +0 -319
  194. package/dist/tools/topic-connections.js.map +0 -1
  195. package/dist/tools/trend-analysis.d.ts +0 -105
  196. package/dist/tools/trend-analysis.d.ts.map +0 -1
  197. package/dist/tools/trend-analysis.js +0 -296
  198. package/dist/tools/trend-analysis.js.map +0 -1
  199. package/dist/tools/trust-summary.d.ts +0 -38
  200. package/dist/tools/trust-summary.d.ts.map +0 -1
  201. package/dist/tools/trust-summary.js +0 -89
  202. 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"}