@kage-core/kage-graph-mcp 1.1.14 → 1.1.16
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 +37 -0
- package/dist/kernel.js +25 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -9,6 +9,28 @@ This package exposes two surfaces:
|
|
|
9
9
|
|
|
10
10
|
## Latest Release
|
|
11
11
|
|
|
12
|
+
`1.1.16` fixes the guarded release helper's npm verification step:
|
|
13
|
+
|
|
14
|
+
- exact-version `npm view` checks now retry with backoff after publish so npm
|
|
15
|
+
registry propagation does not make a successful publish look failed.
|
|
16
|
+
- the release helper is maintainer-only repo tooling: public package metadata no
|
|
17
|
+
longer exposes npm release scripts, and `dist/release.js` is excluded from the
|
|
18
|
+
published tarball.
|
|
19
|
+
|
|
20
|
+
`1.1.15` hardened the npm release path and memory-only review flow:
|
|
21
|
+
|
|
22
|
+
- the source-repo maintainer helper can run the guarded release checks without
|
|
23
|
+
publishing, or push/publish/smoke-test when explicitly invoked from a built
|
|
24
|
+
checkout.
|
|
25
|
+
- it requires a clean worktree, fetches the remote branch, verifies local `HEAD`
|
|
26
|
+
contains `origin/<branch>`, runs tests and `npm pack --dry-run`, pushes the
|
|
27
|
+
branch before publishing, publishes with `--access public`, verifies npm
|
|
28
|
+
registry metadata, and performs a smoke install.
|
|
29
|
+
- all git steps run with `GIT_EDITOR=true` so agent sessions cannot get stuck in
|
|
30
|
+
an interactive commit or rebase editor.
|
|
31
|
+
- `kage propose --from-diff` now includes repo memory packet-only changes from
|
|
32
|
+
`.agent_memory/packets/*.json` and `.agent_memory/pending/*.json`.
|
|
33
|
+
|
|
12
34
|
`1.1.14` publishes the memory/code graph trust and retrieval pass:
|
|
13
35
|
|
|
14
36
|
- recall now uses vectorless BM25 lexical ranking with graph, path/type/tag,
|
|
@@ -42,6 +64,21 @@ npm install
|
|
|
42
64
|
npm run build
|
|
43
65
|
```
|
|
44
66
|
|
|
67
|
+
Publishing from the source repo should use the guarded maintainer helper after
|
|
68
|
+
the release commit is ready. It is intentionally not exposed as a public npm
|
|
69
|
+
script or included in the published tarball:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npm run build --prefix mcp
|
|
73
|
+
cd mcp
|
|
74
|
+
node dist/release.js --dry-run
|
|
75
|
+
node dist/release.js --publish --push --smoke
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
The script fetches the current branch and blocks if the remote branch is not an
|
|
79
|
+
ancestor of local `HEAD`, which prevents publishing an npm version from a branch
|
|
80
|
+
that cannot be pushed cleanly.
|
|
81
|
+
|
|
45
82
|
## CLI
|
|
46
83
|
|
|
47
84
|
```bash
|
package/dist/kernel.js
CHANGED
|
@@ -911,7 +911,12 @@ const NOISE_PATH_PREFIXES = [
|
|
|
911
911
|
".pub-cache/",
|
|
912
912
|
"elm-stuff/",
|
|
913
913
|
];
|
|
914
|
+
function isReviewableMemoryPath(filePath) {
|
|
915
|
+
return /^\.agent_memory\/(?:packets|pending)\/[^/]+\.json$/.test(filePath);
|
|
916
|
+
}
|
|
914
917
|
function isNoisePath(filePath) {
|
|
918
|
+
if (isReviewableMemoryPath(filePath))
|
|
919
|
+
return false;
|
|
915
920
|
return NOISE_PATH_PREFIXES.some((prefix) => filePath.startsWith(prefix));
|
|
916
921
|
}
|
|
917
922
|
function parsePorcelainStatus(status) {
|
|
@@ -926,7 +931,26 @@ function parsePorcelainPath(line) {
|
|
|
926
931
|
const raw = line.length > 2 && line[2] === " " ? line.slice(3) : line.slice(2);
|
|
927
932
|
return raw.trim();
|
|
928
933
|
}
|
|
934
|
+
function branchDiffStat(projectDir, changedFiles) {
|
|
935
|
+
const diffStats = [
|
|
936
|
+
readGit(projectDir, ["diff", "--stat"]),
|
|
937
|
+
readGit(projectDir, ["diff", "--cached", "--stat"]),
|
|
938
|
+
].filter(Boolean).join("\n").trim();
|
|
939
|
+
const untracked = new Set((readGit(projectDir, ["ls-files", "--others", "--exclude-standard"]) ?? "")
|
|
940
|
+
.split(/\r?\n/)
|
|
941
|
+
.map((path) => path.trim())
|
|
942
|
+
.filter(Boolean)
|
|
943
|
+
.filter((path) => changedFiles.includes(path)));
|
|
944
|
+
const untrackedStats = [...untracked]
|
|
945
|
+
.filter((file) => !diffStats.includes(file))
|
|
946
|
+
.map((file) => `${file} | untracked`)
|
|
947
|
+
.join("\n");
|
|
948
|
+
return [diffStats, untrackedStats].filter(Boolean).join("\n").trim()
|
|
949
|
+
|| changedFiles.map((file) => `${file} | changed`).join("\n");
|
|
950
|
+
}
|
|
929
951
|
function shouldSkipRepoMemoryPath(relativePath) {
|
|
952
|
+
if (isReviewableMemoryPath(relativePath))
|
|
953
|
+
return false;
|
|
930
954
|
return isNoisePath(relativePath) || shouldSkipCodePath(relativePath);
|
|
931
955
|
}
|
|
932
956
|
function migrateLegacyMarkdown(projectDir) {
|
|
@@ -4822,7 +4846,7 @@ function proposeFromDiff(projectDir) {
|
|
|
4822
4846
|
const changedFiles = parsePorcelainStatus(status);
|
|
4823
4847
|
if (changedFiles.length === 0)
|
|
4824
4848
|
return { ok: false, changedFiles: [], errors: ["No changed files found."] };
|
|
4825
|
-
const stat =
|
|
4849
|
+
const stat = branchDiffStat(projectDir, changedFiles);
|
|
4826
4850
|
const branch = gitBranch(projectDir);
|
|
4827
4851
|
const summary = {
|
|
4828
4852
|
schema_version: 1,
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kage-core/kage-graph-mcp",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.16",
|
|
4
4
|
"description": "Local-first repo memory, code graph, and recall MCP server for coding agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist/**/*.js",
|
|
8
8
|
"!dist/**/*.test.js",
|
|
9
|
+
"!dist/release.js",
|
|
9
10
|
"viewer/**/*",
|
|
10
11
|
"!viewer/graphs/*.json",
|
|
11
12
|
"README.md"
|