@4da/mcp-server 4.3.0 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/live/crates-registry.d.ts +18 -0
- package/dist/live/crates-registry.d.ts.map +1 -0
- package/dist/live/crates-registry.js +133 -0
- package/dist/live/crates-registry.js.map +1 -0
- package/dist/live/go-registry.d.ts +19 -0
- package/dist/live/go-registry.d.ts.map +1 -0
- package/dist/live/go-registry.js +127 -0
- package/dist/live/go-registry.js.map +1 -0
- package/dist/live/http-utils.d.ts +3 -0
- package/dist/live/http-utils.d.ts.map +1 -0
- package/dist/live/http-utils.js +20 -0
- package/dist/live/http-utils.js.map +1 -0
- package/dist/live/index.d.ts +7 -2
- package/dist/live/index.d.ts.map +1 -1
- package/dist/live/index.js +71 -0
- package/dist/live/index.js.map +1 -1
- package/dist/live/npm-registry.d.ts +19 -0
- package/dist/live/npm-registry.d.ts.map +1 -0
- package/dist/live/npm-registry.js +132 -0
- package/dist/live/npm-registry.js.map +1 -0
- package/dist/live/osv-scanner.d.ts.map +1 -1
- package/dist/live/osv-scanner.js +1 -10
- package/dist/live/osv-scanner.js.map +1 -1
- package/dist/live/pypi-registry.d.ts +18 -0
- package/dist/live/pypi-registry.d.ts.map +1 -0
- package/dist/live/pypi-registry.js +142 -0
- package/dist/live/pypi-registry.js.map +1 -0
- package/dist/live/rate-limiter.d.ts +12 -0
- package/dist/live/rate-limiter.d.ts.map +1 -1
- package/dist/live/rate-limiter.js +4 -0
- package/dist/live/rate-limiter.js.map +1 -1
- package/dist/live/semver-utils.d.ts +5 -0
- package/dist/live/semver-utils.d.ts.map +1 -0
- package/dist/live/semver-utils.js +28 -0
- package/dist/live/semver-utils.js.map +1 -0
- package/dist/live/types.d.ts +41 -0
- package/dist/live/types.d.ts.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 -221
- package/dist/schema-registry.js.map +1 -1
- package/dist/schemas/dependency-health.json +27 -0
- package/dist/schemas/upgrade-planner.json +22 -0
- package/dist/tool-dispatch.d.ts +1 -7
- package/dist/tool-dispatch.d.ts.map +1 -1
- package/dist/tool-dispatch.js +14 -46
- package/dist/tool-dispatch.js.map +1 -1
- package/dist/tools/dependency-health.d.ts +45 -0
- package/dist/tools/dependency-health.d.ts.map +1 -0
- package/dist/tools/dependency-health.js +152 -0
- package/dist/tools/dependency-health.js.map +1 -0
- package/dist/tools/index.d.ts +13 -40
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +18 -52
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/upgrade-planner.d.ts +59 -0
- package/dist/tools/upgrade-planner.d.ts.map +1 -0
- package/dist/tools/upgrade-planner.js +167 -0
- package/dist/tools/upgrade-planner.js.map +1 -0
- 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,417 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: FSL-1.1-Apache-2.0
|
|
2
|
-
/**
|
|
3
|
-
* Config Validator Tool
|
|
4
|
-
*
|
|
5
|
-
* Validate and diagnose 4DA configuration issues.
|
|
6
|
-
* This is a SUPERPOWER - it catches config errors before they cause problems.
|
|
7
|
-
*/
|
|
8
|
-
export const configValidatorTool = {
|
|
9
|
-
name: "config_validator",
|
|
10
|
-
description: `Validate 4DA configuration and detect issues.
|
|
11
|
-
Returns:
|
|
12
|
-
- Schema validation results
|
|
13
|
-
- Missing required fields
|
|
14
|
-
- Invalid values detected
|
|
15
|
-
- Cross-field consistency checks
|
|
16
|
-
- Recommendations for fixes
|
|
17
|
-
|
|
18
|
-
Use this when things aren't working as expected.`,
|
|
19
|
-
inputSchema: {
|
|
20
|
-
type: "object",
|
|
21
|
-
properties: {
|
|
22
|
-
section: {
|
|
23
|
-
type: "string",
|
|
24
|
-
enum: ["all", "sources", "embedding", "llm", "ace", "digest", "ui"],
|
|
25
|
-
description: "Config section to validate (default: all)",
|
|
26
|
-
},
|
|
27
|
-
fix_suggestions: {
|
|
28
|
-
type: "boolean",
|
|
29
|
-
description: "Include fix suggestions (default: true)",
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
/** Patterns that indicate a field contains sensitive data (API keys, tokens, etc.) */
|
|
35
|
-
const SENSITIVE_FIELD_PATTERNS = /key|token|password|secret|credential|bearer|api_key/i;
|
|
36
|
-
/**
|
|
37
|
-
* Redact a value if the field name suggests it contains sensitive data.
|
|
38
|
-
* Returns "[REDACTED]" for sensitive fields, the original value otherwise.
|
|
39
|
-
*/
|
|
40
|
-
function redactSensitiveValue(fieldName, value) {
|
|
41
|
-
if (SENSITIVE_FIELD_PATTERNS.test(fieldName)) {
|
|
42
|
-
return "[REDACTED]";
|
|
43
|
-
}
|
|
44
|
-
// Also check string values that look like API keys (long alphanumeric strings)
|
|
45
|
-
if (typeof value === "string" && value.length > 20 && /^[A-Za-z0-9_\-./+=]+$/.test(value)) {
|
|
46
|
-
// Heuristic: long opaque strings are likely secrets even if the field name doesn't match
|
|
47
|
-
return "[REDACTED]";
|
|
48
|
-
}
|
|
49
|
-
return value;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Scrub all `current_value` fields in validation issues to prevent API key leakage.
|
|
53
|
-
*/
|
|
54
|
-
function redactIssues(issues) {
|
|
55
|
-
return issues.map(issue => ({
|
|
56
|
-
...issue,
|
|
57
|
-
current_value: redactSensitiveValue(issue.field, issue.current_value),
|
|
58
|
-
}));
|
|
59
|
-
}
|
|
60
|
-
export function executeConfigValidator(db, params) {
|
|
61
|
-
const { section = "all", fix_suggestions = true } = params;
|
|
62
|
-
const dbInstance = db.db;
|
|
63
|
-
// Get current settings
|
|
64
|
-
let settingsRows = [];
|
|
65
|
-
try {
|
|
66
|
-
settingsRows = dbInstance.prepare(`
|
|
67
|
-
SELECT key, value FROM settings
|
|
68
|
-
`).all();
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
return {
|
|
72
|
-
overall_status: "warnings",
|
|
73
|
-
sections: [],
|
|
74
|
-
summary: { total_issues: 0, errors: 0, warnings: 1, info: 0 },
|
|
75
|
-
quick_fixes: ["Settings table not found — running in standalone mode. Install the 4DA desktop app for full configuration management."],
|
|
76
|
-
config_score: -1,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
const settings = {};
|
|
80
|
-
for (const row of settingsRows) {
|
|
81
|
-
try {
|
|
82
|
-
settings[row.key] = JSON.parse(row.value);
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
settings[row.key] = row.value;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
const sections = [];
|
|
89
|
-
// Validate each section
|
|
90
|
-
if (section === "all" || section === "sources") {
|
|
91
|
-
sections.push(validateSources(settings, fix_suggestions));
|
|
92
|
-
}
|
|
93
|
-
if (section === "all" || section === "embedding") {
|
|
94
|
-
sections.push(validateEmbedding(settings, fix_suggestions));
|
|
95
|
-
}
|
|
96
|
-
if (section === "all" || section === "llm") {
|
|
97
|
-
sections.push(validateLLM(settings, fix_suggestions));
|
|
98
|
-
}
|
|
99
|
-
if (section === "all" || section === "ace") {
|
|
100
|
-
sections.push(validateACE(settings, fix_suggestions));
|
|
101
|
-
}
|
|
102
|
-
if (section === "all" || section === "digest") {
|
|
103
|
-
sections.push(validateDigest(settings, fix_suggestions));
|
|
104
|
-
}
|
|
105
|
-
if (section === "all" || section === "ui") {
|
|
106
|
-
sections.push(validateUI(settings, fix_suggestions));
|
|
107
|
-
}
|
|
108
|
-
// Redact sensitive values from all issue current_value fields before output
|
|
109
|
-
for (const sec of sections) {
|
|
110
|
-
sec.issues = redactIssues(sec.issues);
|
|
111
|
-
}
|
|
112
|
-
// Calculate summary
|
|
113
|
-
const allIssues = sections.flatMap(s => s.issues);
|
|
114
|
-
const errors = allIssues.filter(i => i.severity === "error").length;
|
|
115
|
-
const warnings = allIssues.filter(i => i.severity === "warning").length;
|
|
116
|
-
const info = allIssues.filter(i => i.severity === "info").length;
|
|
117
|
-
const overallStatus = errors > 0 ? "errors" : warnings > 0 ? "warnings" : "valid";
|
|
118
|
-
// Generate quick fixes
|
|
119
|
-
const quickFixes = allIssues
|
|
120
|
-
.filter(i => i.fix && i.severity !== "info")
|
|
121
|
-
.map(i => i.fix)
|
|
122
|
-
.slice(0, 5);
|
|
123
|
-
// Calculate config score (0-100)
|
|
124
|
-
const maxScore = 100;
|
|
125
|
-
const errorPenalty = errors * 20;
|
|
126
|
-
const warningPenalty = warnings * 5;
|
|
127
|
-
const configScore = Math.max(0, maxScore - errorPenalty - warningPenalty);
|
|
128
|
-
return {
|
|
129
|
-
overall_status: overallStatus,
|
|
130
|
-
sections,
|
|
131
|
-
summary: {
|
|
132
|
-
total_issues: allIssues.length,
|
|
133
|
-
errors,
|
|
134
|
-
warnings,
|
|
135
|
-
info,
|
|
136
|
-
},
|
|
137
|
-
quick_fixes: quickFixes,
|
|
138
|
-
config_score: configScore,
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
function validateSources(settings, includeFixes) {
|
|
142
|
-
const issues = [];
|
|
143
|
-
// Check enabled sources
|
|
144
|
-
const sources = settings.sources;
|
|
145
|
-
if (!sources) {
|
|
146
|
-
issues.push({
|
|
147
|
-
section: "sources",
|
|
148
|
-
field: "sources",
|
|
149
|
-
severity: "error",
|
|
150
|
-
message: "No sources configured",
|
|
151
|
-
current_value: undefined,
|
|
152
|
-
expected: "At least one source should be enabled",
|
|
153
|
-
fix: includeFixes ? "Add sources in Settings → Sources" : undefined,
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
const enabledCount = Object.values(sources).filter(s => s.enabled).length;
|
|
158
|
-
if (enabledCount === 0) {
|
|
159
|
-
issues.push({
|
|
160
|
-
section: "sources",
|
|
161
|
-
field: "sources",
|
|
162
|
-
severity: "error",
|
|
163
|
-
message: "All sources are disabled",
|
|
164
|
-
current_value: "0 enabled",
|
|
165
|
-
expected: "At least one source should be enabled",
|
|
166
|
-
fix: includeFixes ? "Enable at least one source in Settings" : undefined,
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
// Check fetch intervals
|
|
171
|
-
const fetchInterval = settings.fetch_interval_minutes;
|
|
172
|
-
if (fetchInterval && fetchInterval < 5) {
|
|
173
|
-
issues.push({
|
|
174
|
-
section: "sources",
|
|
175
|
-
field: "fetch_interval_minutes",
|
|
176
|
-
severity: "warning",
|
|
177
|
-
message: "Very aggressive fetch interval may cause rate limiting",
|
|
178
|
-
current_value: fetchInterval,
|
|
179
|
-
expected: "5 minutes or more recommended",
|
|
180
|
-
fix: includeFixes ? "Increase fetch_interval_minutes to 15+" : undefined,
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
return {
|
|
184
|
-
section: "sources",
|
|
185
|
-
status: issues.some(i => i.severity === "error") ? "errors" :
|
|
186
|
-
issues.some(i => i.severity === "warning") ? "warnings" : "valid",
|
|
187
|
-
issue_count: issues.length,
|
|
188
|
-
issues,
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
function validateEmbedding(settings, includeFixes) {
|
|
192
|
-
const issues = [];
|
|
193
|
-
const embeddingProvider = settings.embedding_provider;
|
|
194
|
-
const openaiKey = settings.openai_api_key;
|
|
195
|
-
const ollamaUrl = settings.ollama_url;
|
|
196
|
-
if (!embeddingProvider) {
|
|
197
|
-
issues.push({
|
|
198
|
-
section: "embedding",
|
|
199
|
-
field: "embedding_provider",
|
|
200
|
-
severity: "error",
|
|
201
|
-
message: "No embedding provider configured",
|
|
202
|
-
current_value: undefined,
|
|
203
|
-
expected: "openai or ollama",
|
|
204
|
-
fix: includeFixes ? "Set embedding_provider in Settings" : undefined,
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
else if (embeddingProvider === "openai" && !openaiKey) {
|
|
208
|
-
issues.push({
|
|
209
|
-
section: "embedding",
|
|
210
|
-
field: "openai_api_key",
|
|
211
|
-
severity: "error",
|
|
212
|
-
message: "OpenAI selected but no API key provided",
|
|
213
|
-
current_value: "(empty)",
|
|
214
|
-
expected: "Valid OpenAI API key",
|
|
215
|
-
fix: includeFixes ? "Add your OpenAI API key in Settings → API Keys" : undefined,
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
else if (embeddingProvider === "ollama" && !ollamaUrl) {
|
|
219
|
-
issues.push({
|
|
220
|
-
section: "embedding",
|
|
221
|
-
field: "ollama_url",
|
|
222
|
-
severity: "warning",
|
|
223
|
-
message: "Ollama selected but no URL configured (using default)",
|
|
224
|
-
current_value: ollamaUrl || "(empty)",
|
|
225
|
-
expected: "http://localhost:11434 or custom URL",
|
|
226
|
-
fix: includeFixes ? "Verify Ollama is running at default port" : undefined,
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
// Check embedding model
|
|
230
|
-
const embeddingModel = settings.embedding_model;
|
|
231
|
-
if (!embeddingModel) {
|
|
232
|
-
issues.push({
|
|
233
|
-
section: "embedding",
|
|
234
|
-
field: "embedding_model",
|
|
235
|
-
severity: "info",
|
|
236
|
-
message: "No embedding model specified (using default)",
|
|
237
|
-
current_value: "(default)",
|
|
238
|
-
expected: "text-embedding-3-small recommended",
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
return {
|
|
242
|
-
section: "embedding",
|
|
243
|
-
status: issues.some(i => i.severity === "error") ? "errors" :
|
|
244
|
-
issues.some(i => i.severity === "warning") ? "warnings" : "valid",
|
|
245
|
-
issue_count: issues.length,
|
|
246
|
-
issues,
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
function validateLLM(settings, includeFixes) {
|
|
250
|
-
const issues = [];
|
|
251
|
-
const llmProvider = settings.llm_provider;
|
|
252
|
-
const anthropicKey = settings.anthropic_api_key;
|
|
253
|
-
const openaiKey = settings.openai_api_key;
|
|
254
|
-
if (!llmProvider) {
|
|
255
|
-
issues.push({
|
|
256
|
-
section: "llm",
|
|
257
|
-
field: "llm_provider",
|
|
258
|
-
severity: "warning",
|
|
259
|
-
message: "No LLM provider configured - relevance scoring will be limited",
|
|
260
|
-
current_value: undefined,
|
|
261
|
-
expected: "anthropic, openai, or ollama",
|
|
262
|
-
fix: includeFixes ? "Configure an LLM provider for better relevance scoring" : undefined,
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
else if (llmProvider === "anthropic" && !anthropicKey) {
|
|
266
|
-
issues.push({
|
|
267
|
-
section: "llm",
|
|
268
|
-
field: "anthropic_api_key",
|
|
269
|
-
severity: "error",
|
|
270
|
-
message: "Anthropic selected but no API key provided",
|
|
271
|
-
current_value: "(empty)",
|
|
272
|
-
expected: "Valid Anthropic API key",
|
|
273
|
-
fix: includeFixes ? "Add your Anthropic API key in Settings → API Keys" : undefined,
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
else if (llmProvider === "openai" && !openaiKey) {
|
|
277
|
-
issues.push({
|
|
278
|
-
section: "llm",
|
|
279
|
-
field: "openai_api_key",
|
|
280
|
-
severity: "error",
|
|
281
|
-
message: "OpenAI selected for LLM but no API key provided",
|
|
282
|
-
current_value: "(empty)",
|
|
283
|
-
expected: "Valid OpenAI API key",
|
|
284
|
-
fix: includeFixes ? "Add your OpenAI API key in Settings → API Keys" : undefined,
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
// Check daily limit
|
|
288
|
-
const dailyLimit = settings.daily_cost_limit_usd;
|
|
289
|
-
if (dailyLimit === undefined) {
|
|
290
|
-
issues.push({
|
|
291
|
-
section: "llm",
|
|
292
|
-
field: "daily_cost_limit_usd",
|
|
293
|
-
severity: "info",
|
|
294
|
-
message: "No daily cost limit set",
|
|
295
|
-
current_value: "(unlimited)",
|
|
296
|
-
expected: "Consider setting a limit to avoid surprise bills",
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
return {
|
|
300
|
-
section: "llm",
|
|
301
|
-
status: issues.some(i => i.severity === "error") ? "errors" :
|
|
302
|
-
issues.some(i => i.severity === "warning") ? "warnings" : "valid",
|
|
303
|
-
issue_count: issues.length,
|
|
304
|
-
issues,
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
function validateACE(settings, includeFixes) {
|
|
308
|
-
const issues = [];
|
|
309
|
-
const watchedDirs = settings.watched_directories;
|
|
310
|
-
const aceEnabled = settings.ace_enabled;
|
|
311
|
-
if (aceEnabled && (!watchedDirs || watchedDirs.length === 0)) {
|
|
312
|
-
issues.push({
|
|
313
|
-
section: "ace",
|
|
314
|
-
field: "watched_directories",
|
|
315
|
-
severity: "warning",
|
|
316
|
-
message: "ACE enabled but no directories configured to watch",
|
|
317
|
-
current_value: watchedDirs || [],
|
|
318
|
-
expected: "At least one directory for context detection",
|
|
319
|
-
fix: includeFixes ? "Add project directories in Settings → Context" : undefined,
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
// Check for overly broad paths
|
|
323
|
-
if (watchedDirs) {
|
|
324
|
-
for (const dir of watchedDirs) {
|
|
325
|
-
if (dir === "/" || dir === "C:\\" || dir.split(/[/\\]/).length <= 2) {
|
|
326
|
-
issues.push({
|
|
327
|
-
section: "ace",
|
|
328
|
-
field: "watched_directories",
|
|
329
|
-
severity: "warning",
|
|
330
|
-
message: `Path "${dir}" is very broad - may cause performance issues`,
|
|
331
|
-
current_value: dir,
|
|
332
|
-
expected: "More specific project directories",
|
|
333
|
-
fix: includeFixes ? `Use specific project paths instead of "${dir}"` : undefined,
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
return {
|
|
339
|
-
section: "ace",
|
|
340
|
-
status: issues.some(i => i.severity === "error") ? "errors" :
|
|
341
|
-
issues.some(i => i.severity === "warning") ? "warnings" : "valid",
|
|
342
|
-
issue_count: issues.length,
|
|
343
|
-
issues,
|
|
344
|
-
};
|
|
345
|
-
}
|
|
346
|
-
function validateDigest(settings, includeFixes) {
|
|
347
|
-
const issues = [];
|
|
348
|
-
const digestEnabled = settings.digest_enabled;
|
|
349
|
-
const digestEmail = settings.digest_email;
|
|
350
|
-
if (digestEnabled && digestEmail) {
|
|
351
|
-
// Basic email validation
|
|
352
|
-
if (!digestEmail.includes("@") || !digestEmail.includes(".")) {
|
|
353
|
-
issues.push({
|
|
354
|
-
section: "digest",
|
|
355
|
-
field: "digest_email",
|
|
356
|
-
severity: "error",
|
|
357
|
-
message: "Invalid email address format",
|
|
358
|
-
current_value: digestEmail,
|
|
359
|
-
expected: "Valid email address",
|
|
360
|
-
fix: includeFixes ? "Correct the email address format" : undefined,
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
const digestFrequency = settings.digest_frequency;
|
|
365
|
-
if (digestEnabled && !digestFrequency) {
|
|
366
|
-
issues.push({
|
|
367
|
-
section: "digest",
|
|
368
|
-
field: "digest_frequency",
|
|
369
|
-
severity: "info",
|
|
370
|
-
message: "No digest frequency set (using default)",
|
|
371
|
-
current_value: "(default)",
|
|
372
|
-
expected: "daily, weekly, or custom schedule",
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
return {
|
|
376
|
-
section: "digest",
|
|
377
|
-
status: issues.some(i => i.severity === "error") ? "errors" :
|
|
378
|
-
issues.some(i => i.severity === "warning") ? "warnings" : "valid",
|
|
379
|
-
issue_count: issues.length,
|
|
380
|
-
issues,
|
|
381
|
-
};
|
|
382
|
-
}
|
|
383
|
-
function validateUI(settings, includeFixes) {
|
|
384
|
-
const issues = [];
|
|
385
|
-
const theme = settings.theme;
|
|
386
|
-
if (theme && !["dark", "light", "system"].includes(theme)) {
|
|
387
|
-
issues.push({
|
|
388
|
-
section: "ui",
|
|
389
|
-
field: "theme",
|
|
390
|
-
severity: "warning",
|
|
391
|
-
message: "Unknown theme value",
|
|
392
|
-
current_value: theme,
|
|
393
|
-
expected: "dark, light, or system",
|
|
394
|
-
fix: includeFixes ? "Set theme to dark, light, or system" : undefined,
|
|
395
|
-
});
|
|
396
|
-
}
|
|
397
|
-
const maxResults = settings.max_results_per_page;
|
|
398
|
-
if (maxResults && (maxResults < 5 || maxResults > 100)) {
|
|
399
|
-
issues.push({
|
|
400
|
-
section: "ui",
|
|
401
|
-
field: "max_results_per_page",
|
|
402
|
-
severity: "warning",
|
|
403
|
-
message: "Unusual results per page value",
|
|
404
|
-
current_value: maxResults,
|
|
405
|
-
expected: "Between 5 and 100",
|
|
406
|
-
fix: includeFixes ? "Set max_results_per_page to a reasonable value (10-50)" : undefined,
|
|
407
|
-
});
|
|
408
|
-
}
|
|
409
|
-
return {
|
|
410
|
-
section: "ui",
|
|
411
|
-
status: issues.some(i => i.severity === "error") ? "errors" :
|
|
412
|
-
issues.some(i => i.severity === "warning") ? "warnings" : "valid",
|
|
413
|
-
issue_count: issues.length,
|
|
414
|
-
issues,
|
|
415
|
-
};
|
|
416
|
-
}
|
|
417
|
-
//# sourceMappingURL=config-validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../../src/tools/config-validator.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE;;;;;;;;iDAQkC;IAC/C,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC;gBACnE,WAAW,EAAE,2CAA2C;aACzD;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,yCAAyC;aACvD;SACF;KACF;CACF,CAAC;AAqCF,sFAAsF;AACtF,MAAM,wBAAwB,GAAG,sDAAsD,CAAC;AAExF;;;GAGG;AACH,SAAS,oBAAoB,CAAC,SAAiB,EAAE,KAAc;IAC7D,IAAI,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7C,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,+EAA+E;IAC/E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1F,yFAAyF;QACzF,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,MAAyB;IAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1B,GAAG,KAAK;QACR,aAAa,EAAE,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC;KACtE,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,EAAkB,EAClB,MAA6B;IAE7B,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAE3D,MAAM,UAAU,GAAI,EAAwI,CAAC,EAAE,CAAC;IAEhK,uBAAuB;IACvB,IAAI,YAAY,GAAqC,EAAE,CAAC;IACxD,IAAI,CAAC;QACH,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC;;KAEjC,CAAC,CAAC,GAAG,EAAsC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,cAAc,EAAE,UAAU;YAC1B,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;YAC7D,WAAW,EAAE,CAAC,uHAAuH,CAAC;YACtI,YAAY,EAAE,CAAC,CAAC;SACjB,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QAChC,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,wBAAwB;IACxB,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,4EAA4E;IAC5E,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,oBAAoB;IACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACpE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACxE,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAEjE,MAAM,aAAa,GACjB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IAE9D,uBAAuB;IACvB,MAAM,UAAU,GAAG,SAAS;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAI,CAAC;SAChB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,iCAAiC;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,YAAY,GAAG,MAAM,GAAG,EAAE,CAAC;IACjC,MAAM,cAAc,GAAG,QAAQ,GAAG,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,cAAc,CAAC,CAAC;IAE1E,OAAO;QACL,cAAc,EAAE,aAAa;QAC7B,QAAQ;QACR,OAAO,EAAE;YACP,YAAY,EAAE,SAAS,CAAC,MAAM;YAC9B,MAAM;YACN,QAAQ;YACR,IAAI;SACL;QACD,WAAW,EAAE,UAAU;QACvB,YAAY,EAAE,WAAW;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,QAAiC,EACjC,YAAqB;IAErB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,wBAAwB;IACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAA2D,CAAC;IACrF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,uBAAuB;YAChC,aAAa,EAAE,SAAS;YACxB,QAAQ,EAAE,uCAAuC;YACjD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC1E,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,0BAA0B;gBACnC,aAAa,EAAE,WAAW;gBAC1B,QAAQ,EAAE,uCAAuC;gBACjD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,SAAS;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,aAAa,GAAG,QAAQ,CAAC,sBAA4C,CAAC;IAC5E,IAAI,aAAa,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,wBAAwB;YAC/B,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,wDAAwD;YACjE,aAAa,EAAE,aAAa;YAC5B,QAAQ,EAAE,+BAA+B;YACzC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;QACzE,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAiC,EACjC,YAAqB;IAErB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,kBAAwC,CAAC;IAC5E,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAoC,CAAC;IAChE,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAgC,CAAC;IAE5D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,oBAAoB;YAC3B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,kCAAkC;YAC3C,aAAa,EAAE,SAAS;YACxB,QAAQ,EAAE,kBAAkB;YAC5B,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,iBAAiB,KAAK,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,gBAAgB;YACvB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,yCAAyC;YAClD,aAAa,EAAE,SAAS;YACxB,QAAQ,EAAE,sBAAsB;YAChC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,SAAS;SACjF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,iBAAiB,KAAK,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,uDAAuD;YAChE,aAAa,EAAE,SAAS,IAAI,SAAS;YACrC,QAAQ,EAAE,sCAAsC;YAChD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,SAAS;SAC3E,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB;IACxB,MAAM,cAAc,GAAG,QAAQ,CAAC,eAAqC,CAAC;IACtE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,iBAAiB;YACxB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,8CAA8C;YACvD,aAAa,EAAE,WAAW;YAC1B,QAAQ,EAAE,oCAAoC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;QACzE,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,QAAiC,EACjC,YAAqB;IAErB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAkC,CAAC;IAChE,MAAM,YAAY,GAAG,QAAQ,CAAC,iBAAuC,CAAC;IACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAoC,CAAC;IAEhE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,gEAAgE;YACzE,aAAa,EAAE,SAAS;YACxB,QAAQ,EAAE,8BAA8B;YACxC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,SAAS;SACzF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,WAAW,KAAK,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB;YAC1B,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,4CAA4C;YACrD,aAAa,EAAE,SAAS;YACxB,QAAQ,EAAE,yBAAyB;YACnC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,SAAS;SACpF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,WAAW,KAAK,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,gBAAgB;YACvB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,iDAAiD;YAC1D,aAAa,EAAE,SAAS;YACxB,QAAQ,EAAE,sBAAsB;YAChC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,SAAS;SACjF,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,MAAM,UAAU,GAAG,QAAQ,CAAC,oBAA0C,CAAC;IACvE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,sBAAsB;YAC7B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,yBAAyB;YAClC,aAAa,EAAE,aAAa;YAC5B,QAAQ,EAAE,kDAAkD;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;QACzE,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,QAAiC,EACjC,YAAqB;IAErB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,WAAW,GAAG,QAAQ,CAAC,mBAA2C,CAAC;IACzE,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAkC,CAAC;IAE/D,IAAI,UAAU,IAAI,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,qBAAqB;YAC5B,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,oDAAoD;YAC7D,aAAa,EAAE,WAAW,IAAI,EAAE;YAChC,QAAQ,EAAE,8CAA8C;YACxD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,SAAS;SAChF,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACpE,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,qBAAqB;oBAC5B,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,SAAS,GAAG,gDAAgD;oBACrE,aAAa,EAAE,GAAG;oBAClB,QAAQ,EAAE,mCAAmC;oBAC7C,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,0CAA0C,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS;iBACjF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;QACzE,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,QAAiC,EACjC,YAAqB;IAErB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAqC,CAAC;IACrE,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAkC,CAAC;IAEhE,IAAI,aAAa,IAAI,WAAW,EAAE,CAAC;QACjC,yBAAyB;QACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,8BAA8B;gBACvC,aAAa,EAAE,WAAW;gBAC1B,QAAQ,EAAE,qBAAqB;gBAC/B,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,SAAS;aACnE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,QAAQ,CAAC,gBAAsC,CAAC;IACxE,IAAI,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,kBAAkB;YACzB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,yCAAyC;YAClD,aAAa,EAAE,WAAW;YAC1B,QAAQ,EAAE,mCAAmC;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;QACzE,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,QAAiC,EACjC,YAAqB;IAErB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAA2B,CAAC;IACnD,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,qBAAqB;YAC9B,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,wBAAwB;YAClC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,SAAS;SACtE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,oBAA0C,CAAC;IACvE,IAAI,UAAU,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,sBAAsB;YAC7B,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,gCAAgC;YACzC,aAAa,EAAE,UAAU;YACzB,QAAQ,EAAE,mBAAmB;YAC7B,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,SAAS;SACzF,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;QACzE,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Context Analysis Tool
|
|
3
|
-
*
|
|
4
|
-
* Analyze and optimize your local context for better relevance.
|
|
5
|
-
* This is a SUPERPOWER - it tells you how to make 4DA smarter about you.
|
|
6
|
-
*
|
|
7
|
-
* With synthesize=true, uses LLM to give personalized optimization advice.
|
|
8
|
-
*/
|
|
9
|
-
import type { FourDADatabase } from "../db.js";
|
|
10
|
-
import { type CompactResult, type ContextAnalysisKeyData } from "../output-manager.js";
|
|
11
|
-
export declare const contextAnalysisTool: {
|
|
12
|
-
name: string;
|
|
13
|
-
description: string;
|
|
14
|
-
inputSchema: {
|
|
15
|
-
type: string;
|
|
16
|
-
properties: {
|
|
17
|
-
include_recommendations: {
|
|
18
|
-
type: string;
|
|
19
|
-
description: string;
|
|
20
|
-
};
|
|
21
|
-
analyze_gaps: {
|
|
22
|
-
type: string;
|
|
23
|
-
description: string;
|
|
24
|
-
};
|
|
25
|
-
synthesize: {
|
|
26
|
-
type: string;
|
|
27
|
-
description: string;
|
|
28
|
-
};
|
|
29
|
-
compact: {
|
|
30
|
-
type: string;
|
|
31
|
-
description: string;
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
export interface ContextAnalysisParams {
|
|
37
|
-
include_recommendations?: boolean;
|
|
38
|
-
analyze_gaps?: boolean;
|
|
39
|
-
synthesize?: boolean;
|
|
40
|
-
compact?: boolean;
|
|
41
|
-
}
|
|
42
|
-
interface ContextQualityScore {
|
|
43
|
-
overall: number;
|
|
44
|
-
dimensions: {
|
|
45
|
-
name: string;
|
|
46
|
-
score: number;
|
|
47
|
-
explanation: string;
|
|
48
|
-
}[];
|
|
49
|
-
}
|
|
50
|
-
interface CoverageGap {
|
|
51
|
-
area: string;
|
|
52
|
-
evidence: string;
|
|
53
|
-
recommendation: string;
|
|
54
|
-
}
|
|
55
|
-
interface ContextAnalysisResult {
|
|
56
|
-
context_summary: {
|
|
57
|
-
role: string | null;
|
|
58
|
-
tech_stack_count: number;
|
|
59
|
-
interests_count: number;
|
|
60
|
-
domains_count: number;
|
|
61
|
-
exclusions_count: number;
|
|
62
|
-
detected_tech_count: number;
|
|
63
|
-
active_topics_count: number;
|
|
64
|
-
learned_affinities_count: number;
|
|
65
|
-
anti_topics_count: number;
|
|
66
|
-
};
|
|
67
|
-
quality_score: ContextQualityScore;
|
|
68
|
-
tech_stack: string[];
|
|
69
|
-
interests: {
|
|
70
|
-
topic: string;
|
|
71
|
-
weight: number;
|
|
72
|
-
}[];
|
|
73
|
-
top_detected_tech: {
|
|
74
|
-
name: string;
|
|
75
|
-
confidence: number;
|
|
76
|
-
}[];
|
|
77
|
-
top_active_topics: {
|
|
78
|
-
topic: string;
|
|
79
|
-
weight: number;
|
|
80
|
-
}[];
|
|
81
|
-
top_affinities: {
|
|
82
|
-
topic: string;
|
|
83
|
-
score: number;
|
|
84
|
-
}[];
|
|
85
|
-
exclusions: string[];
|
|
86
|
-
coverage_gaps: CoverageGap[];
|
|
87
|
-
recommendations: {
|
|
88
|
-
priority: "high" | "medium" | "low";
|
|
89
|
-
action: string;
|
|
90
|
-
impact: string;
|
|
91
|
-
}[];
|
|
92
|
-
recent_items_breakdown: {
|
|
93
|
-
matched_by_interests: number;
|
|
94
|
-
matched_by_tech: number;
|
|
95
|
-
matched_by_ace: number;
|
|
96
|
-
matched_by_learned: number;
|
|
97
|
-
unmatched: number;
|
|
98
|
-
};
|
|
99
|
-
ai_advice?: {
|
|
100
|
-
personalized_recommendations: string;
|
|
101
|
-
highest_impact_change: string;
|
|
102
|
-
ideal_context_description: string;
|
|
103
|
-
model_used: string;
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
export declare function executeContextAnalysis(db: FourDADatabase, params: ContextAnalysisParams): Promise<ContextAnalysisResult | CompactResult<ContextAnalysisKeyData>>;
|
|
107
|
-
export {};
|
|
108
|
-
//# sourceMappingURL=context-analysis.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/context-analysis.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAgC,KAAK,aAAa,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAErH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;CAkC/B,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;CACL;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,qBAAqB;IAC7B,eAAe,EAAE;QACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,wBAAwB,EAAE,MAAM,CAAC;QACjC,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,iBAAiB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1D,iBAAiB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,eAAe,EAAE;QACf,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;QACpC,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;IACJ,sBAAsB,EAAE;QACtB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,SAAS,CAAC,EAAE;QACV,4BAA4B,EAAE,MAAM,CAAC;QACrC,qBAAqB,EAAE,MAAM,CAAC;QAC9B,yBAAyB,EAAE,MAAM,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAuGxE"}
|