@4da/mcp-server 5.0.4 → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +698 -0
- package/README.md +70 -39
- package/dist/build-staleness.d.ts +35 -0
- package/dist/build-staleness.js +95 -0
- package/dist/db.d.ts +53 -58
- package/dist/db.js +226 -299
- package/dist/doctor.js +27 -7
- package/dist/embeddings.js +7 -1
- package/dist/freshness-markers.d.ts +34 -0
- package/dist/freshness-markers.js +74 -0
- package/dist/gitignore.d.ts +37 -0
- package/dist/gitignore.js +130 -0
- package/dist/index.js +127 -44
- package/dist/live/bun-lockfile.d.ts +26 -0
- package/dist/live/bun-lockfile.js +123 -0
- package/dist/live/cargo-platform.d.ts +38 -0
- package/dist/live/cargo-platform.js +178 -0
- package/dist/live/changelog-classify.d.ts +41 -0
- package/dist/live/changelog-classify.js +207 -0
- package/dist/live/changelog.d.ts +64 -0
- package/dist/live/changelog.js +318 -0
- package/dist/live/crates-registry.js +3 -1
- package/dist/live/crates-versions.d.ts +47 -0
- package/dist/live/crates-versions.js +201 -0
- package/dist/live/dependency-set.d.ts +13 -0
- package/dist/live/dependency-set.js +95 -0
- package/dist/live/dev-scope.d.ts +32 -0
- package/dist/live/dev-scope.js +102 -0
- package/dist/live/file-signature.d.ts +18 -0
- package/dist/live/file-signature.js +43 -0
- package/dist/live/go-registry.js +3 -1
- package/dist/live/hn-fetcher.js +9 -3
- package/dist/live/index.d.ts +105 -2
- package/dist/live/index.js +266 -139
- package/dist/live/install-state.d.ts +43 -0
- package/dist/live/install-state.js +150 -0
- package/dist/live/js-lockfile-readers.d.ts +46 -0
- package/dist/live/js-lockfile-readers.js +181 -0
- package/dist/live/lockfile-parsers-pygo.d.ts +60 -0
- package/dist/live/lockfile-parsers-pygo.js +274 -0
- package/dist/live/lockfile-parsers.d.ts +69 -0
- package/dist/live/lockfile-parsers.js +311 -0
- package/dist/live/lockfile-types.d.ts +34 -0
- package/dist/live/lockfile-types.js +42 -0
- package/dist/live/maintenance.d.ts +33 -0
- package/dist/live/maintenance.js +37 -0
- package/dist/live/npm-packument.d.ts +47 -0
- package/dist/live/npm-packument.js +150 -0
- package/dist/live/npm-registry.js +67 -53
- package/dist/live/osv-scanner.d.ts +12 -1
- package/dist/live/osv-scanner.js +50 -15
- package/dist/live/package-archive.d.ts +49 -0
- package/dist/live/package-archive.js +186 -0
- package/dist/live/pypi-registry.js +3 -1
- package/dist/live/registry-health.d.ts +16 -0
- package/dist/live/registry-health.js +74 -0
- package/dist/live/release-metadata.d.ts +67 -0
- package/dist/live/release-metadata.js +16 -0
- package/dist/live/resolution.d.ts +43 -0
- package/dist/live/resolution.js +62 -0
- package/dist/live/semver-precedence.d.ts +30 -0
- package/dist/live/semver-precedence.js +83 -0
- package/dist/live/severity-scope.d.ts +57 -0
- package/dist/live/severity-scope.js +89 -0
- package/dist/live/types.d.ts +83 -0
- package/dist/live/upgrade-sources.d.ts +71 -0
- package/dist/live/upgrade-sources.js +198 -0
- package/dist/live/version-compare.d.ts +39 -0
- package/dist/live/version-compare.js +130 -0
- package/dist/live/version-resolver.d.ts +14 -1
- package/dist/live/version-resolver.js +93 -303
- package/dist/native-bindings.d.ts +19 -0
- package/dist/native-bindings.js +39 -0
- package/dist/project-manifests.d.ts +40 -0
- package/dist/project-manifests.js +193 -0
- package/dist/project-scanner.js +38 -48
- package/dist/project-tree.d.ts +41 -0
- package/dist/project-tree.js +110 -0
- package/dist/prompts.d.ts +28 -0
- package/dist/prompts.js +54 -0
- package/dist/schema-registry.d.ts +41 -29
- package/dist/schema-registry.js +98 -105
- package/dist/server-instructions.d.ts +11 -0
- package/dist/server-instructions.js +36 -0
- package/dist/tool-args.d.ts +28 -0
- package/dist/tool-args.js +93 -0
- package/dist/tool-dispatch.d.ts +1 -1
- package/dist/tool-dispatch.js +42 -8
- package/dist/tools/app-plan.d.ts +92 -0
- package/dist/tools/app-plan.js +155 -0
- package/dist/tools/briefing-stored-advisories.d.ts +20 -0
- package/dist/tools/briefing-stored-advisories.js +58 -0
- package/dist/tools/briefing-task-scope.d.ts +73 -0
- package/dist/tools/briefing-task-scope.js +197 -0
- package/dist/tools/briefing-wisdom.d.ts +31 -0
- package/dist/tools/briefing-wisdom.js +148 -0
- package/dist/tools/decision-enforcement.d.ts +0 -5
- package/dist/tools/decision-enforcement.js +0 -4
- package/dist/tools/decision-memory.js +18 -66
- package/dist/tools/dependency-check-signals.d.ts +74 -0
- package/dist/tools/dependency-check-signals.js +264 -0
- package/dist/tools/dependency-check.d.ts +98 -0
- package/dist/tools/dependency-check.js +295 -0
- package/dist/tools/dependency-health.js +74 -21
- package/dist/tools/developer-dna.d.ts +3 -0
- package/dist/tools/developer-dna.js +16 -15
- package/dist/tools/ecosystem-pulse.d.ts +6 -2
- package/dist/tools/ecosystem-pulse.js +53 -14
- package/dist/tools/get-actionable-signals.d.ts +26 -4
- package/dist/tools/get-actionable-signals.js +214 -251
- package/dist/tools/get-context.d.ts +2 -0
- package/dist/tools/get-context.js +9 -1
- package/dist/tools/get-relevant-content.d.ts +3 -1
- package/dist/tools/get-relevant-content.js +34 -3
- package/dist/tools/index.d.ts +4 -2
- package/dist/tools/index.js +4 -2
- package/dist/tools/install-drift-notes.d.ts +51 -0
- package/dist/tools/install-drift-notes.js +172 -0
- package/dist/tools/knowledge-gap-citations.d.ts +55 -0
- package/dist/tools/knowledge-gap-citations.js +132 -0
- package/dist/tools/knowledge-gap-exposure.d.ts +72 -0
- package/dist/tools/knowledge-gap-exposure.js +160 -0
- package/dist/tools/knowledge-gap-grading.d.ts +91 -0
- package/dist/tools/knowledge-gap-grading.js +157 -0
- package/dist/tools/knowledge-gap-installs.d.ts +65 -0
- package/dist/tools/knowledge-gap-installs.js +134 -0
- package/dist/tools/knowledge-gap-ranges.d.ts +51 -0
- package/dist/tools/knowledge-gap-ranges.js +146 -0
- package/dist/tools/knowledge-gap-scope.d.ts +63 -0
- package/dist/tools/knowledge-gap-scope.js +118 -0
- package/dist/tools/knowledge-gaps.d.ts +12 -3
- package/dist/tools/knowledge-gaps.js +172 -121
- package/dist/tools/package-presence.d.ts +24 -0
- package/dist/tools/package-presence.js +35 -0
- package/dist/tools/record-feedback.d.ts +0 -1
- package/dist/tools/record-feedback.js +7 -8
- package/dist/tools/signal-classifier.d.ts +25 -0
- package/dist/tools/signal-classifier.js +40 -0
- package/dist/tools/upgrade-impact-callsites.d.ts +52 -0
- package/dist/tools/upgrade-impact-callsites.js +226 -0
- package/dist/tools/upgrade-impact-literals.d.ts +45 -0
- package/dist/tools/upgrade-impact-literals.js +118 -0
- package/dist/tools/upgrade-impact-report.d.ts +80 -0
- package/dist/tools/upgrade-impact-report.js +178 -0
- package/dist/tools/upgrade-impact.d.ts +84 -0
- package/dist/tools/upgrade-impact.js +305 -0
- package/dist/tools/upgrade-planner.d.ts +41 -8
- package/dist/tools/upgrade-planner.js +201 -53
- package/dist/tools/vulnerability-scan-concise.d.ts +72 -0
- package/dist/tools/vulnerability-scan-concise.js +97 -0
- package/dist/tools/vulnerability-scan-format.d.ts +137 -0
- package/dist/tools/vulnerability-scan-format.js +276 -0
- package/dist/tools/vulnerability-scan.d.ts +338 -18
- package/dist/tools/vulnerability-scan.js +84 -125
- package/dist/tools/what-should-i-know.d.ts +86 -19
- package/dist/tools/what-should-i-know.js +277 -283
- package/dist/types.d.ts +4 -136
- package/package.json +35 -35
- package/dist/schemas/agent-memory.json +0 -49
- package/dist/schemas/decision-enforcement.json +0 -22
- package/dist/schemas/decision-memory.json +0 -54
- package/dist/schemas/dependency-health.json +0 -27
- package/dist/schemas/developer-dna.json +0 -219
- package/dist/schemas/ecosystem-pulse.json +0 -17
- package/dist/schemas/get-actionable-signals.json +0 -29
- package/dist/schemas/get-context.json +0 -17
- package/dist/schemas/get-relevant-content.json +0 -26
- package/dist/schemas/knowledge-gaps.json +0 -14
- package/dist/schemas/record-feedback.json +0 -24
- package/dist/schemas/upgrade-planner.json +0 -22
- package/dist/schemas/vulnerability-scan.json +0 -26
- package/dist/schemas/what-should-i-know.json +0 -19
package/dist/types.d.ts
CHANGED
|
@@ -119,37 +119,6 @@ export interface UserContext {
|
|
|
119
119
|
anti_topics: AntiTopic[];
|
|
120
120
|
};
|
|
121
121
|
}
|
|
122
|
-
/**
|
|
123
|
-
* Score breakdown for explain_relevance
|
|
124
|
-
*/
|
|
125
|
-
export interface ScoreBreakdown {
|
|
126
|
-
embedding_similarity: number | null;
|
|
127
|
-
static_match_score: number;
|
|
128
|
-
ace_match_score: number;
|
|
129
|
-
learned_affinity_score: number;
|
|
130
|
-
anti_penalty: number;
|
|
131
|
-
final_score: number;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Matching context elements
|
|
135
|
-
*/
|
|
136
|
-
export interface MatchingContext {
|
|
137
|
-
matching_interests: string[];
|
|
138
|
-
matching_tech: string[];
|
|
139
|
-
matching_topics: string[];
|
|
140
|
-
matching_affinities: string[];
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Full relevance explanation
|
|
144
|
-
*/
|
|
145
|
-
export interface RelevanceExplanation {
|
|
146
|
-
item_id: number;
|
|
147
|
-
source_type: string;
|
|
148
|
-
title: string;
|
|
149
|
-
score_breakdown: ScoreBreakdown;
|
|
150
|
-
matching_context: MatchingContext;
|
|
151
|
-
explanation: string;
|
|
152
|
-
}
|
|
153
122
|
/**
|
|
154
123
|
* Valid feedback action types
|
|
155
124
|
*/
|
|
@@ -161,6 +130,8 @@ export interface FeedbackResult {
|
|
|
161
130
|
success: boolean;
|
|
162
131
|
message: string;
|
|
163
132
|
interaction_id?: number;
|
|
133
|
+
/** The relevance label written to `feedback`: true (save), false (mark_irrelevant), null (no label: click/dismiss). */
|
|
134
|
+
relevance_label?: boolean | null;
|
|
164
135
|
}
|
|
165
136
|
export interface GetRelevantContentParams {
|
|
166
137
|
min_score?: number;
|
|
@@ -178,7 +149,8 @@ export interface ExplainRelevanceParams {
|
|
|
178
149
|
}
|
|
179
150
|
export interface RecordFeedbackParams {
|
|
180
151
|
item_id: number;
|
|
181
|
-
|
|
152
|
+
/** Optional; when given it must match the item's source type. */
|
|
153
|
+
source_type?: string;
|
|
182
154
|
action: FeedbackAction;
|
|
183
155
|
}
|
|
184
156
|
/** Row from: SELECT si.source_type, COUNT(*) as interactions FROM interactions ... GROUP BY si.source_type */
|
|
@@ -290,107 +262,3 @@ export interface SignalEventRow {
|
|
|
290
262
|
data: string;
|
|
291
263
|
created_at: string;
|
|
292
264
|
}
|
|
293
|
-
/**
|
|
294
|
-
* Valid agent feedback outcome types
|
|
295
|
-
*/
|
|
296
|
-
export type AgentFeedbackOutcome = "used" | "rejected" | "partially_used";
|
|
297
|
-
/**
|
|
298
|
-
* Parameters for recording agent feedback
|
|
299
|
-
*/
|
|
300
|
-
export interface RecordAgentFeedbackParams {
|
|
301
|
-
item_ids: string[];
|
|
302
|
-
outcome: AgentFeedbackOutcome;
|
|
303
|
-
context?: string;
|
|
304
|
-
session_task?: string;
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Result from recording agent feedback
|
|
308
|
-
*/
|
|
309
|
-
export interface AgentFeedbackResult {
|
|
310
|
-
success: boolean;
|
|
311
|
-
message: string;
|
|
312
|
-
recorded_count: number;
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Parameters for getting agent feedback stats
|
|
316
|
-
*/
|
|
317
|
-
export interface GetAgentFeedbackStatsParams {
|
|
318
|
-
days?: number;
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Outcome breakdown in agent feedback stats
|
|
322
|
-
*/
|
|
323
|
-
export interface AgentFeedbackOutcomeStats {
|
|
324
|
-
used: number;
|
|
325
|
-
rejected: number;
|
|
326
|
-
partially_used: number;
|
|
327
|
-
total: number;
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Per-source feedback stats
|
|
331
|
-
*/
|
|
332
|
-
export interface AgentFeedbackSourceStats {
|
|
333
|
-
source_type: string;
|
|
334
|
-
used: number;
|
|
335
|
-
rejected: number;
|
|
336
|
-
partially_used: number;
|
|
337
|
-
total: number;
|
|
338
|
-
usefulness_rate: number;
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* A frequently used item
|
|
342
|
-
*/
|
|
343
|
-
export interface AgentFeedbackTopItem {
|
|
344
|
-
item_id: string;
|
|
345
|
-
title: string | null;
|
|
346
|
-
source_type: string | null;
|
|
347
|
-
used_count: number;
|
|
348
|
-
rejected_count: number;
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* A recent feedback entry
|
|
352
|
-
*/
|
|
353
|
-
export interface AgentFeedbackRecentEntry {
|
|
354
|
-
item_id: string;
|
|
355
|
-
outcome: string;
|
|
356
|
-
context: string | null;
|
|
357
|
-
session_task: string | null;
|
|
358
|
-
recorded_at: string;
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Full agent feedback stats response
|
|
362
|
-
*/
|
|
363
|
-
export interface AgentFeedbackStats {
|
|
364
|
-
period_days: number;
|
|
365
|
-
outcomes: AgentFeedbackOutcomeStats;
|
|
366
|
-
by_source: AgentFeedbackSourceStats[];
|
|
367
|
-
top_used_items: AgentFeedbackTopItem[];
|
|
368
|
-
recent_feedback: AgentFeedbackRecentEntry[];
|
|
369
|
-
}
|
|
370
|
-
/** Row from agent_feedback table */
|
|
371
|
-
export interface AgentFeedbackRow {
|
|
372
|
-
item_id: string;
|
|
373
|
-
outcome: string;
|
|
374
|
-
context: string | null;
|
|
375
|
-
session_task: string | null;
|
|
376
|
-
recorded_at: string;
|
|
377
|
-
}
|
|
378
|
-
/** Row from agent_feedback stats query — outcome counts */
|
|
379
|
-
export interface AgentFeedbackOutcomeRow {
|
|
380
|
-
outcome: string;
|
|
381
|
-
cnt: number;
|
|
382
|
-
}
|
|
383
|
-
/** Row from agent_feedback stats query — source breakdown */
|
|
384
|
-
export interface AgentFeedbackSourceRow {
|
|
385
|
-
source_type: string;
|
|
386
|
-
outcome: string;
|
|
387
|
-
cnt: number;
|
|
388
|
-
}
|
|
389
|
-
/** Row from agent_feedback stats query — top items */
|
|
390
|
-
export interface AgentFeedbackTopItemRow {
|
|
391
|
-
item_id: string;
|
|
392
|
-
title: string | null;
|
|
393
|
-
source_type: string | null;
|
|
394
|
-
used_count: number;
|
|
395
|
-
rejected_count: number;
|
|
396
|
-
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@4da/mcp-server",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.1",
|
|
4
4
|
"mcpName": "io.github.4DA-Systems/4da-mcp-server",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Upgrade intelligence for AI coding agents: what changes between your installed and target version (changelog, breaking changes, the files you import it from), a pre-install verdict on each bump, vulnerability scanning at osv-scanner parity across npm/pnpm/yarn, Cargo, Python and Go lockfiles, ranked upgrade plans, task-scoped briefings, decision memory. Local, no account; works standalone, and reads the 4DA desktop app's scored feed when it is installed.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"bin": {
|
|
@@ -16,19 +16,22 @@
|
|
|
16
16
|
"!dist/test-setup.*",
|
|
17
17
|
"!dist/**/*.map",
|
|
18
18
|
"README.md",
|
|
19
|
+
"CHANGELOG.md",
|
|
19
20
|
"LICENSE"
|
|
20
21
|
],
|
|
21
22
|
"scripts": {
|
|
22
23
|
"clean": "node -e \"const fs=require('fs');fs.rmSync('dist',{recursive:true,force:true})\"",
|
|
23
|
-
"build": "pnpm run clean && tsc
|
|
24
|
-
"copy-schemas": "node -e \"const fs=require('fs');const path=require('path');const src='src/schemas';const dst='dist/schemas';if(!fs.existsSync(dst))fs.mkdirSync(dst,{recursive:true});fs.readdirSync(src).filter(f=>f.endsWith('.json')).forEach(f=>fs.copyFileSync(path.join(src,f),path.join(dst,f)))\"",
|
|
24
|
+
"build": "pnpm run clean && tsc",
|
|
25
25
|
"dev": "tsc --watch",
|
|
26
26
|
"start": "node dist/index.js",
|
|
27
27
|
"inspect": "npx @modelcontextprotocol/inspector node dist/index.js",
|
|
28
28
|
"setup": "node dist/setup.js",
|
|
29
29
|
"test": "vitest run",
|
|
30
30
|
"test:watch": "vitest",
|
|
31
|
-
"prepublishOnly": "pnpm run build"
|
|
31
|
+
"prepublishOnly": "pnpm run build",
|
|
32
|
+
"check": "node scripts/check-repo.mjs",
|
|
33
|
+
"contract": "node scripts/app-schema-contract.mjs",
|
|
34
|
+
"contract:sync": "node scripts/sync-app-schema.mjs"
|
|
32
35
|
},
|
|
33
36
|
"keywords": [
|
|
34
37
|
"mcp",
|
|
@@ -41,61 +44,58 @@
|
|
|
41
44
|
"windsurf",
|
|
42
45
|
"copilot",
|
|
43
46
|
"vscode",
|
|
44
|
-
"ai-tools",
|
|
45
47
|
"ai-agent",
|
|
46
48
|
"ai-coding",
|
|
47
49
|
"developer-tools",
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"knowledge-gaps",
|
|
65
|
-
"tech-radar",
|
|
50
|
+
"dependencies",
|
|
51
|
+
"dependency-upgrade",
|
|
52
|
+
"upgrade",
|
|
53
|
+
"changelog",
|
|
54
|
+
"breaking-changes",
|
|
55
|
+
"vulnerability",
|
|
56
|
+
"vulnerability-scanner",
|
|
57
|
+
"security",
|
|
58
|
+
"cve",
|
|
59
|
+
"osv",
|
|
60
|
+
"supply-chain",
|
|
61
|
+
"lockfile",
|
|
62
|
+
"npm",
|
|
63
|
+
"cargo",
|
|
64
|
+
"pypi",
|
|
65
|
+
"go-modules",
|
|
66
66
|
"decision-memory",
|
|
67
|
-
"dependency-tracking",
|
|
68
|
-
"security-advisories",
|
|
69
67
|
"agent-memory",
|
|
70
|
-
"
|
|
68
|
+
"privacy-first",
|
|
69
|
+
"local-first",
|
|
70
|
+
"offline"
|
|
71
71
|
],
|
|
72
72
|
"author": "4DA",
|
|
73
73
|
"license": "Apache-2.0",
|
|
74
74
|
"repository": {
|
|
75
75
|
"type": "git",
|
|
76
|
-
"url": "git+https://github.com/4DA-Systems/
|
|
77
|
-
"directory": "mcp-4da-server"
|
|
76
|
+
"url": "git+https://github.com/4DA-Systems/4da-mcp-server.git"
|
|
78
77
|
},
|
|
79
|
-
"homepage": "https://4da.ai",
|
|
78
|
+
"homepage": "https://4da.ai/mcp/",
|
|
80
79
|
"bugs": {
|
|
81
|
-
"url": "https://github.com/4DA-Systems/
|
|
80
|
+
"url": "https://github.com/4DA-Systems/4da-mcp-server/issues"
|
|
82
81
|
},
|
|
83
82
|
"dependencies": {
|
|
84
|
-
"better-sqlite3": "^12.9.0",
|
|
85
83
|
"@modelcontextprotocol/node": "^2.0.0",
|
|
86
84
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
85
|
+
"better-sqlite3": "^12.9.0",
|
|
87
86
|
"hono": "^4.12.34"
|
|
88
87
|
},
|
|
89
88
|
"devDependencies": {
|
|
90
89
|
"@types/better-sqlite3": "^7.6.11",
|
|
91
90
|
"@types/node": "^26.0.1",
|
|
92
|
-
"typescript": "^
|
|
91
|
+
"typescript": "^7.0.2",
|
|
93
92
|
"vite": "~7.3.5",
|
|
94
|
-
"vitest": "^
|
|
93
|
+
"vitest": "^5.0.1"
|
|
95
94
|
},
|
|
96
95
|
"engines": {
|
|
97
|
-
"node": ">=
|
|
96
|
+
"node": ">=22.0.0"
|
|
98
97
|
},
|
|
98
|
+
"packageManager": "pnpm@10.34.6",
|
|
99
99
|
"pnpm": {
|
|
100
100
|
"onlyBuiltDependencies": [
|
|
101
101
|
"better-sqlite3",
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "agent_memory",
|
|
3
|
-
"description": "Cross-agent persistent memory — store and recall discoveries, decisions, context, and warnings across sessions and tools.\n\nEnables AI agents to build institutional knowledge that persists beyond individual conversations. Supports storing, recalling by topic, filtering by tags, and retrieving recent entries. Call to store a discovery, decision, or warning worth keeping, or to recall prior context before starting work.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"action": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"enum": ["store", "recall", "recall_by_tags", "get_recent"],
|
|
10
|
-
"description": "Action to perform"
|
|
11
|
-
},
|
|
12
|
-
"session_id": {
|
|
13
|
-
"type": "string",
|
|
14
|
-
"description": "Session identifier (for store)"
|
|
15
|
-
},
|
|
16
|
-
"agent_type": {
|
|
17
|
-
"type": "string",
|
|
18
|
-
"description": "Agent identifier, e.g. claude_code, cursor, windsurf (for store)"
|
|
19
|
-
},
|
|
20
|
-
"memory_type": {
|
|
21
|
-
"type": "string",
|
|
22
|
-
"enum": ["discovery", "decision", "context", "warning", "preference"],
|
|
23
|
-
"description": "Type of memory (for store). Default: context"
|
|
24
|
-
},
|
|
25
|
-
"content": {
|
|
26
|
-
"type": "string",
|
|
27
|
-
"description": "Memory content text (for store)"
|
|
28
|
-
},
|
|
29
|
-
"tags": {
|
|
30
|
-
"type": "array",
|
|
31
|
-
"items": { "type": "string" },
|
|
32
|
-
"description": "Tags for categorization and retrieval"
|
|
33
|
-
},
|
|
34
|
-
"confidence": {
|
|
35
|
-
"type": "number",
|
|
36
|
-
"description": "Confidence level 0.0-1.0 (for store)"
|
|
37
|
-
},
|
|
38
|
-
"topic": {
|
|
39
|
-
"type": "string",
|
|
40
|
-
"description": "Topic to recall memories about (for recall)"
|
|
41
|
-
},
|
|
42
|
-
"limit": {
|
|
43
|
-
"type": "number",
|
|
44
|
-
"description": "Maximum memories to return (for recall/get_recent). Default: 10"
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
"required": ["action"]
|
|
48
|
-
}
|
|
49
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "check_decision_alignment",
|
|
3
|
-
"description": "Check if a technology or pattern aligns with active decisions before suggesting changes.\n\nPrevents AI agents from recommending technologies or patterns that contradict settled developer decisions. Returns alignment status and relevant decisions. Call BEFORE suggesting a major tech change, new library, or architecture shift, to avoid contradicting settled decisions.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"technology": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"description": "Technology name to check (e.g., 'postgresql', 'redis', 'graphql')"
|
|
10
|
-
},
|
|
11
|
-
"pattern": {
|
|
12
|
-
"type": "string",
|
|
13
|
-
"description": "Architecture pattern to check (e.g., 'microservices', 'event-driven')"
|
|
14
|
-
},
|
|
15
|
-
"context": {
|
|
16
|
-
"type": "string",
|
|
17
|
-
"description": "Additional context about the proposed change"
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
"required": ["technology"]
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "decision_memory",
|
|
3
|
-
"description": "Manage developer decisions — record, list, check alignment, update, or supersede.\n\nPersistent decision memory that tracks technology choices, architecture patterns, and workflow preferences. Prevents re-litigation of settled decisions across sessions. Call when the user makes, changes, or asks about a settled decision, choice, or convention.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"action": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"enum": ["record", "list", "check_alignment", "update", "supersede"],
|
|
10
|
-
"description": "Action to perform"
|
|
11
|
-
},
|
|
12
|
-
"decision_type": {
|
|
13
|
-
"type": "string",
|
|
14
|
-
"enum": ["tech_choice", "architecture", "workflow", "pattern", "dependency"],
|
|
15
|
-
"description": "Type of decision (for record)"
|
|
16
|
-
},
|
|
17
|
-
"subject": {
|
|
18
|
-
"type": "string",
|
|
19
|
-
"description": "Subject of the decision (e.g., 'database', 'auth-strategy')"
|
|
20
|
-
},
|
|
21
|
-
"decision": {
|
|
22
|
-
"type": "string",
|
|
23
|
-
"description": "The decision made (for record)"
|
|
24
|
-
},
|
|
25
|
-
"rationale": {
|
|
26
|
-
"type": "string",
|
|
27
|
-
"description": "Why this decision was made (for record)"
|
|
28
|
-
},
|
|
29
|
-
"alternatives_rejected": {
|
|
30
|
-
"type": "array",
|
|
31
|
-
"items": { "type": "string" },
|
|
32
|
-
"description": "Alternatives that were considered and rejected"
|
|
33
|
-
},
|
|
34
|
-
"context_tags": {
|
|
35
|
-
"type": "array",
|
|
36
|
-
"items": { "type": "string" },
|
|
37
|
-
"description": "Tags for filtering and retrieval"
|
|
38
|
-
},
|
|
39
|
-
"confidence": {
|
|
40
|
-
"type": "number",
|
|
41
|
-
"description": "Confidence level 0.0-1.0 (for record)"
|
|
42
|
-
},
|
|
43
|
-
"id": {
|
|
44
|
-
"type": "number",
|
|
45
|
-
"description": "Decision ID (for update/supersede)"
|
|
46
|
-
},
|
|
47
|
-
"technology": {
|
|
48
|
-
"type": "string",
|
|
49
|
-
"description": "Technology to check alignment for (check_alignment action)"
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
"required": ["action"]
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "dependency_health",
|
|
3
|
-
"description": "Assess health of project dependencies — version freshness, deprecation status, known CVEs across npm, Rust, Python, and Go. Auto-detects from lock files.\n\nReturns a health score (0-100), outdated/deprecated/vulnerable counts, and per-dependency details including semver distance and registry metadata.\n\nPrivacy: sends only package names (public manifest data). No code or personal data transmitted. Call when the user asks whether their dependencies are outdated, stale, deprecated, or need updating.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"include_dev": {
|
|
8
|
-
"type": "boolean",
|
|
9
|
-
"description": "Include devDependencies in health check. Default: false."
|
|
10
|
-
},
|
|
11
|
-
"ecosystem_filter": {
|
|
12
|
-
"type": "string",
|
|
13
|
-
"enum": ["npm", "crates.io", "PyPI", "Go"],
|
|
14
|
-
"description": "Only show dependencies from this ecosystem."
|
|
15
|
-
},
|
|
16
|
-
"sort_by": {
|
|
17
|
-
"type": "string",
|
|
18
|
-
"enum": ["risk", "name", "outdated"],
|
|
19
|
-
"description": "Sort order. 'risk' prioritizes vulnerable+deprecated+outdated. Default: risk."
|
|
20
|
-
},
|
|
21
|
-
"limit": {
|
|
22
|
-
"type": "number",
|
|
23
|
-
"description": "Maximum dependencies to return. Default: 50."
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "developer_dna",
|
|
3
|
-
"description": "Export your Developer DNA — a comprehensive profile of your tech identity built from project scans, explicit interests, and local interaction history. Includes primary stack, adjacent tech, top dependencies, engaged topics, blind spots, source engagement rates, and aggregate stats. Call when the user asks for a summary of their developer profile, identity, or tech fingerprint.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"include_blind_spots": {
|
|
8
|
-
"type": "boolean",
|
|
9
|
-
"description": "Include blind spot analysis (dependencies with stale engagement). Default: true",
|
|
10
|
-
"default": true
|
|
11
|
-
},
|
|
12
|
-
"max_dependencies": {
|
|
13
|
-
"type": "number",
|
|
14
|
-
"description": "Maximum dependencies to include. Default: 30",
|
|
15
|
-
"default": 30
|
|
16
|
-
},
|
|
17
|
-
"max_topics": {
|
|
18
|
-
"type": "number",
|
|
19
|
-
"description": "Maximum engaged topics to include. Default: 20",
|
|
20
|
-
"default": 20
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
"outputSchema": {
|
|
25
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
26
|
-
"title": "DeveloperDna",
|
|
27
|
-
"description": "Comprehensive developer identity profile built from local project data and engagement signals.",
|
|
28
|
-
"type": "object",
|
|
29
|
-
"required": [
|
|
30
|
-
"generated_at",
|
|
31
|
-
"primary_stack",
|
|
32
|
-
"adjacent_tech",
|
|
33
|
-
"top_dependencies",
|
|
34
|
-
"interests",
|
|
35
|
-
"top_engaged_topics",
|
|
36
|
-
"blind_spots",
|
|
37
|
-
"source_engagement",
|
|
38
|
-
"stats",
|
|
39
|
-
"identity_summary"
|
|
40
|
-
],
|
|
41
|
-
"properties": {
|
|
42
|
-
"generated_at": {
|
|
43
|
-
"type": "string",
|
|
44
|
-
"format": "date-time",
|
|
45
|
-
"description": "ISO 8601 timestamp when this DNA profile was generated."
|
|
46
|
-
},
|
|
47
|
-
"primary_stack": {
|
|
48
|
-
"type": "array",
|
|
49
|
-
"items": { "type": "string" },
|
|
50
|
-
"description": "Technologies from the user's declared tech stack (user_identity + tech_stack tables)."
|
|
51
|
-
},
|
|
52
|
-
"adjacent_tech": {
|
|
53
|
-
"type": "array",
|
|
54
|
-
"items": { "type": "string" },
|
|
55
|
-
"description": "Technologies detected by ACE in local projects but not in the declared stack."
|
|
56
|
-
},
|
|
57
|
-
"top_dependencies": {
|
|
58
|
-
"type": "array",
|
|
59
|
-
"items": { "$ref": "#/outputSchema/definitions/DependencyEntry" },
|
|
60
|
-
"description": "Most-used project dependencies across scanned projects."
|
|
61
|
-
},
|
|
62
|
-
"interests": {
|
|
63
|
-
"type": "array",
|
|
64
|
-
"items": { "type": "string" },
|
|
65
|
-
"description": "Explicit interest topics declared by the user."
|
|
66
|
-
},
|
|
67
|
-
"top_engaged_topics": {
|
|
68
|
-
"type": "array",
|
|
69
|
-
"items": { "$ref": "#/outputSchema/definitions/EngagedTopic" },
|
|
70
|
-
"description": "Topics with highest positive engagement from interaction data."
|
|
71
|
-
},
|
|
72
|
-
"blind_spots": {
|
|
73
|
-
"type": "array",
|
|
74
|
-
"items": { "$ref": "#/outputSchema/definitions/BlindSpotEntry" },
|
|
75
|
-
"description": "Dependencies in the codebase with stale or zero engagement."
|
|
76
|
-
},
|
|
77
|
-
"source_engagement": {
|
|
78
|
-
"type": "array",
|
|
79
|
-
"items": { "$ref": "#/outputSchema/definitions/SourceEngagement" },
|
|
80
|
-
"description": "Engagement rates broken down by content source type."
|
|
81
|
-
},
|
|
82
|
-
"stats": {
|
|
83
|
-
"$ref": "#/outputSchema/definitions/DnaStats",
|
|
84
|
-
"description": "Aggregate statistics about the developer's 4DA usage."
|
|
85
|
-
},
|
|
86
|
-
"identity_summary": {
|
|
87
|
-
"type": "string",
|
|
88
|
-
"description": "Human-readable one-paragraph summary of the developer's technical identity."
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
"definitions": {
|
|
92
|
-
"DependencyEntry": {
|
|
93
|
-
"type": "object",
|
|
94
|
-
"required": ["name", "project_path"],
|
|
95
|
-
"properties": {
|
|
96
|
-
"name": {
|
|
97
|
-
"type": "string",
|
|
98
|
-
"description": "Package or library name."
|
|
99
|
-
},
|
|
100
|
-
"project_path": {
|
|
101
|
-
"type": "string",
|
|
102
|
-
"description": "Path to the project that uses this dependency."
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
"EngagedTopic": {
|
|
107
|
-
"type": "object",
|
|
108
|
-
"required": ["topic", "interactions", "percent_of_total"],
|
|
109
|
-
"properties": {
|
|
110
|
-
"topic": {
|
|
111
|
-
"type": "string",
|
|
112
|
-
"description": "The topic name."
|
|
113
|
-
},
|
|
114
|
-
"interactions": {
|
|
115
|
-
"type": "integer",
|
|
116
|
-
"minimum": 0,
|
|
117
|
-
"description": "Total positive interaction count for this topic."
|
|
118
|
-
},
|
|
119
|
-
"percent_of_total": {
|
|
120
|
-
"type": "number",
|
|
121
|
-
"minimum": 0,
|
|
122
|
-
"maximum": 100,
|
|
123
|
-
"description": "Percentage of total interactions attributed to this topic."
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
"BlindSpotEntry": {
|
|
128
|
-
"type": "object",
|
|
129
|
-
"required": ["dependency", "severity", "days_stale"],
|
|
130
|
-
"properties": {
|
|
131
|
-
"dependency": {
|
|
132
|
-
"type": "string",
|
|
133
|
-
"description": "The dependency or technology name."
|
|
134
|
-
},
|
|
135
|
-
"severity": {
|
|
136
|
-
"type": "string",
|
|
137
|
-
"enum": ["critical", "high", "medium", "low"],
|
|
138
|
-
"description": "How urgent the knowledge gap is."
|
|
139
|
-
},
|
|
140
|
-
"days_stale": {
|
|
141
|
-
"type": "integer",
|
|
142
|
-
"minimum": 0,
|
|
143
|
-
"description": "Days since last engagement with content about this dependency."
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
"SourceEngagement": {
|
|
148
|
-
"type": "object",
|
|
149
|
-
"required": ["source_type", "items_seen", "items_saved", "engagement_rate"],
|
|
150
|
-
"properties": {
|
|
151
|
-
"source_type": {
|
|
152
|
-
"type": "string",
|
|
153
|
-
"description": "Content source identifier (e.g., hackernews, reddit, arxiv, rss)."
|
|
154
|
-
},
|
|
155
|
-
"items_seen": {
|
|
156
|
-
"type": "integer",
|
|
157
|
-
"minimum": 0,
|
|
158
|
-
"description": "Total items fetched from this source."
|
|
159
|
-
},
|
|
160
|
-
"items_saved": {
|
|
161
|
-
"type": "integer",
|
|
162
|
-
"minimum": 0,
|
|
163
|
-
"description": "Items the user explicitly saved from this source."
|
|
164
|
-
},
|
|
165
|
-
"engagement_rate": {
|
|
166
|
-
"type": "number",
|
|
167
|
-
"minimum": 0,
|
|
168
|
-
"maximum": 1,
|
|
169
|
-
"description": "Ratio of items_saved to items_seen (0..1)."
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
},
|
|
173
|
-
"DnaStats": {
|
|
174
|
-
"type": "object",
|
|
175
|
-
"required": [
|
|
176
|
-
"total_items_processed",
|
|
177
|
-
"total_relevant",
|
|
178
|
-
"rejection_rate",
|
|
179
|
-
"project_count",
|
|
180
|
-
"dependency_count",
|
|
181
|
-
"days_active"
|
|
182
|
-
],
|
|
183
|
-
"properties": {
|
|
184
|
-
"total_items_processed": {
|
|
185
|
-
"type": "integer",
|
|
186
|
-
"minimum": 0,
|
|
187
|
-
"description": "Total content items ingested by 4DA."
|
|
188
|
-
},
|
|
189
|
-
"total_relevant": {
|
|
190
|
-
"type": "integer",
|
|
191
|
-
"minimum": 0,
|
|
192
|
-
"description": "Items that passed the relevance threshold."
|
|
193
|
-
},
|
|
194
|
-
"rejection_rate": {
|
|
195
|
-
"type": "number",
|
|
196
|
-
"minimum": 0,
|
|
197
|
-
"maximum": 1,
|
|
198
|
-
"description": "Fraction of items rejected as irrelevant (0..1)."
|
|
199
|
-
},
|
|
200
|
-
"project_count": {
|
|
201
|
-
"type": "integer",
|
|
202
|
-
"minimum": 0,
|
|
203
|
-
"description": "Number of distinct projects scanned by ACE."
|
|
204
|
-
},
|
|
205
|
-
"dependency_count": {
|
|
206
|
-
"type": "integer",
|
|
207
|
-
"minimum": 0,
|
|
208
|
-
"description": "Total unique dependencies across all projects."
|
|
209
|
-
},
|
|
210
|
-
"days_active": {
|
|
211
|
-
"type": "integer",
|
|
212
|
-
"minimum": 0,
|
|
213
|
-
"description": "Days since the earliest source item was ingested."
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|