@kage-core/kage-graph-mcp 2.3.2 → 2.4.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/dist/index.js +47 -36
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -114,6 +114,7 @@ function listTools() {
|
|
|
114
114
|
// separate deferred schemas. Cuts session start from 4 schema loads to 1.
|
|
115
115
|
name: "kage_context",
|
|
116
116
|
description: "Primary kage entry point. Validates memory health, recalls relevant packets, and queries both the code graph and knowledge graph — all in one call. Call this at the start of every task; it answers caller/usage questions from the code graph too, so you rarely need a separate graph tool.",
|
|
117
|
+
annotations: { title: "Recall verified memory and query the code/knowledge graph", readOnlyHint: true },
|
|
117
118
|
inputSchema: {
|
|
118
119
|
type: "object",
|
|
119
120
|
properties: {
|
|
@@ -218,10 +219,11 @@ function listTools() {
|
|
|
218
219
|
{
|
|
219
220
|
name: "kage_risk",
|
|
220
221
|
description: "Assess modification risk for files using Kage's code graph plus local git history: dependents, impact surface, churn, ownership, co-change partners, and test gaps. Use before editing hotspot or shared files.",
|
|
222
|
+
annotations: { title: "Assess file modification risk", readOnlyHint: true },
|
|
221
223
|
inputSchema: {
|
|
222
224
|
type: "object",
|
|
223
225
|
properties: {
|
|
224
|
-
project_dir: { type: "string" },
|
|
226
|
+
project_dir: { type: "string", description: "Absolute path to the repository root." },
|
|
225
227
|
targets: { type: "array", items: { type: "string" }, description: "File paths to assess" },
|
|
226
228
|
changed_files: { type: "array", items: { type: "string" }, description: "Optional PR/branch changed files. If targets is omitted, these are assessed." },
|
|
227
229
|
},
|
|
@@ -231,10 +233,11 @@ function listTools() {
|
|
|
231
233
|
{
|
|
232
234
|
name: "kage_dependency_path",
|
|
233
235
|
description: "Find how two files are connected in Kage's source-derived code graph. Reports direct dependency direction, reverse impact direction, or undirected graph connection.",
|
|
236
|
+
annotations: { title: "Trace the dependency path between two files", readOnlyHint: true },
|
|
234
237
|
inputSchema: {
|
|
235
238
|
type: "object",
|
|
236
239
|
properties: {
|
|
237
|
-
project_dir: { type: "string" },
|
|
240
|
+
project_dir: { type: "string", description: "Absolute path to the repository root." },
|
|
238
241
|
from: { type: "string", description: "Source file path or unique suffix" },
|
|
239
242
|
to: { type: "string", description: "Target file path or unique suffix" },
|
|
240
243
|
},
|
|
@@ -352,11 +355,12 @@ function listTools() {
|
|
|
352
355
|
},
|
|
353
356
|
{
|
|
354
357
|
name: "kage_decisions",
|
|
355
|
-
description: "Summarize
|
|
358
|
+
description: "Summarize the repo's 'why' memory at a glance: the decisions, gotchas, runbooks, conventions, and code explanations Kage has captured, plus which high-traffic code paths still have no decision memory. Use it to brief yourself on a repo before changing it, or to audit where institutional knowledge is thin or going stale. Read-only: returns grouped entries with titles, types, cited file paths, and call-outs for weak, stale, or undocumented hot paths. Does not modify any memory.",
|
|
359
|
+
annotations: { title: "Summarize the repo's decision memory", readOnlyHint: true },
|
|
356
360
|
inputSchema: {
|
|
357
361
|
type: "object",
|
|
358
362
|
properties: {
|
|
359
|
-
project_dir: { type: "string" },
|
|
363
|
+
project_dir: { type: "string", description: "Absolute path to the repository root to summarize." },
|
|
360
364
|
},
|
|
361
365
|
required: ["project_dir"],
|
|
362
366
|
},
|
|
@@ -386,12 +390,13 @@ function listTools() {
|
|
|
386
390
|
{
|
|
387
391
|
name: "kage_docs_search",
|
|
388
392
|
description: "Search this repo's OWN committed documentation (README, docs/**, *.md, common doc dirs — including any framework/API docs checked into the repo). BM25 over heading-anchored chunks from .agent_memory/indexes/docs-index.json. Returns ranked doc hits with doc_path, heading, line, and snippet. This indexes only files on disk in the project, never the internet.",
|
|
393
|
+
annotations: { title: "Search the repo's own committed docs", readOnlyHint: true },
|
|
389
394
|
inputSchema: {
|
|
390
395
|
type: "object",
|
|
391
396
|
properties: {
|
|
392
|
-
query: { type: "string" },
|
|
393
|
-
project_dir: { type: "string" },
|
|
394
|
-
limit: { type: "number" },
|
|
397
|
+
query: { type: "string", description: "Search terms to match against the repo's documentation." },
|
|
398
|
+
project_dir: { type: "string", description: "Absolute path to the repository root." },
|
|
399
|
+
limit: { type: "number", description: "Max ranked doc hits to return (default 5)." },
|
|
395
400
|
},
|
|
396
401
|
required: ["query", "project_dir"],
|
|
397
402
|
},
|
|
@@ -489,10 +494,11 @@ function listTools() {
|
|
|
489
494
|
{
|
|
490
495
|
name: "kage_refresh",
|
|
491
496
|
description: "Rebuild repo indexes, code graph, memory graph, metrics, and stale-memory metadata. Agents should run this after meaningful file/content changes before PR checks; push-only or same-tree commits do not need another refresh. On non-default git branches metadata-only packet rewrites are skipped (quiet refresh) to avoid merge conflicts; pass force to persist them anyway.",
|
|
497
|
+
annotations: { title: "Rebuild Kage indexes and graphs", readOnlyHint: false, idempotentHint: true },
|
|
492
498
|
inputSchema: {
|
|
493
499
|
type: "object",
|
|
494
500
|
properties: {
|
|
495
|
-
project_dir: { type: "string" },
|
|
501
|
+
project_dir: { type: "string", description: "Absolute path to the repository root." },
|
|
496
502
|
force: { type: "boolean", description: "Persist packet metadata rewrites even on a non-default branch" },
|
|
497
503
|
},
|
|
498
504
|
required: ["project_dir"],
|
|
@@ -521,10 +527,11 @@ function listTools() {
|
|
|
521
527
|
{
|
|
522
528
|
name: "kage_pr_check",
|
|
523
529
|
description: "Check whether repo memory, code graph, memory graph, and stale-memory state are ready for merge. Leads with a human summary of team memories invalidated by the current change — relay it to the developer.",
|
|
530
|
+
annotations: { title: "Check memory readiness for merge", readOnlyHint: true },
|
|
524
531
|
inputSchema: {
|
|
525
532
|
type: "object",
|
|
526
533
|
properties: {
|
|
527
|
-
project_dir: { type: "string" },
|
|
534
|
+
project_dir: { type: "string", description: "Absolute path to the repository root." },
|
|
528
535
|
},
|
|
529
536
|
required: ["project_dir"],
|
|
530
537
|
},
|
|
@@ -612,14 +619,15 @@ function listTools() {
|
|
|
612
619
|
},
|
|
613
620
|
{
|
|
614
621
|
name: "kage_supersede",
|
|
615
|
-
description: "
|
|
622
|
+
description: "Replace one repo-local memory packet with a newer one that corrects or obsoletes it. Marks the old packet superseded, links it to the replacement, and writes bidirectional lineage edges so the history stays traceable. Use this instead of deleting when new knowledge updates an old fact, or to resolve a contradiction surfaced by kage_conflicts. Mutates both packets on disk: the superseded packet is withheld from recall but kept for lineage.",
|
|
623
|
+
annotations: { title: "Supersede a memory packet with a newer one", readOnlyHint: false, destructiveHint: false, idempotentHint: true },
|
|
616
624
|
inputSchema: {
|
|
617
625
|
type: "object",
|
|
618
626
|
properties: {
|
|
619
|
-
project_dir: { type: "string" },
|
|
620
|
-
packet_id: { type: "string" },
|
|
621
|
-
replacement_packet_id: { type: "string" },
|
|
622
|
-
reason: { type: "string" },
|
|
627
|
+
project_dir: { type: "string", description: "Absolute path to the repository root." },
|
|
628
|
+
packet_id: { type: "string", description: "Id of the existing packet to retire (the one being replaced)." },
|
|
629
|
+
replacement_packet_id: { type: "string", description: "Id of the newer packet that wins and stays active." },
|
|
630
|
+
reason: { type: "string", description: "Optional human note recorded on the lineage edge explaining why it was superseded." },
|
|
623
631
|
},
|
|
624
632
|
required: ["project_dir", "packet_id", "replacement_packet_id"],
|
|
625
633
|
},
|
|
@@ -638,12 +646,13 @@ function listTools() {
|
|
|
638
646
|
{
|
|
639
647
|
name: "kage_skills",
|
|
640
648
|
description: "Codify durable, verified repo memory (runbooks, workflows, actionable decisions) into git-native SKILL.md files under .claude/skills/ that every teammate's agent auto-loads. Only grounded, non-stale packets become skills. Pass dry_run to preview without writing. dir overrides the output directory.",
|
|
649
|
+
annotations: { title: "Codify verified memory into agent skills", readOnlyHint: false, idempotentHint: true },
|
|
641
650
|
inputSchema: {
|
|
642
651
|
type: "object",
|
|
643
652
|
properties: {
|
|
644
|
-
project_dir: { type: "string" },
|
|
645
|
-
dry_run: { type: "boolean" },
|
|
646
|
-
dir: { type: "string" },
|
|
653
|
+
project_dir: { type: "string", description: "Absolute path to the repository root." },
|
|
654
|
+
dry_run: { type: "boolean", description: "Preview which skills would be written without creating any files." },
|
|
655
|
+
dir: { type: "string", description: "Override the output directory (default .claude/skills/)." },
|
|
647
656
|
},
|
|
648
657
|
required: ["project_dir"],
|
|
649
658
|
},
|
|
@@ -735,21 +744,22 @@ function listTools() {
|
|
|
735
744
|
},
|
|
736
745
|
{
|
|
737
746
|
name: "kage_learn",
|
|
738
|
-
description: "Capture
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
747
|
+
description: "Capture a durable, reusable learning from the current session as a verified repo-local memory packet (committed under .agent_memory/, shared with the team via git). Use it the moment you discover something a future session should know: a decision and its rationale, a bug's root cause and fix, a convention, or a setup step. Prefer it over diff-based proposals when you already know what was learned. The write is rejected if every cited path is missing from the repo (set allow_missing_paths for a file you are about to create), and secrets/PII are scanned out before writing. Returns the new packet id plus any contradiction warnings against existing memory.",
|
|
748
|
+
annotations: { title: "Capture a verified learning to repo memory", readOnlyHint: false },
|
|
749
|
+
inputSchema: {
|
|
750
|
+
type: "object",
|
|
751
|
+
properties: {
|
|
752
|
+
project_dir: { type: "string", description: "Absolute path to the repository root." },
|
|
753
|
+
learning: { type: "string", description: "The insight to store, in full sentences: what was learned and why it matters to a future session." },
|
|
754
|
+
title: { type: "string", description: "Short headline for the packet. Derived from the learning if omitted." },
|
|
755
|
+
type: { type: "string", description: "Memory type: decision, bug_fix, runbook, convention, gotcha, workflow, code_explanation. Inferred if omitted." },
|
|
756
|
+
evidence: { type: "string", description: "How the learning was confirmed (e.g. test output, a reproduced behavior)." },
|
|
757
|
+
verified_by: { type: "string", description: "What verified it (e.g. a command run, a passing test, a reviewer)." },
|
|
758
|
+
tags: { type: "array", items: { type: "string" }, description: "Optional keywords to aid future recall." },
|
|
759
|
+
paths: { type: "array", items: { type: "string" }, description: "Repo files this memory is about; used to verify the citation now and to recall the memory when those files are touched later." },
|
|
760
|
+
stack: { type: "array", items: { type: "string" }, description: "Optional technologies/frameworks the learning relates to." },
|
|
761
|
+
graph_nodes: { type: "array", items: { type: "string" }, description: "Optional code-graph symbol or file ids this memory is grounded to." },
|
|
762
|
+
allow_missing_paths: { type: "boolean", description: "Allow the write even if cited paths do not exist yet (e.g. a file you are about to create)." },
|
|
753
763
|
discovery_tokens: { type: "number", description: "Approximate token cost of producing this knowledge (exploration + reasoning). Stored on the packet so recall receipts can report replay value; a conservative per-type default is estimated when omitted." },
|
|
754
764
|
},
|
|
755
765
|
required: ["project_dir", "learning"],
|
|
@@ -872,13 +882,14 @@ function listTools() {
|
|
|
872
882
|
},
|
|
873
883
|
{
|
|
874
884
|
name: "kage_feedback",
|
|
875
|
-
description: "Record
|
|
885
|
+
description: "Record how useful a recalled repo-local memory packet was, which tunes Kage's trust and future recall. 'helpful' reinforces the packet, 'wrong' flags it as disputed, and 'stale' marks it for re-verification and withholds it from recall until refreshed. Use it right after a recalled packet helped you, misled you, or no longer matched the code. Mutates the packet's quality signals on disk.",
|
|
886
|
+
annotations: { title: "Rate a recalled memory packet", readOnlyHint: false },
|
|
876
887
|
inputSchema: {
|
|
877
888
|
type: "object",
|
|
878
889
|
properties: {
|
|
879
|
-
project_dir: { type: "string" },
|
|
880
|
-
packet_id: { type: "string" },
|
|
881
|
-
kind: { type: "string", enum: ["helpful", "wrong", "stale"] },
|
|
890
|
+
project_dir: { type: "string", description: "Absolute path to the repository root." },
|
|
891
|
+
packet_id: { type: "string", description: "Id of the memory packet you are rating." },
|
|
892
|
+
kind: { type: "string", enum: ["helpful", "wrong", "stale"], description: "helpful = it was accurate and useful; wrong = it was incorrect (flag as disputed); stale = it no longer matches the code (mark for re-verification)." },
|
|
882
893
|
},
|
|
883
894
|
required: ["project_dir", "packet_id", "kind"],
|
|
884
895
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kage-core/kage-graph-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Team memory for coding agents: captures the decisions, runbooks, and bug fixes that get lost, verified against your code and shared via git. MCP server, zero deps, no account.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|