@4da/mcp-server 4.5.0 → 4.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/LICENSE +201 -21
  2. package/README.md +63 -83
  3. package/dist/auth.js +1 -1
  4. package/dist/auth.js.map +1 -1
  5. package/dist/db.d.ts +46 -1
  6. package/dist/db.d.ts.map +1 -1
  7. package/dist/db.js +156 -36
  8. package/dist/db.js.map +1 -1
  9. package/dist/doctor.js +1 -1
  10. package/dist/doctor.js.map +1 -1
  11. package/dist/http-transport.js +1 -1
  12. package/dist/http-transport.js.map +1 -1
  13. package/dist/index.d.ts +9 -14
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +49 -35
  16. package/dist/index.js.map +1 -1
  17. package/dist/live/cache.js +1 -1
  18. package/dist/live/cache.js.map +1 -1
  19. package/dist/live/crates-registry.js +1 -1
  20. package/dist/live/crates-registry.js.map +1 -1
  21. package/dist/live/go-registry.js +1 -1
  22. package/dist/live/go-registry.js.map +1 -1
  23. package/dist/live/hn-fetcher.js +1 -1
  24. package/dist/live/hn-fetcher.js.map +1 -1
  25. package/dist/live/http-utils.js +1 -1
  26. package/dist/live/http-utils.js.map +1 -1
  27. package/dist/live/index.d.ts +28 -0
  28. package/dist/live/index.d.ts.map +1 -1
  29. package/dist/live/index.js +63 -4
  30. package/dist/live/index.js.map +1 -1
  31. package/dist/live/npm-registry.js +1 -1
  32. package/dist/live/npm-registry.js.map +1 -1
  33. package/dist/live/osv-scanner.d.ts +4 -0
  34. package/dist/live/osv-scanner.d.ts.map +1 -1
  35. package/dist/live/osv-scanner.js +45 -40
  36. package/dist/live/osv-scanner.js.map +1 -1
  37. package/dist/live/pypi-registry.js +1 -1
  38. package/dist/live/pypi-registry.js.map +1 -1
  39. package/dist/live/rate-limiter.js +1 -1
  40. package/dist/live/rate-limiter.js.map +1 -1
  41. package/dist/live/semver-utils.js +1 -1
  42. package/dist/live/semver-utils.js.map +1 -1
  43. package/dist/live/types.d.ts +4 -0
  44. package/dist/live/types.d.ts.map +1 -1
  45. package/dist/live/types.js +1 -1
  46. package/dist/live/types.js.map +1 -1
  47. package/dist/live/version-resolver.d.ts +5 -0
  48. package/dist/live/version-resolver.d.ts.map +1 -1
  49. package/dist/live/version-resolver.js +64 -14
  50. package/dist/live/version-resolver.js.map +1 -1
  51. package/dist/live-singleton.js +1 -1
  52. package/dist/live-singleton.js.map +1 -1
  53. package/dist/llm.d.ts.map +1 -1
  54. package/dist/llm.js +13 -16
  55. package/dist/llm.js.map +1 -1
  56. package/dist/output-manager.js +1 -1
  57. package/dist/output-manager.js.map +1 -1
  58. package/dist/project-scanner.d.ts +5 -0
  59. package/dist/project-scanner.d.ts.map +1 -1
  60. package/dist/project-scanner.js +66 -10
  61. package/dist/project-scanner.js.map +1 -1
  62. package/dist/schema-registry.d.ts +4 -2
  63. package/dist/schema-registry.d.ts.map +1 -1
  64. package/dist/schema-registry.js +58 -238
  65. package/dist/schema-registry.js.map +1 -1
  66. package/dist/schemas/agent-memory.json +1 -1
  67. package/dist/schemas/decision-enforcement.json +1 -1
  68. package/dist/schemas/decision-memory.json +1 -1
  69. package/dist/schemas/dependency-health.json +1 -1
  70. package/dist/schemas/developer-dna.json +1 -1
  71. package/dist/schemas/ecosystem-pulse.json +1 -1
  72. package/dist/schemas/get-actionable-signals.json +1 -1
  73. package/dist/schemas/get-context.json +1 -1
  74. package/dist/schemas/get-relevant-content.json +1 -1
  75. package/dist/schemas/knowledge-gaps.json +1 -1
  76. package/dist/schemas/record-feedback.json +1 -1
  77. package/dist/schemas/upgrade-planner.json +1 -1
  78. package/dist/schemas/vulnerability-scan.json +2 -2
  79. package/dist/setup.js +1 -1
  80. package/dist/setup.js.map +1 -1
  81. package/dist/tool-dispatch.d.ts +1 -7
  82. package/dist/tool-dispatch.d.ts.map +1 -1
  83. package/dist/tool-dispatch.js +51 -50
  84. package/dist/tool-dispatch.js.map +1 -1
  85. package/dist/tools/agent-memory.js +1 -1
  86. package/dist/tools/agent-memory.js.map +1 -1
  87. package/dist/tools/decision-enforcement.js +1 -1
  88. package/dist/tools/decision-enforcement.js.map +1 -1
  89. package/dist/tools/decision-memory.d.ts +0 -2
  90. package/dist/tools/decision-memory.d.ts.map +1 -1
  91. package/dist/tools/decision-memory.js +1 -80
  92. package/dist/tools/decision-memory.js.map +1 -1
  93. package/dist/tools/dependency-health.js +1 -1
  94. package/dist/tools/dependency-health.js.map +1 -1
  95. package/dist/tools/developer-dna.js +1 -1
  96. package/dist/tools/developer-dna.js.map +1 -1
  97. package/dist/tools/ecosystem-pulse.js +1 -1
  98. package/dist/tools/ecosystem-pulse.js.map +1 -1
  99. package/dist/tools/get-actionable-signals.d.ts.map +1 -1
  100. package/dist/tools/get-actionable-signals.js +26 -1
  101. package/dist/tools/get-actionable-signals.js.map +1 -1
  102. package/dist/tools/get-context.js +1 -1
  103. package/dist/tools/get-context.js.map +1 -1
  104. package/dist/tools/get-relevant-content.js +1 -1
  105. package/dist/tools/get-relevant-content.js.map +1 -1
  106. package/dist/tools/index.d.ts +13 -42
  107. package/dist/tools/index.d.ts.map +1 -1
  108. package/dist/tools/index.js +19 -55
  109. package/dist/tools/index.js.map +1 -1
  110. package/dist/tools/knowledge-gaps.js +1 -1
  111. package/dist/tools/knowledge-gaps.js.map +1 -1
  112. package/dist/tools/record-feedback.js +1 -1
  113. package/dist/tools/record-feedback.js.map +1 -1
  114. package/dist/tools/upgrade-planner.js +1 -1
  115. package/dist/tools/upgrade-planner.js.map +1 -1
  116. package/dist/tools/vulnerability-scan.d.ts +7 -3
  117. package/dist/tools/vulnerability-scan.d.ts.map +1 -1
  118. package/dist/tools/vulnerability-scan.js +19 -6
  119. package/dist/tools/vulnerability-scan.js.map +1 -1
  120. package/dist/tools/what-should-i-know.d.ts +3 -12
  121. package/dist/tools/what-should-i-know.d.ts.map +1 -1
  122. package/dist/tools/what-should-i-know.js +11 -171
  123. package/dist/tools/what-should-i-know.js.map +1 -1
  124. package/dist/types.d.ts +4 -0
  125. package/dist/types.d.ts.map +1 -1
  126. package/dist/types.js +1 -1
  127. package/dist/types.js.map +1 -1
  128. package/package.json +12 -8
  129. package/dist/schemas/agent-feedback-stats.json +0 -14
  130. package/dist/schemas/agent-session-brief.json +0 -25
  131. package/dist/schemas/attention-report.json +0 -13
  132. package/dist/schemas/autophagy-status.json +0 -13
  133. package/dist/schemas/compound-advantage.json +0 -14
  134. package/dist/schemas/config-validator.json +0 -18
  135. package/dist/schemas/context-analysis.json +0 -25
  136. package/dist/schemas/daily-briefing.json +0 -34
  137. package/dist/schemas/decision-windows.json +0 -22
  138. package/dist/schemas/delegation-score.json +0 -18
  139. package/dist/schemas/explain-relevance.json +0 -19
  140. package/dist/schemas/export-context.json +0 -17
  141. package/dist/schemas/llm-status.json +0 -13
  142. package/dist/schemas/preemption-feed.json +0 -18
  143. package/dist/schemas/project-health.json +0 -13
  144. package/dist/schemas/record-agent-feedback.json +0 -28
  145. package/dist/schemas/reverse-mentions.json +0 -13
  146. package/dist/schemas/score-autopsy.json +0 -30
  147. package/dist/schemas/semantic-shifts.json +0 -17
  148. package/dist/schemas/signal-chains.json +0 -19
  149. package/dist/schemas/source-health.json +0 -17
  150. package/dist/schemas/tech-radar.json +0 -23
  151. package/dist/schemas/topic-connections.json +0 -34
  152. package/dist/schemas/trend-analysis.json +0 -29
  153. package/dist/schemas/trust-summary.json +0 -13
  154. package/dist/tools/agent-feedback-stats.d.ts +0 -30
  155. package/dist/tools/agent-feedback-stats.d.ts.map +0 -1
  156. package/dist/tools/agent-feedback-stats.js +0 -41
  157. package/dist/tools/agent-feedback-stats.js.map +0 -1
  158. package/dist/tools/agent-session-brief.d.ts +0 -44
  159. package/dist/tools/agent-session-brief.d.ts.map +0 -1
  160. package/dist/tools/agent-session-brief.js +0 -179
  161. package/dist/tools/agent-session-brief.js.map +0 -1
  162. package/dist/tools/attention-report.d.ts +0 -40
  163. package/dist/tools/attention-report.d.ts.map +0 -1
  164. package/dist/tools/attention-report.js +0 -73
  165. package/dist/tools/attention-report.js.map +0 -1
  166. package/dist/tools/autophagy-status.d.ts +0 -25
  167. package/dist/tools/autophagy-status.d.ts.map +0 -1
  168. package/dist/tools/autophagy-status.js +0 -56
  169. package/dist/tools/autophagy-status.js.map +0 -1
  170. package/dist/tools/compound-advantage.d.ts +0 -30
  171. package/dist/tools/compound-advantage.d.ts.map +0 -1
  172. package/dist/tools/compound-advantage.js +0 -133
  173. package/dist/tools/compound-advantage.js.map +0 -1
  174. package/dist/tools/config-validator.d.ts +0 -59
  175. package/dist/tools/config-validator.d.ts.map +0 -1
  176. package/dist/tools/config-validator.js +0 -417
  177. package/dist/tools/config-validator.js.map +0 -1
  178. package/dist/tools/context-analysis.d.ts +0 -108
  179. package/dist/tools/context-analysis.d.ts.map +0 -1
  180. package/dist/tools/context-analysis.js +0 -301
  181. package/dist/tools/context-analysis.js.map +0 -1
  182. package/dist/tools/daily-briefing.d.ts +0 -103
  183. package/dist/tools/daily-briefing.d.ts.map +0 -1
  184. package/dist/tools/daily-briefing.js +0 -294
  185. package/dist/tools/daily-briefing.js.map +0 -1
  186. package/dist/tools/decision-windows.d.ts +0 -37
  187. package/dist/tools/decision-windows.d.ts.map +0 -1
  188. package/dist/tools/decision-windows.js +0 -67
  189. package/dist/tools/decision-windows.js.map +0 -1
  190. package/dist/tools/delegation-score.d.ts +0 -34
  191. package/dist/tools/delegation-score.d.ts.map +0 -1
  192. package/dist/tools/delegation-score.js +0 -260
  193. package/dist/tools/delegation-score.js.map +0 -1
  194. package/dist/tools/explain-relevance.d.ts +0 -36
  195. package/dist/tools/explain-relevance.d.ts.map +0 -1
  196. package/dist/tools/explain-relevance.js +0 -51
  197. package/dist/tools/explain-relevance.js.map +0 -1
  198. package/dist/tools/export-context.d.ts +0 -60
  199. package/dist/tools/export-context.d.ts.map +0 -1
  200. package/dist/tools/export-context.js +0 -179
  201. package/dist/tools/export-context.js.map +0 -1
  202. package/dist/tools/llm-status.d.ts +0 -45
  203. package/dist/tools/llm-status.d.ts.map +0 -1
  204. package/dist/tools/llm-status.js +0 -93
  205. package/dist/tools/llm-status.js.map +0 -1
  206. package/dist/tools/muse-context.d.ts +0 -195
  207. package/dist/tools/muse-context.d.ts.map +0 -1
  208. package/dist/tools/muse-context.js +0 -284
  209. package/dist/tools/muse-context.js.map +0 -1
  210. package/dist/tools/preemption-feed.d.ts +0 -55
  211. package/dist/tools/preemption-feed.d.ts.map +0 -1
  212. package/dist/tools/preemption-feed.js +0 -124
  213. package/dist/tools/preemption-feed.js.map +0 -1
  214. package/dist/tools/project-health.d.ts +0 -53
  215. package/dist/tools/project-health.d.ts.map +0 -1
  216. package/dist/tools/project-health.js +0 -122
  217. package/dist/tools/project-health.js.map +0 -1
  218. package/dist/tools/record-agent-feedback.d.ts +0 -46
  219. package/dist/tools/record-agent-feedback.d.ts.map +0 -1
  220. package/dist/tools/record-agent-feedback.js +0 -71
  221. package/dist/tools/record-agent-feedback.js.map +0 -1
  222. package/dist/tools/reverse-mentions.d.ts +0 -38
  223. package/dist/tools/reverse-mentions.d.ts.map +0 -1
  224. package/dist/tools/reverse-mentions.js +0 -75
  225. package/dist/tools/reverse-mentions.js.map +0 -1
  226. package/dist/tools/score-autopsy.d.ts +0 -93
  227. package/dist/tools/score-autopsy.d.ts.map +0 -1
  228. package/dist/tools/score-autopsy.js +0 -295
  229. package/dist/tools/score-autopsy.js.map +0 -1
  230. package/dist/tools/semantic-shifts.d.ts +0 -53
  231. package/dist/tools/semantic-shifts.d.ts.map +0 -1
  232. package/dist/tools/semantic-shifts.js +0 -74
  233. package/dist/tools/semantic-shifts.js.map +0 -1
  234. package/dist/tools/signal-chains.d.ts +0 -52
  235. package/dist/tools/signal-chains.d.ts.map +0 -1
  236. package/dist/tools/signal-chains.js +0 -63
  237. package/dist/tools/signal-chains.js.map +0 -1
  238. package/dist/tools/source-health.d.ts +0 -64
  239. package/dist/tools/source-health.d.ts.map +0 -1
  240. package/dist/tools/source-health.js +0 -205
  241. package/dist/tools/source-health.js.map +0 -1
  242. package/dist/tools/tech-radar.d.ts +0 -38
  243. package/dist/tools/tech-radar.d.ts.map +0 -1
  244. package/dist/tools/tech-radar.js +0 -249
  245. package/dist/tools/tech-radar.js.map +0 -1
  246. package/dist/tools/topic-connections.d.ts +0 -112
  247. package/dist/tools/topic-connections.d.ts.map +0 -1
  248. package/dist/tools/topic-connections.js +0 -319
  249. package/dist/tools/topic-connections.js.map +0 -1
  250. package/dist/tools/trend-analysis.d.ts +0 -105
  251. package/dist/tools/trend-analysis.d.ts.map +0 -1
  252. package/dist/tools/trend-analysis.js +0 -296
  253. package/dist/tools/trend-analysis.js.map +0 -1
  254. package/dist/tools/trust-summary.d.ts +0 -38
  255. package/dist/tools/trust-summary.d.ts.map +0 -1
  256. package/dist/tools/trust-summary.js +0 -89
  257. package/dist/tools/trust-summary.js.map +0 -1
