@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.
- package/README.md +61 -81
- package/dist/db.d.ts +12 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +71 -8
- package/dist/db.js.map +1 -1
- package/dist/index.d.ts +9 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -17
- package/dist/index.js.map +1 -1
- package/dist/schema-registry.d.ts +4 -2
- package/dist/schema-registry.d.ts.map +1 -1
- package/dist/schema-registry.js +55 -235
- package/dist/schema-registry.js.map +1 -1
- package/dist/tool-dispatch.d.ts +1 -7
- package/dist/tool-dispatch.d.ts.map +1 -1
- package/dist/tool-dispatch.js +14 -48
- package/dist/tool-dispatch.js.map +1 -1
- package/dist/tools/index.d.ts +13 -42
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +18 -54
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/what-should-i-know.d.ts +4 -12
- package/dist/tools/what-should-i-know.d.ts.map +1 -1
- package/dist/tools/what-should-i-know.js +11 -102
- package/dist/tools/what-should-i-know.js.map +1 -1
- package/package.json +2 -2
- package/dist/schemas/agent-feedback-stats.json +0 -14
- package/dist/schemas/agent-session-brief.json +0 -25
- package/dist/schemas/attention-report.json +0 -13
- package/dist/schemas/autophagy-status.json +0 -13
- package/dist/schemas/compound-advantage.json +0 -14
- package/dist/schemas/config-validator.json +0 -18
- package/dist/schemas/context-analysis.json +0 -25
- package/dist/schemas/daily-briefing.json +0 -34
- package/dist/schemas/decision-windows.json +0 -22
- package/dist/schemas/delegation-score.json +0 -18
- package/dist/schemas/explain-relevance.json +0 -19
- package/dist/schemas/export-context.json +0 -17
- package/dist/schemas/llm-status.json +0 -13
- package/dist/schemas/preemption-feed.json +0 -18
- package/dist/schemas/project-health.json +0 -13
- package/dist/schemas/record-agent-feedback.json +0 -28
- package/dist/schemas/reverse-mentions.json +0 -13
- package/dist/schemas/score-autopsy.json +0 -30
- package/dist/schemas/semantic-shifts.json +0 -17
- package/dist/schemas/signal-chains.json +0 -19
- package/dist/schemas/source-health.json +0 -17
- package/dist/schemas/tech-radar.json +0 -23
- package/dist/schemas/topic-connections.json +0 -34
- package/dist/schemas/trend-analysis.json +0 -29
- package/dist/schemas/trust-summary.json +0 -13
- package/dist/tools/agent-feedback-stats.d.ts +0 -30
- package/dist/tools/agent-feedback-stats.d.ts.map +0 -1
- package/dist/tools/agent-feedback-stats.js +0 -41
- package/dist/tools/agent-feedback-stats.js.map +0 -1
- package/dist/tools/agent-session-brief.d.ts +0 -44
- package/dist/tools/agent-session-brief.d.ts.map +0 -1
- package/dist/tools/agent-session-brief.js +0 -179
- package/dist/tools/agent-session-brief.js.map +0 -1
- package/dist/tools/attention-report.d.ts +0 -40
- package/dist/tools/attention-report.d.ts.map +0 -1
- package/dist/tools/attention-report.js +0 -73
- package/dist/tools/attention-report.js.map +0 -1
- package/dist/tools/autophagy-status.d.ts +0 -25
- package/dist/tools/autophagy-status.d.ts.map +0 -1
- package/dist/tools/autophagy-status.js +0 -56
- package/dist/tools/autophagy-status.js.map +0 -1
- package/dist/tools/compound-advantage.d.ts +0 -30
- package/dist/tools/compound-advantage.d.ts.map +0 -1
- package/dist/tools/compound-advantage.js +0 -133
- package/dist/tools/compound-advantage.js.map +0 -1
- package/dist/tools/config-validator.d.ts +0 -59
- package/dist/tools/config-validator.d.ts.map +0 -1
- package/dist/tools/config-validator.js +0 -417
- package/dist/tools/config-validator.js.map +0 -1
- package/dist/tools/context-analysis.d.ts +0 -108
- package/dist/tools/context-analysis.d.ts.map +0 -1
- package/dist/tools/context-analysis.js +0 -301
- package/dist/tools/context-analysis.js.map +0 -1
- package/dist/tools/daily-briefing.d.ts +0 -103
- package/dist/tools/daily-briefing.d.ts.map +0 -1
- package/dist/tools/daily-briefing.js +0 -294
- package/dist/tools/daily-briefing.js.map +0 -1
- package/dist/tools/decision-windows.d.ts +0 -37
- package/dist/tools/decision-windows.d.ts.map +0 -1
- package/dist/tools/decision-windows.js +0 -67
- package/dist/tools/decision-windows.js.map +0 -1
- package/dist/tools/delegation-score.d.ts +0 -34
- package/dist/tools/delegation-score.d.ts.map +0 -1
- package/dist/tools/delegation-score.js +0 -260
- package/dist/tools/delegation-score.js.map +0 -1
- package/dist/tools/explain-relevance.d.ts +0 -36
- package/dist/tools/explain-relevance.d.ts.map +0 -1
- package/dist/tools/explain-relevance.js +0 -51
- package/dist/tools/explain-relevance.js.map +0 -1
- package/dist/tools/export-context.d.ts +0 -60
- package/dist/tools/export-context.d.ts.map +0 -1
- package/dist/tools/export-context.js +0 -179
- package/dist/tools/export-context.js.map +0 -1
- package/dist/tools/llm-status.d.ts +0 -45
- package/dist/tools/llm-status.d.ts.map +0 -1
- package/dist/tools/llm-status.js +0 -93
- package/dist/tools/llm-status.js.map +0 -1
- package/dist/tools/muse-context.d.ts +0 -195
- package/dist/tools/muse-context.d.ts.map +0 -1
- package/dist/tools/muse-context.js +0 -284
- package/dist/tools/muse-context.js.map +0 -1
- package/dist/tools/preemption-feed.d.ts +0 -55
- package/dist/tools/preemption-feed.d.ts.map +0 -1
- package/dist/tools/preemption-feed.js +0 -124
- package/dist/tools/preemption-feed.js.map +0 -1
- package/dist/tools/project-health.d.ts +0 -53
- package/dist/tools/project-health.d.ts.map +0 -1
- package/dist/tools/project-health.js +0 -122
- package/dist/tools/project-health.js.map +0 -1
- package/dist/tools/record-agent-feedback.d.ts +0 -46
- package/dist/tools/record-agent-feedback.d.ts.map +0 -1
- package/dist/tools/record-agent-feedback.js +0 -71
- package/dist/tools/record-agent-feedback.js.map +0 -1
- package/dist/tools/reverse-mentions.d.ts +0 -38
- package/dist/tools/reverse-mentions.d.ts.map +0 -1
- package/dist/tools/reverse-mentions.js +0 -75
- package/dist/tools/reverse-mentions.js.map +0 -1
- package/dist/tools/score-autopsy.d.ts +0 -93
- package/dist/tools/score-autopsy.d.ts.map +0 -1
- package/dist/tools/score-autopsy.js +0 -295
- package/dist/tools/score-autopsy.js.map +0 -1
- package/dist/tools/semantic-shifts.d.ts +0 -53
- package/dist/tools/semantic-shifts.d.ts.map +0 -1
- package/dist/tools/semantic-shifts.js +0 -74
- package/dist/tools/semantic-shifts.js.map +0 -1
- package/dist/tools/signal-chains.d.ts +0 -52
- package/dist/tools/signal-chains.d.ts.map +0 -1
- package/dist/tools/signal-chains.js +0 -63
- package/dist/tools/signal-chains.js.map +0 -1
- package/dist/tools/source-health.d.ts +0 -64
- package/dist/tools/source-health.d.ts.map +0 -1
- package/dist/tools/source-health.js +0 -205
- package/dist/tools/source-health.js.map +0 -1
- package/dist/tools/tech-radar.d.ts +0 -38
- package/dist/tools/tech-radar.d.ts.map +0 -1
- package/dist/tools/tech-radar.js +0 -249
- package/dist/tools/tech-radar.js.map +0 -1
- package/dist/tools/topic-connections.d.ts +0 -112
- package/dist/tools/topic-connections.d.ts.map +0 -1
- package/dist/tools/topic-connections.js +0 -319
- package/dist/tools/topic-connections.js.map +0 -1
- package/dist/tools/trend-analysis.d.ts +0 -105
- package/dist/tools/trend-analysis.d.ts.map +0 -1
- package/dist/tools/trend-analysis.js +0 -296
- package/dist/tools/trend-analysis.js.map +0 -1
- package/dist/tools/trust-summary.d.ts +0 -38
- package/dist/tools/trust-summary.d.ts.map +0 -1
- package/dist/tools/trust-summary.js +0 -89
- 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":"AA8BA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,kJAAkJ;IACpJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;gBAC9B,WAAW,EAAE,kCAAkC;gBAC/C,OAAO,EAAE,MAAM;aAChB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;aACjE;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6CAA6C;aAC3D;SACF;KACF;CACF,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,EAAkB,EAAE,MAA6B;IACtF,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;IAEvC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;QAClF,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CACX,oGAAoG,CACrG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACnG,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;QACpF,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CACX,yFAAyF,CAC1F,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAClG,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,WAAW,GAAgB,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,WAAW,GAAG,KAAK,CAAC,OAAO,CACzB;;;8CAGwC,CACzC,CAAC,GAAG,EAAiB,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,SAAS,kBAAkB;QAC/E,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpE,OAAO;QACL,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,YAAY,EAAE,WAAW;QACzB,KAAK,EAAE,WAAW,CAAC,MAAM;QACzB,OAAO,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;YAC/B,CAAC,CAAC,sGAAsG;YACxG,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,wBAAwB,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,sBAAsB;KAC3G,CAAC;AACJ,CAAC"}
|
|
@@ -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"}
|