@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,260 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: FSL-1.1-Apache-2.0
|
|
2
|
-
/**
|
|
3
|
-
* delegation_score tool
|
|
4
|
-
*
|
|
5
|
-
* AI-delegatability assessment. AI agents use this to self-assess:
|
|
6
|
-
* "Should I proceed autonomously or ask the human?"
|
|
7
|
-
*
|
|
8
|
-
* Computes a composite score from pattern stability, security sensitivity,
|
|
9
|
-
* decision density, and AI track record to produce a delegation recommendation.
|
|
10
|
-
*/
|
|
11
|
-
// ============================================================================
|
|
12
|
-
// Tool Definition
|
|
13
|
-
// ============================================================================
|
|
14
|
-
export const delegationScoreTool = {
|
|
15
|
-
name: "delegation_score",
|
|
16
|
-
description: "AI-delegatability assessment. Computes whether an AI agent should proceed autonomously, request review, collaborate in real-time, or defer to the human. Based on pattern stability, security sensitivity, decision density, and AI track record.",
|
|
17
|
-
inputSchema: {
|
|
18
|
-
type: "object",
|
|
19
|
-
properties: {
|
|
20
|
-
subject: {
|
|
21
|
-
type: "string",
|
|
22
|
-
description: "The technology, pattern, or topic to assess for delegation",
|
|
23
|
-
},
|
|
24
|
-
task_description: {
|
|
25
|
-
type: "string",
|
|
26
|
-
description: "Optional description of the task being considered for delegation",
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
required: ["subject"],
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
// ============================================================================
|
|
33
|
-
// Factor Computation
|
|
34
|
-
// ============================================================================
|
|
35
|
-
function computePatternStability(rawDb, subject) {
|
|
36
|
-
const subjectLower = subject.toLowerCase();
|
|
37
|
-
const pattern = `%${subjectLower}%`;
|
|
38
|
-
// Check tech_stack (highest confidence: user explicitly declared this)
|
|
39
|
-
try {
|
|
40
|
-
const techRows = rawDb
|
|
41
|
-
.prepare(`SELECT technology FROM tech_stack WHERE LOWER(technology) LIKE ?`)
|
|
42
|
-
.all(pattern);
|
|
43
|
-
if (techRows.length > 0) {
|
|
44
|
-
return { score: 0.9, reason: `Found in tech stack: ${techRows[0].technology}` };
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
// Table may not exist
|
|
49
|
-
}
|
|
50
|
-
// Check project_dependencies (good confidence: detected in projects)
|
|
51
|
-
try {
|
|
52
|
-
const depRows = rawDb
|
|
53
|
-
.prepare(`SELECT package_name FROM project_dependencies WHERE LOWER(package_name) LIKE ?`)
|
|
54
|
-
.all(pattern);
|
|
55
|
-
if (depRows.length > 0) {
|
|
56
|
-
return { score: 0.7, reason: `Found in project dependencies: ${depRows[0].package_name}` };
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
// Table may not exist
|
|
61
|
-
}
|
|
62
|
-
// Check detected_tech (moderate confidence: auto-detected)
|
|
63
|
-
try {
|
|
64
|
-
const dtRows = rawDb
|
|
65
|
-
.prepare(`SELECT name FROM detected_tech WHERE LOWER(name) LIKE ?`)
|
|
66
|
-
.all(pattern);
|
|
67
|
-
if (dtRows.length > 0) {
|
|
68
|
-
return { score: 0.4, reason: `Auto-detected tech: ${dtRows[0].name}` };
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
catch {
|
|
72
|
-
// Table may not exist
|
|
73
|
-
}
|
|
74
|
-
// Check if subject was explicitly rejected in any decision
|
|
75
|
-
try {
|
|
76
|
-
const decisions = rawDb
|
|
77
|
-
.prepare(`SELECT id, alternatives_rejected FROM developer_decisions
|
|
78
|
-
WHERE status = 'active'
|
|
79
|
-
AND LOWER(alternatives_rejected) LIKE ?`)
|
|
80
|
-
.all(pattern);
|
|
81
|
-
if (decisions.length > 0) {
|
|
82
|
-
return { score: 0.1, reason: `Subject was rejected in decision #${decisions[0].id}` };
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
// Table may not exist
|
|
87
|
-
}
|
|
88
|
-
return { score: 0.5, reason: "No prior pattern data found" };
|
|
89
|
-
}
|
|
90
|
-
function computeSecuritySensitivity(rawDb, subject) {
|
|
91
|
-
const pattern = `%${subject.toLowerCase()}%`;
|
|
92
|
-
try {
|
|
93
|
-
// Count security-related source items for this subject in last 90 days
|
|
94
|
-
const sinceDate = new Date(Date.now() - 90 * 24 * 60 * 60 * 1000).toISOString();
|
|
95
|
-
const rows = rawDb
|
|
96
|
-
.prepare(`SELECT COUNT(*) as cnt FROM source_items
|
|
97
|
-
WHERE created_at > ?
|
|
98
|
-
AND LOWER(title) LIKE ?
|
|
99
|
-
AND (
|
|
100
|
-
LOWER(title) LIKE '%security%'
|
|
101
|
-
OR LOWER(title) LIKE '%vulnerability%'
|
|
102
|
-
OR LOWER(title) LIKE '%cve%'
|
|
103
|
-
OR LOWER(title) LIKE '%exploit%'
|
|
104
|
-
OR LOWER(title) LIKE '%advisory%'
|
|
105
|
-
)`)
|
|
106
|
-
.get(sinceDate, pattern);
|
|
107
|
-
const count = rows?.cnt || 0;
|
|
108
|
-
if (count === 0) {
|
|
109
|
-
return { score: 0.1, reason: "No security signals in last 90 days" };
|
|
110
|
-
}
|
|
111
|
-
else if (count <= 2) {
|
|
112
|
-
return { score: 0.5, reason: `${count} security signal(s) in last 90 days` };
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
return { score: 0.9, reason: `${count} security signals in last 90 days — high sensitivity` };
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
return { score: 0.3, reason: "Unable to assess security signals" };
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
function computeDecisionDensity(rawDb, subject) {
|
|
123
|
-
const pattern = `%${subject.toLowerCase()}%`;
|
|
124
|
-
try {
|
|
125
|
-
const rows = rawDb
|
|
126
|
-
.prepare(`SELECT COUNT(*) as cnt FROM developer_decisions
|
|
127
|
-
WHERE status = 'active'
|
|
128
|
-
AND (LOWER(subject) LIKE ? OR LOWER(context_tags) LIKE ?)`)
|
|
129
|
-
.get(pattern, pattern);
|
|
130
|
-
const count = rows?.cnt || 0;
|
|
131
|
-
if (count === 0) {
|
|
132
|
-
return { score: 0.1, reason: "No active decisions for this subject" };
|
|
133
|
-
}
|
|
134
|
-
else if (count === 1) {
|
|
135
|
-
return { score: 0.3, reason: "1 active decision — some constraints exist" };
|
|
136
|
-
}
|
|
137
|
-
else if (count <= 3) {
|
|
138
|
-
return { score: 0.6, reason: `${count} active decisions — moderate constraint density` };
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
return { score: 0.9, reason: `${count} active decisions — heavily constrained area` };
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
catch {
|
|
145
|
-
return { score: 0.3, reason: "Unable to assess decision density" };
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
function computeAITrackRecord(rawDb, subject) {
|
|
149
|
-
const pattern = `%${subject.toLowerCase()}%`;
|
|
150
|
-
try {
|
|
151
|
-
const rows = rawDb
|
|
152
|
-
.prepare(`SELECT COUNT(*) as cnt FROM agent_memory
|
|
153
|
-
WHERE memory_type = 'warning'
|
|
154
|
-
AND (LOWER(subject) LIKE ? OR LOWER(content) LIKE ?)`)
|
|
155
|
-
.get(pattern, pattern);
|
|
156
|
-
const warningCount = rows?.cnt || 0;
|
|
157
|
-
if (warningCount === 0) {
|
|
158
|
-
return { score: 0.9, reason: "No prior warnings — clean track record" };
|
|
159
|
-
}
|
|
160
|
-
else if (warningCount === 1) {
|
|
161
|
-
return { score: 0.6, reason: "1 prior warning — proceed with caution" };
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
return { score: 0.3, reason: `${warningCount} prior warnings — needs human oversight` };
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
catch {
|
|
168
|
-
return { score: 0.7, reason: "Unable to assess track record (no memory table)" };
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
// ============================================================================
|
|
172
|
-
// Execute
|
|
173
|
-
// ============================================================================
|
|
174
|
-
export function executeDelegationScore(db, params) {
|
|
175
|
-
const rawDb = db.getRawDb();
|
|
176
|
-
const subject = params.subject;
|
|
177
|
-
if (!subject) {
|
|
178
|
-
return {
|
|
179
|
-
subject: "(none)",
|
|
180
|
-
recommendation: "collaborate_realtime",
|
|
181
|
-
confidence: 0,
|
|
182
|
-
reasoning: "No subject provided — cannot assess delegatability without knowing what to delegate.",
|
|
183
|
-
factors: {},
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
// Compute factors
|
|
187
|
-
const patternStability = computePatternStability(rawDb, subject);
|
|
188
|
-
const securitySensitivity = computeSecuritySensitivity(rawDb, subject);
|
|
189
|
-
const decisionDensity = computeDecisionDensity(rawDb, subject);
|
|
190
|
-
const aiTrackRecord = computeAITrackRecord(rawDb, subject);
|
|
191
|
-
// Composite score
|
|
192
|
-
// Higher = more delegatable
|
|
193
|
-
// pattern_stability: higher is better (known pattern)
|
|
194
|
-
// security_sensitivity: INVERT (lower security risk = more delegatable)
|
|
195
|
-
// decision_density: INVERT (fewer constraints = more delegatable)
|
|
196
|
-
// ai_track_record: higher is better (fewer warnings)
|
|
197
|
-
const composite = patternStability.score * 0.30 +
|
|
198
|
-
(1 - securitySensitivity.score) * 0.25 +
|
|
199
|
-
(1 - decisionDensity.score) * 0.25 +
|
|
200
|
-
aiTrackRecord.score * 0.20;
|
|
201
|
-
const overallScore = Math.max(0, Math.min(1, Math.round(composite * 100) / 100));
|
|
202
|
-
// Map to recommendation
|
|
203
|
-
let recommendation;
|
|
204
|
-
if (overallScore >= 0.8) {
|
|
205
|
-
recommendation = "fully_delegate";
|
|
206
|
-
}
|
|
207
|
-
else if (overallScore >= 0.5) {
|
|
208
|
-
recommendation = "delegate_with_review";
|
|
209
|
-
}
|
|
210
|
-
else if (overallScore >= 0.3) {
|
|
211
|
-
recommendation = "collaborate_realtime";
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
recommendation = "human_only";
|
|
215
|
-
}
|
|
216
|
-
// Build caveats
|
|
217
|
-
const caveats = [];
|
|
218
|
-
if (securitySensitivity.score >= 0.5) {
|
|
219
|
-
caveats.push("Security signals detected — review security implications");
|
|
220
|
-
}
|
|
221
|
-
if (decisionDensity.score >= 0.6) {
|
|
222
|
-
caveats.push("Multiple active decisions constrain this area — check alignment");
|
|
223
|
-
}
|
|
224
|
-
if (patternStability.score <= 0.3) {
|
|
225
|
-
caveats.push("Subject was previously rejected or is unfamiliar — verify approach");
|
|
226
|
-
}
|
|
227
|
-
if (aiTrackRecord.score <= 0.5) {
|
|
228
|
-
caveats.push("Prior warnings exist for this subject — exercise caution");
|
|
229
|
-
}
|
|
230
|
-
return {
|
|
231
|
-
subject,
|
|
232
|
-
task_description: params.task_description || null,
|
|
233
|
-
overall_score: overallScore,
|
|
234
|
-
factors: {
|
|
235
|
-
pattern_stability: {
|
|
236
|
-
score: patternStability.score,
|
|
237
|
-
weight: 0.30,
|
|
238
|
-
reason: patternStability.reason,
|
|
239
|
-
},
|
|
240
|
-
security_sensitivity: {
|
|
241
|
-
score: securitySensitivity.score,
|
|
242
|
-
weight: 0.25,
|
|
243
|
-
reason: securitySensitivity.reason,
|
|
244
|
-
},
|
|
245
|
-
decision_density: {
|
|
246
|
-
score: decisionDensity.score,
|
|
247
|
-
weight: 0.25,
|
|
248
|
-
reason: decisionDensity.reason,
|
|
249
|
-
},
|
|
250
|
-
ai_track_record: {
|
|
251
|
-
score: aiTrackRecord.score,
|
|
252
|
-
weight: 0.20,
|
|
253
|
-
reason: aiTrackRecord.reason,
|
|
254
|
-
},
|
|
255
|
-
},
|
|
256
|
-
recommendation,
|
|
257
|
-
caveats,
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
//# sourceMappingURL=delegation-score.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delegation-score.js","sourceRoot":"","sources":["../../src/tools/delegation-score.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* explain_relevance tool
|
|
3
|
-
*
|
|
4
|
-
* Explain why an item was considered relevant.
|
|
5
|
-
*/
|
|
6
|
-
import type { FourDADatabase } from "../db.js";
|
|
7
|
-
import type { ExplainRelevanceParams, RelevanceExplanation } from "../types.js";
|
|
8
|
-
/**
|
|
9
|
-
* Tool definition for MCP registration
|
|
10
|
-
*/
|
|
11
|
-
export declare const explainRelevanceTool: {
|
|
12
|
-
name: string;
|
|
13
|
-
description: string;
|
|
14
|
-
inputSchema: {
|
|
15
|
-
type: "object";
|
|
16
|
-
properties: {
|
|
17
|
-
item_id: {
|
|
18
|
-
type: string;
|
|
19
|
-
description: string;
|
|
20
|
-
};
|
|
21
|
-
source_type: {
|
|
22
|
-
type: string;
|
|
23
|
-
description: string;
|
|
24
|
-
enum: string[];
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
required: string[];
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Execute the explain_relevance tool
|
|
32
|
-
*/
|
|
33
|
-
export declare function executeExplainRelevance(db: FourDADatabase, params: ExplainRelevanceParams): RelevanceExplanation | {
|
|
34
|
-
error: string;
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=explain-relevance.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"explain-relevance.d.ts","sourceRoot":"","sources":["../../src/tools/explain-relevance.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;CAyBhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,sBAAsB,GAC7B,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAc1C"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: FSL-1.1-Apache-2.0
|
|
2
|
-
/**
|
|
3
|
-
* explain_relevance tool
|
|
4
|
-
*
|
|
5
|
-
* Explain why an item was considered relevant.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Tool definition for MCP registration
|
|
9
|
-
*/
|
|
10
|
-
export const explainRelevanceTool = {
|
|
11
|
-
name: "explain_relevance",
|
|
12
|
-
description: `Explain why a content item was considered relevant.
|
|
13
|
-
|
|
14
|
-
Provides a detailed breakdown of:
|
|
15
|
-
- Score components (static match, ACE context, learned preferences, penalties)
|
|
16
|
-
- Matching context elements (interests, tech, topics, affinities)
|
|
17
|
-
- Human-readable explanation
|
|
18
|
-
|
|
19
|
-
Use this to understand how 4DA scored a particular item.`,
|
|
20
|
-
inputSchema: {
|
|
21
|
-
type: "object",
|
|
22
|
-
properties: {
|
|
23
|
-
item_id: {
|
|
24
|
-
type: "number",
|
|
25
|
-
description: "The database ID of the item to explain",
|
|
26
|
-
},
|
|
27
|
-
source_type: {
|
|
28
|
-
type: "string",
|
|
29
|
-
description: 'The source type: "hackernews", "arxiv", or "reddit"',
|
|
30
|
-
enum: ["hackernews", "arxiv", "reddit"],
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
required: ["item_id", "source_type"],
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Execute the explain_relevance tool
|
|
38
|
-
*/
|
|
39
|
-
export function executeExplainRelevance(db, params) {
|
|
40
|
-
if (!params.item_id || !params.source_type) {
|
|
41
|
-
return { error: "item_id and source_type are required" };
|
|
42
|
-
}
|
|
43
|
-
const explanation = db.explainRelevance(params.item_id, params.source_type);
|
|
44
|
-
if (!explanation) {
|
|
45
|
-
return {
|
|
46
|
-
error: `Item ${params.item_id} of type ${params.source_type} not found`,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
return explanation;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=explain-relevance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"explain-relevance.js","sourceRoot":"","sources":["../../src/tools/explain-relevance.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C;;;;GAIG;AAKH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE;;;;;;;yDAO0C;IACvD,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wCAAwC;aACtD;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qDAAqD;gBAClE,IAAI,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;aACxC;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;KACrC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAkB,EAClB,MAA8B;IAE9B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAE5E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,QAAQ,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,WAAW,YAAY;SACxE,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* export_context_packet tool
|
|
3
|
-
*
|
|
4
|
-
* Generate a context packet for handoff to another session or AI agent.
|
|
5
|
-
*/
|
|
6
|
-
import type { FourDADatabase } from "../db.js";
|
|
7
|
-
import type { SourceItemMinimalRow, SavedItemRow } from "../types.js";
|
|
8
|
-
export interface ExportContextParams {
|
|
9
|
-
include_signals?: boolean;
|
|
10
|
-
include_saved?: boolean;
|
|
11
|
-
}
|
|
12
|
-
export declare const exportContextPacketTool: {
|
|
13
|
-
name: string;
|
|
14
|
-
description: string;
|
|
15
|
-
inputSchema: {
|
|
16
|
-
type: "object";
|
|
17
|
-
properties: {
|
|
18
|
-
include_signals: {
|
|
19
|
-
type: string;
|
|
20
|
-
description: string;
|
|
21
|
-
default: boolean;
|
|
22
|
-
};
|
|
23
|
-
include_saved: {
|
|
24
|
-
type: string;
|
|
25
|
-
description: string;
|
|
26
|
-
default: boolean;
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
export interface OpenSignal {
|
|
32
|
-
id: number;
|
|
33
|
-
title: string;
|
|
34
|
-
signal_type: string;
|
|
35
|
-
priority: string;
|
|
36
|
-
source_type: string;
|
|
37
|
-
}
|
|
38
|
-
export declare function executeExportContextPacket(db: FourDADatabase, params: ExportContextParams): {
|
|
39
|
-
generated_at: string;
|
|
40
|
-
version: string;
|
|
41
|
-
active_context: {
|
|
42
|
-
detected_tech: string[];
|
|
43
|
-
active_topics: string[];
|
|
44
|
-
interests: string[];
|
|
45
|
-
exclusions: string[];
|
|
46
|
-
};
|
|
47
|
-
open_signals: (SourceItemMinimalRow | OpenSignal)[];
|
|
48
|
-
saved_items: SavedItemRow[];
|
|
49
|
-
trust_metrics: {
|
|
50
|
-
precision_30d: number | null;
|
|
51
|
-
action_rate_30d: number | null;
|
|
52
|
-
total_surfaced_30d: number;
|
|
53
|
-
false_positives_30d: number;
|
|
54
|
-
} | null;
|
|
55
|
-
preemption_summary: {
|
|
56
|
-
active_critical_alerts: number;
|
|
57
|
-
} | null;
|
|
58
|
-
summary: string;
|
|
59
|
-
};
|
|
60
|
-
//# sourceMappingURL=export-context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"export-context.d.ts","sourceRoot":"","sources":["../../src/tools/export-context.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAiD,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErH,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;CAkBnC,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,mBAAmB;;;;;;;;;;;;uBAoGV,MAAM,GAAG,IAAI;yBACX,MAAM,GAAG,IAAI;4BACV,MAAM;6BACL,MAAM;;;gCAoCH,MAAM;;;EAgCjC"}
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: FSL-1.1-Apache-2.0
|
|
2
|
-
/**
|
|
3
|
-
* export_context_packet tool
|
|
4
|
-
*
|
|
5
|
-
* Generate a context packet for handoff to another session or AI agent.
|
|
6
|
-
*/
|
|
7
|
-
export const exportContextPacketTool = {
|
|
8
|
-
name: "export_context_packet",
|
|
9
|
-
description: `Generate a portable context packet capturing current work state, open signals, saved items, and active context. Use this to hand off context to another session or AI agent.`,
|
|
10
|
-
inputSchema: {
|
|
11
|
-
type: "object",
|
|
12
|
-
properties: {
|
|
13
|
-
include_signals: {
|
|
14
|
-
type: "boolean",
|
|
15
|
-
description: "Include open signals. Default: true",
|
|
16
|
-
default: true,
|
|
17
|
-
},
|
|
18
|
-
include_saved: {
|
|
19
|
-
type: "boolean",
|
|
20
|
-
description: "Include saved items. Default: true",
|
|
21
|
-
default: true,
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
export function executeExportContextPacket(db, params) {
|
|
27
|
-
const rawDb = db.getRawDb();
|
|
28
|
-
const includeSignals = params.include_signals ?? true;
|
|
29
|
-
const includeSaved = params.include_saved ?? true;
|
|
30
|
-
// Get interests
|
|
31
|
-
let interests = [];
|
|
32
|
-
try {
|
|
33
|
-
interests = rawDb
|
|
34
|
-
.prepare("SELECT topic FROM interests ORDER BY weight DESC LIMIT 20")
|
|
35
|
-
.all();
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
try {
|
|
39
|
-
interests = rawDb
|
|
40
|
-
.prepare("SELECT topic FROM explicit_interests ORDER BY weight DESC LIMIT 20")
|
|
41
|
-
.all();
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
// Neither table exists
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
const interestTopics = interests.map((r) => r.topic);
|
|
48
|
-
// Get exclusions
|
|
49
|
-
let exclusionRows = [];
|
|
50
|
-
try {
|
|
51
|
-
exclusionRows = rawDb
|
|
52
|
-
.prepare("SELECT topic FROM exclusions")
|
|
53
|
-
.all();
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// exclusions table not present
|
|
57
|
-
}
|
|
58
|
-
const exclusions = exclusionRows.map((r) => r.topic);
|
|
59
|
-
// Get detected tech from ACE
|
|
60
|
-
let detectedTechRows = [];
|
|
61
|
-
try {
|
|
62
|
-
detectedTechRows = rawDb
|
|
63
|
-
.prepare("SELECT DISTINCT name FROM detected_tech ORDER BY confidence DESC LIMIT 15")
|
|
64
|
-
.all();
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
// detected_tech table may not exist
|
|
68
|
-
}
|
|
69
|
-
const detectedTech = detectedTechRows.map((r) => r.name);
|
|
70
|
-
// Get active topics
|
|
71
|
-
let activeTopicRows = [];
|
|
72
|
-
try {
|
|
73
|
-
activeTopicRows = rawDb
|
|
74
|
-
.prepare("SELECT DISTINCT topic FROM active_topics ORDER BY last_seen DESC LIMIT 10")
|
|
75
|
-
.all();
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
// active_topics table may not exist
|
|
79
|
-
}
|
|
80
|
-
const activeTopics = activeTopicRows.map((r) => r.topic);
|
|
81
|
-
// Get open signals from temporal events (signals are computed at runtime, not stored in source_items)
|
|
82
|
-
let openSignals = [];
|
|
83
|
-
if (includeSignals) {
|
|
84
|
-
try {
|
|
85
|
-
openSignals = rawDb
|
|
86
|
-
.prepare(`SELECT id, subject as title, data, created_at
|
|
87
|
-
FROM temporal_events
|
|
88
|
-
WHERE event_type = 'signal_emitted'
|
|
89
|
-
ORDER BY created_at DESC LIMIT 20`)
|
|
90
|
-
.all()
|
|
91
|
-
.map((row) => {
|
|
92
|
-
const data = JSON.parse(row.data || '{}');
|
|
93
|
-
return {
|
|
94
|
-
id: row.id,
|
|
95
|
-
title: row.title,
|
|
96
|
-
signal_type: data.signal_type || 'unknown',
|
|
97
|
-
priority: data.priority || 'medium',
|
|
98
|
-
source_type: data.source_type || 'unknown',
|
|
99
|
-
};
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
// temporal_events may not have signal data yet
|
|
104
|
-
openSignals = rawDb
|
|
105
|
-
.prepare(`SELECT id, title, url, source_type
|
|
106
|
-
FROM source_items
|
|
107
|
-
ORDER BY created_at DESC LIMIT 20`)
|
|
108
|
-
.all();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Get saved items
|
|
112
|
-
let savedItems = [];
|
|
113
|
-
if (includeSaved) {
|
|
114
|
-
savedItems = rawDb
|
|
115
|
-
.prepare(`SELECT si.id, si.title, si.url, si.source_type, i.timestamp as saved_at
|
|
116
|
-
FROM interactions i
|
|
117
|
-
JOIN source_items si ON i.source_item_id = si.id
|
|
118
|
-
WHERE i.action = 'save'
|
|
119
|
-
ORDER BY i.timestamp DESC LIMIT 20`)
|
|
120
|
-
.all();
|
|
121
|
-
}
|
|
122
|
-
// Trust metrics
|
|
123
|
-
let trustMetrics = null;
|
|
124
|
-
try {
|
|
125
|
-
const trustCounts = rawDb
|
|
126
|
-
.prepare(`SELECT event_type, COUNT(*) as cnt
|
|
127
|
-
FROM trust_events
|
|
128
|
-
WHERE created_at >= datetime('now', '-30 days')
|
|
129
|
-
GROUP BY event_type`)
|
|
130
|
-
.all();
|
|
131
|
-
const getCount = (t) => trustCounts.find((c) => c.event_type === t)?.cnt ?? 0;
|
|
132
|
-
const surfaced = getCount("surfaced");
|
|
133
|
-
const acted = getCount("acted_on");
|
|
134
|
-
const fp = getCount("false_positive");
|
|
135
|
-
const validated = getCount("validated");
|
|
136
|
-
const tp = acted + validated;
|
|
137
|
-
trustMetrics = {
|
|
138
|
-
precision_30d: tp + fp > 0 ? Math.round((tp / (tp + fp)) * 100) / 100 : null,
|
|
139
|
-
action_rate_30d: surfaced > 0
|
|
140
|
-
? Math.round((acted / surfaced) * 100) / 100
|
|
141
|
-
: null,
|
|
142
|
-
total_surfaced_30d: surfaced,
|
|
143
|
-
false_positives_30d: fp,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
catch {
|
|
147
|
-
/* trust tables may not exist yet */
|
|
148
|
-
}
|
|
149
|
-
// Recent preemption alerts count
|
|
150
|
-
let preemptionSummary = null;
|
|
151
|
-
try {
|
|
152
|
-
const alertCount = rawDb
|
|
153
|
-
.prepare(`SELECT COUNT(*) as cnt FROM dependency_alerts
|
|
154
|
-
WHERE created_at >= datetime('now', '-7 days') AND severity IN ('critical', 'high')`)
|
|
155
|
-
.get();
|
|
156
|
-
preemptionSummary = {
|
|
157
|
-
active_critical_alerts: alertCount?.cnt ?? 0,
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
catch {
|
|
161
|
-
/* table may not exist */
|
|
162
|
-
}
|
|
163
|
-
return {
|
|
164
|
-
generated_at: new Date().toISOString(),
|
|
165
|
-
version: "1.1.0",
|
|
166
|
-
active_context: {
|
|
167
|
-
detected_tech: detectedTech,
|
|
168
|
-
active_topics: activeTopics,
|
|
169
|
-
interests: interestTopics,
|
|
170
|
-
exclusions,
|
|
171
|
-
},
|
|
172
|
-
open_signals: openSignals,
|
|
173
|
-
saved_items: savedItems,
|
|
174
|
-
trust_metrics: trustMetrics,
|
|
175
|
-
preemption_summary: preemptionSummary,
|
|
176
|
-
summary: `${interestTopics.length} interests, ${detectedTech.length} detected tech, ${openSignals.length} open signals, ${savedItems.length} saved items`,
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=export-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"export-context.js","sourceRoot":"","sources":["../../src/tools/export-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LLM Status Tool
|
|
3
|
-
*
|
|
4
|
-
* Check the status of the LLM configuration and Ollama availability.
|
|
5
|
-
* Helps diagnose why AI synthesis might not be working.
|
|
6
|
-
*/
|
|
7
|
-
import type { FourDADatabase } from "../db.js";
|
|
8
|
-
export declare const llmStatusTool: {
|
|
9
|
-
name: string;
|
|
10
|
-
description: string;
|
|
11
|
-
inputSchema: {
|
|
12
|
-
type: string;
|
|
13
|
-
properties: {
|
|
14
|
-
check_ollama: {
|
|
15
|
-
type: string;
|
|
16
|
-
description: string;
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
export interface LLMStatusParams {
|
|
22
|
-
check_ollama?: boolean;
|
|
23
|
-
}
|
|
24
|
-
interface LLMStatusResult {
|
|
25
|
-
provider: string | null;
|
|
26
|
-
can_synthesize: boolean;
|
|
27
|
-
config: {
|
|
28
|
-
model: string | null;
|
|
29
|
-
model_light: string | null;
|
|
30
|
-
model_heavy: string | null;
|
|
31
|
-
ollama_url: string | null;
|
|
32
|
-
};
|
|
33
|
-
ollama?: {
|
|
34
|
-
available: boolean;
|
|
35
|
-
models: string[];
|
|
36
|
-
has_recommended: boolean;
|
|
37
|
-
missing_models: string[];
|
|
38
|
-
error?: string;
|
|
39
|
-
};
|
|
40
|
-
recommendations: string[];
|
|
41
|
-
setup_commands?: string[];
|
|
42
|
-
}
|
|
43
|
-
export declare function executeLLMStatus(db: FourDADatabase, params: LLMStatusParams): Promise<LLMStatusResult>;
|
|
44
|
-
export {};
|
|
45
|
-
//# sourceMappingURL=llm-status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llm-status.d.ts","sourceRoot":"","sources":["../../src/tools/llm-status.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAS/C,eAAO,MAAM,aAAa;;;;;;;;;;;;CAoBzB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC;IACF,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,eAAe,EAAE,OAAO,CAAC;QACzB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,CAAC,CAsE1B"}
|