@@ -1,294 +0,0 @@
1
- // SPDX-License-Identifier: FSL-1.1-Apache-2.0
2
- /**
3
- * Daily Briefing Tool
4
- *
5
- * Generate an executive summary of 4DA's discoveries.
6
- * This is a SUPERPOWER - it synthesizes noise into actionable intelligence.
7
- *
8
- * With synthesize=true, uses LLM to generate genuine insights.
9
- */
10
- import { getLLMConfig, canSynthesize, synthesize, SYNTHESIS_PROMPTS } from "../llm.js";
11
- import { createDailyBriefingCompact } from "../output-manager.js";
12
- export const dailyBriefingTool = {
13
- name: "daily_briefing",
14
- description: `Generate an executive briefing from 4DA's recent discoveries.
15
-
16
- With synthesize=true (recommended), uses AI to generate genuine insights tailored to your context.
17
-
18
- Returns:
19
- - TL;DR summary (AI-generated when synthesize=true)
20
- - Key themes with item counts
21
- - Notable high-scoring items
22
- - Actionable recommendations
23
- - Trend highlights
24
- - AI synthesis (when enabled)
25
-
26
- Use this for your daily/weekly content review.`,
27
- inputSchema: {
28
- type: "object",
29
- properties: {
30
- hours: {
31
- type: "number",
32
- description: "Hours to look back (default: 24)",
33
- },
34
- min_score: {
35
- type: "number",
36
- description: "Minimum relevance score (default: 0.5)",
37
- },
38
- max_items: {
39
- type: "number",
40
- description: "Maximum items to analyze (default: 50)",
41
- },
42
- format: {
43
- type: "string",
44
- enum: ["full", "brief", "actionable"],
45
- description: "Output format (default: full)",
46
- },
47
- synthesize: {
48
- type: "boolean",
49
- description: "Use AI to generate genuine insights (default: true if LLM configured)",
50
- },
51
- compact: {
52
- type: "boolean",
53
- description: "Return compact result with file reference (default: true for ~80% token reduction)",
54
- },
55
- },
56
- },
57
- };
58
- export async function executeDailyBriefing(db, params) {
59
- const useCompact = params.compact !== false; // Default to compact=true
60
- const { hours = 24, min_score = 0.5, max_items = 50, format = "full" } = params;
61
- // Check LLM availability
62
- const dbInstance = db.db;
63
- const llmConfig = getLLMConfig(dbInstance);
64
- const shouldSynthesize = params.synthesize ?? canSynthesize(llmConfig);
65
- // Get relevant items
66
- const items = db.getRelevantContent(min_score, undefined, max_items, hours);
67
- const context = db.getUserContext(true, true);
68
- // Calculate basic stats
69
- const avgScore = items.length > 0
70
- ? items.reduce((sum, i) => sum + i.relevance_score, 0) / items.length
71
- : 0;
72
- // Extract themes
73
- const themes = extractThemes(items, context);
74
- // Identify notable items
75
- const notableItems = items
76
- .filter(i => i.relevance_score >= 0.7)
77
- .slice(0, 5)
78
- .map(i => ({
79
- id: i.id,
80
- title: i.title,
81
- url: i.url,
82
- source: i.source_type,
83
- score: i.relevance_score,
84
- why_notable: i.relevance_score >= 0.85
85
- ? "Exceptionally high relevance"
86
- : "Strong match to your interests",
87
- }));
88
- // Generate recommendations
89
- const recommendations = generateRecommendations(themes, items, context);
90
- // Get trends (simplified)
91
- const trends = {
92
- rising: themes
93
- .filter(t => t.item_count >= 3)
94
- .slice(0, 3)
95
- .map(t => t.name),
96
- falling: [],
97
- };
98
- // Generate TL;DR
99
- const tldr = generateTldr(items.length, themes, avgScore, notableItems.length);
100
- const endDate = new Date();
101
- const startDate = new Date(endDate.getTime() - hours * 60 * 60 * 1000);
102
- const result = {
103
- period: {
104
- start: startDate.toISOString(),
105
- end: endDate.toISOString(),
106
- hours,
107
- },
108
- summary: {
109
- total_items_analyzed: items.length,
110
- high_relevance_count: items.filter(i => i.relevance_score >= 0.7).length,
111
- avg_score: Math.round(avgScore * 100) / 100,
112
- tldr,
113
- },
114
- themes: format === "brief" ? themes.slice(0, 3) : themes,
115
- notable_items: notableItems,
116
- recommendations: format === "actionable" ? recommendations : recommendations.slice(0, 3),
117
- trends,
118
- };
119
- // AI Synthesis - the actual superpower
120
- if (shouldSynthesize && canSynthesize(llmConfig)) {
121
- try {
122
- const briefingData = {
123
- period: result.period,
124
- summary: result.summary,
125
- themes: result.themes.slice(0, 5),
126
- notable_items: result.notable_items,
127
- trends: result.trends,
128
- };
129
- const contextData = {
130
- interests: context.interests.slice(0, 10),
131
- tech_stack: context.tech_stack,
132
- role: context.role,
133
- };
134
- const synthesis = await synthesize(llmConfig, {
135
- system: SYNTHESIS_PROMPTS.dailyBriefing.system,
136
- prompt: SYNTHESIS_PROMPTS.dailyBriefing.buildPrompt(briefingData, contextData),
137
- max_tokens: 400,
138
- complexity: SYNTHESIS_PROMPTS.dailyBriefing.complexity,
139
- });
140
- // Parse the synthesis into structured output
141
- const lines = synthesis.synthesis.split("\n").filter(l => l.trim());
142
- const keyInsight = lines[0] || "";
143
- const actionItem = lines.find(l => l.toLowerCase().includes("action") || l.toLowerCase().includes("should")) || lines[1] || "";
144
- result.ai_synthesis = {
145
- executive_brief: synthesis.synthesis,
146
- key_insight: keyInsight,
147
- action_item: actionItem,
148
- model_used: synthesis.model_used,
149
- };
150
- }
151
- catch (error) {
152
- // Synthesis failed - continue without it
153
- console.error("AI synthesis failed:", error);
154
- }
155
- }
156
- // Return compact or full result based on parameter
157
- if (useCompact) {
158
- return createDailyBriefingCompact(result);
159
- }
160
- return result;
161
- }
162
- // Word-boundary matching prevents "ai" matching "obtain", "git" matching "digital", etc.
163
- function hasWordBoundary(text, term) {
164
- let searchFrom = 0;
165
- while (true) {
166
- const pos = text.indexOf(term, searchFrom);
167
- if (pos === -1)
168
- return false;
169
- const beforeOk = pos === 0 || !/[a-zA-Z0-9]/.test(text[pos - 1]);
170
- const afterIdx = pos + term.length;
171
- const afterOk = afterIdx >= text.length || !/[a-zA-Z0-9]/.test(text[afterIdx]);
172
- if (beforeOk && afterOk)
173
- return true;
174
- searchFrom = pos + 1;
175
- }
176
- }
177
- function extractThemes(items, context) {
178
- // Define theme patterns
179
- const themePatterns = [
180
- { name: "AI & Machine Learning", keywords: ["ai", "llm", "gpt", "claude", "machine learning", "neural", "embedding"] },
181
- { name: "Rust Ecosystem", keywords: ["rust", "cargo", "tokio", "async", "wasm"] },
182
- { name: "TypeScript & Frontend", keywords: ["typescript", "javascript", "react", "vue", "frontend"] },
183
- { name: "Databases & Storage", keywords: ["database", "sql", "sqlite", "postgres", "redis", "storage"] },
184
- { name: "Security", keywords: ["security", "vulnerability", "auth", "encryption", "cve"] },
185
- { name: "Infrastructure", keywords: ["docker", "kubernetes", "cloud", "aws", "devops"] },
186
- { name: "Developer Tools", keywords: ["ide", "editor", "cli", "terminal", "git", "testing"] },
187
- ];
188
- // Pre-compute lowercased text for each item ONCE
189
- const itemsWithText = items.map(item => ({
190
- ...item,
191
- textLower: (item.title + " " + item.content).toLowerCase(),
192
- }));
193
- const themes = [];
194
- for (const pattern of themePatterns) {
195
- const matchingItems = itemsWithText.filter(item => pattern.keywords.some(kw => hasWordBoundary(item.textLower, kw)));
196
- if (matchingItems.length > 0) {
197
- const avgScore = matchingItems.reduce((sum, i) => sum + i.relevance_score, 0) / matchingItems.length;
198
- themes.push({
199
- name: pattern.name,
200
- item_count: matchingItems.length,
201
- avg_score: Math.round(avgScore * 100) / 100,
202
- top_items: matchingItems
203
- .sort((a, b) => b.relevance_score - a.relevance_score)
204
- .slice(0, 3)
205
- .map(i => ({
206
- title: i.title,
207
- score: i.relevance_score,
208
- url: i.url,
209
- })),
210
- insight: generateThemeInsight(pattern.name, matchingItems.length, avgScore),
211
- });
212
- }
213
- }
214
- return themes.sort((a, b) => b.avg_score - a.avg_score);
215
- }
216
- function generateThemeInsight(name, count, avgScore) {
217
- if (count >= 5 && avgScore >= 0.7) {
218
- return `Strong activity in ${name} - this is clearly relevant to your work`;
219
- }
220
- else if (count >= 3) {
221
- return `Moderate activity in ${name} - worth keeping an eye on`;
222
- }
223
- else {
224
- return `Some mentions of ${name} - peripheral to your main focus`;
225
- }
226
- }
227
- function generateRecommendations(themes, items, context) {
228
- const recommendations = [];
229
- // High relevance items exist
230
- const highRelevance = items.filter(i => i.relevance_score >= 0.8);
231
- if (highRelevance.length > 0) {
232
- recommendations.push({
233
- priority: "high",
234
- action: `Review the ${highRelevance.length} high-relevance items`,
235
- reasoning: "These items scored >80% relevance and directly match your interests",
236
- });
237
- }
238
- // Strong theme detected
239
- const topTheme = themes[0];
240
- if (topTheme && topTheme.item_count >= 5) {
241
- recommendations.push({
242
- priority: "medium",
243
- action: `Deep dive into "${topTheme.name}" content`,
244
- reasoning: `${topTheme.item_count} items cluster around this theme with avg ${Math.round(topTheme.avg_score * 100)}% relevance`,
245
- });
246
- }
247
- // Low overall volume
248
- if (items.length < 5) {
249
- recommendations.push({
250
- priority: "low",
251
- action: "Check source connectivity",
252
- reasoning: "Low item count may indicate source fetch issues",
253
- });
254
- }
255
- // Add generic recommendation if empty
256
- if (recommendations.length === 0) {
257
- recommendations.push({
258
- priority: "low",
259
- action: "Continue monitoring - no urgent actions needed",
260
- reasoning: "Content flow is normal with no standout items",
261
- });
262
- }
263
- return recommendations;
264
- }
265
- function generateTldr(totalItems, themes, avgScore, notableCount) {
266
- const parts = [];
267
- // Volume
268
- if (totalItems > 20) {
269
- parts.push(`Busy period with ${totalItems} relevant items.`);
270
- }
271
- else if (totalItems > 5) {
272
- parts.push(`Moderate activity with ${totalItems} relevant items.`);
273
- }
274
- else {
275
- parts.push(`Quiet period with only ${totalItems} relevant items.`);
276
- }
277
- // Top theme
278
- if (themes.length > 0) {
279
- parts.push(`Top theme: ${themes[0].name} (${themes[0].item_count} items).`);
280
- }
281
- // Notable items
282
- if (notableCount > 0) {
283
- parts.push(`${notableCount} items scored exceptionally high - review recommended.`);
284
- }
285
- // Quality
286
- if (avgScore >= 0.7) {
287
- parts.push("Quality is high - good signal-to-noise ratio.");
288
- }
289
- else if (avgScore >= 0.5) {
290
- parts.push("Decent relevance overall.");
291
- }
292
- return parts.join(" ");
293
- }
294
- //# sourceMappingURL=daily-briefing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daily-briefing.js","sourceRoot":"","sources":["../../src/tools/daily-briefing.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- /**
2
- * decision_windows tool
3
- *
4
- * View and manage decision windows — time-bounded opportunities
5
- * detected from content intelligence requiring attention.
6
- */
7
- import type { FourDADatabase } from "../db.js";
8
- export interface DecisionWindowsParams {
9
- action?: string;
10
- window_id?: number;
11
- outcome?: string;
12
- }
13
- export declare const decisionWindowsTool: {
14
- name: string;
15
- description: string;
16
- inputSchema: {
17
- type: "object";
18
- properties: {
19
- action: {
20
- type: string;
21
- enum: string[];
22
- description: string;
23
- default: string;
24
- };
25
- window_id: {
26
- type: string;
27
- description: string;
28
- };
29
- outcome: {
30
- type: string;
31
- description: string;
32
- };
33
- };
34
- };
35
- };
36
- export declare function executeDecisionWindows(db: FourDADatabase, params: DecisionWindowsParams): object;
37
- //# sourceMappingURL=decision-windows.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decision-windows.d.ts","sourceRoot":"","sources":["../../src/tools/decision-windows.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiBD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;CAuB/B,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,qBAAqB,GAAG,MAAM,CA8ChG"}
@@ -1,67 +0,0 @@
1
- export const decisionWindowsTool = {
2
- name: "decision_windows",
3
- description: "View and manage decision windows — time-bounded opportunities detected from content intelligence. List open windows, mark as acted on, or close.",
4
- inputSchema: {
5
- type: "object",
6
- properties: {
7
- action: {
8
- type: "string",
9
- enum: ["list", "act", "close"],
10
- description: "Action to perform. Default: list",
11
- default: "list",
12
- },
13
- window_id: {
14
- type: "number",
15
- description: "Window ID (required for 'act' or 'close' actions)",
16
- },
17
- outcome: {
18
- type: "string",
19
- description: "Outcome description when acting on a window",
20
- },
21
- },
22
- },
23
- };
24
- export function executeDecisionWindows(db, params) {
25
- const rawDb = db.getRawDb();
26
- const action = params.action ?? "list";
27
- if (action === "act") {
28
- if (!params.window_id)
29
- return { error: "window_id is required for 'act' action" };
30
- try {
31
- rawDb.prepare(`UPDATE decision_windows SET status = 'acted', acted_at = datetime('now'), outcome = ? WHERE id = ?`).run(params.outcome ?? null, params.window_id);
32
- }
33
- catch (err) {
34
- return { error: `Failed to act on window: ${err instanceof Error ? err.message : String(err)}` };
35
- }
36
- }
37
- else if (action === "close") {
38
- if (!params.window_id)
39
- return { error: "window_id is required for 'close' action" };
40
- try {
41
- rawDb.prepare(`UPDATE decision_windows SET status = 'closed', closed_at = datetime('now') WHERE id = ?`).run(params.window_id);
42
- }
43
- catch (err) {
44
- return { error: `Failed to close window: ${err instanceof Error ? err.message : String(err)}` };
45
- }
46
- }
47
- // Always return open windows after any action
48
- let openWindows = [];
49
- try {
50
- openWindows = rawDb.prepare(`SELECT id, title, description, urgency, source_item_id, status,
51
- opens_at, closes_at, acted_at, closed_at, outcome, created_at
52
- FROM decision_windows WHERE status = 'open'
53
- ORDER BY urgency DESC, created_at DESC`).all();
54
- }
55
- catch { /* Table may not exist yet */ }
56
- const actionMsg = action === "act" ? `Window ${params.window_id} marked as acted`
57
- : action === "close" ? `Window ${params.window_id} closed` : null;
58
- return {
59
- ...(actionMsg ? { action_result: actionMsg } : {}),
60
- open_windows: openWindows,
61
- count: openWindows.length,
62
- summary: openWindows.length === 0
63
- ? "No open decision windows. The system will surface time-sensitive opportunities as they are detected."
64
- : `${openWindows.length} open decision window${openWindows.length !== 1 ? "s" : ""} requiring attention`,
65
- };
66
- }
67
- //# sourceMappingURL=decision-windows.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decision-windows.js","sourceRoot":"","sources":["../../src/tools/decision-windows.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- /**
2
- * delegation_score tool
3
- *
4
- * AI-delegatability assessment. AI agents use this to self-assess:
5
- * "Should I proceed autonomously or ask the human?"
6
- *
7
- * Computes a composite score from pattern stability, security sensitivity,
8
- * decision density, and AI track record to produce a delegation recommendation.
9
- */
10
- import type { FourDADatabase } from "../db.js";
11
- export interface DelegationScoreParams {
12
- subject: string;
13
- task_description?: string;
14
- }
15
- export declare const delegationScoreTool: {
16
- name: string;
17
- description: string;
18
- inputSchema: {
19
- type: "object";
20
- properties: {
21
- subject: {
22
- type: string;
23
- description: string;
24
- };
25
- task_description: {
26
- type: string;
27
- description: string;
28
- };
29
- };
30
- required: string[];
31
- };
32
- };
33
- export declare function executeDelegationScore(db: FourDADatabase, params: DelegationScoreParams): object;
34
- //# sourceMappingURL=delegation-score.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegation-score.d.ts","sourceRoot":"","sources":["../../src/tools/delegation-score.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM/C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAkCD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;CAoB/B,CAAC;AAiLF,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,qBAAqB,GAC5B,MAAM,CA0FR"}