memory-eternal 0.28.1 → 0.30.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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://anthropic.com/claude-code/plugin.schema.json",
3
3
  "name": "memory-eternal",
4
- "version": "0.28.1",
4
+ "version": "0.30.0",
5
5
  "description": "记忆核心(Memory Eternal):对话结束后自动沉淀知识卡到本地记忆库(~/.dsh/memory-vault),支持检索 / 召回 / 审核中心。",
6
6
  "author": {
7
7
  "name": "EternalNight996",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memory-eternal",
3
- "version": "0.28.1",
3
+ "version": "0.30.0",
4
4
  "description": "记忆核心(Memory Eternal):对话结束后自动沉淀知识卡到本地记忆库(~/.dsh/memory-vault),支持检索 / 召回 / 审核中心。",
5
5
  "author": {
6
6
  "name": "EternalNight996",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memory-eternal",
3
- "version": "0.28.1",
3
+ "version": "0.30.0",
4
4
  "description": "记忆核心(Memory Eternal):对话结束后自动沉淀知识卡到本地记忆库(~/.dsh/memory-vault),支持检索 / 召回 / 审核中心。",
5
5
  "author": {
6
6
  "name": "EternalNight996",
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  [![GitHub stars](https://img.shields.io/github/stars/EternalNight996/memory-eternal?style=flat)](https://github.com/EternalNight996/memory-eternal/stargazers)
17
17
  [![npm](https://img.shields.io/npm/v/memory-eternal)](https://www.npmjs.com/package/memory-eternal)
18
- [![release](https://img.shields.io/badge/release-v0.28.1-FF7A45)](https://github.com/EternalNight996/memory-eternal/releases)
18
+ [![release](https://img.shields.io/badge/release-v0.30.0-FF7A45)](https://github.com/EternalNight996/memory-eternal/releases)
19
19
  [![license](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
20
20
 
21
21
  **English (default)** · [简体中文](README.zh-CN.md)
@@ -257,11 +257,11 @@ Not everything should be injected into every session. Core memory is the small,
257
257
  |:---:|:---:|
258
258
  | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/group-qr.jpg" width="240" alt="QQ group QR" /> | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/group-wechat.jpg" width="240" alt="WeChat group QR" /> |
259
259
 
260
- **Buy the author a coffee (optional):**
260
+ **Buy the author a coffee (optional) — WeChat or Alipay:**
261
261
 
262
- | WeChat Pay | WeChat Reward |
263
- |:---:|:---:|
264
- | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/wechat-pay.jpg" width="200" alt="WeChat Pay QR" /> | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/wechat-reward.jpg" width="200" alt="WeChat Reward QR" /> |
262
+ | WeChat Pay | WeChat Reward | Alipay |
263
+ |:---:|:---:|:---:|
264
+ | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/wechat-pay.jpg" width="200" alt="WeChat Pay QR" /> | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/wechat-reward.jpg" width="200" alt="WeChat Reward QR" /> | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/alipay.jpg" width="200" alt="Alipay QR" /> |
265
265
 
266
266
  > Sponsorship is optional; the plugin stays MIT and free. See [SPONSOR.md](SPONSOR.md).
267
267
 
package/README.zh-CN.md CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  [![GitHub stars](https://img.shields.io/github/stars/EternalNight996/memory-eternal?style=flat)](https://github.com/EternalNight996/memory-eternal/stargazers)
17
17
  [![npm](https://img.shields.io/npm/v/memory-eternal)](https://www.npmjs.com/package/memory-eternal)
18
- [![release](https://img.shields.io/badge/release-v0.28.1-FF7A45)](https://github.com/EternalNight996/memory-eternal/releases)
18
+ [![release](https://img.shields.io/badge/release-v0.30.0-FF7A45)](https://github.com/EternalNight996/memory-eternal/releases)
19
19
  [![license](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
20
20
 
21
21
  [English (default)](README.md) · **简体中文(镜像)**
@@ -257,11 +257,11 @@ dsh-memory ledger --days 30 --json # 召回注入 / 沉淀调用 / 有用
257
257
  |:---:|:---:|
258
258
  | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/group-qr.jpg" width="240" alt="QQ 群二维码" /> | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/group-wechat.jpg" width="240" alt="微信群二维码" /> |
259
259
 
260
- **如果这个插件帮你省了时间,可以请作者喝杯咖啡(两个码任选其一):**
260
+ **如果这个插件帮你省了时间,可以请作者喝杯咖啡(微信 / 支付宝任选其一):**
261
261
 
262
- | 微信收款码 | 微信赞赏码 |
263
- |:---:|:---:|
264
- | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/wechat-pay.jpg" width="200" alt="微信收款码" /> | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/wechat-reward.jpg" width="200" alt="微信赞赏码" /> |
262
+ | 微信收款码 | 微信赞赏码 | 支付宝 |
263
+ |:---:|:---:|:---:|
264
+ | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/wechat-pay.jpg" width="200" alt="微信收款码" /> | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/wechat-reward.jpg" width="200" alt="微信赞赏码" /> | <img src="https://raw.githubusercontent.com/EternalNight996/memory-eternal/main/assets/support/alipay.jpg" width="200" alt="支付宝收款码" /> |
265
265
 
266
266
  > 打赏完全自愿,不影响任何功能;插件本体始终开源免费(MIT)。详见 [SPONSOR.md](SPONSOR.md)。
267
267
 
@@ -2,7 +2,7 @@
2
2
  "name": "memory-eternal",
3
3
  "displayName": "Memory Atlas",
4
4
  "description": "Memory-eternal: open the local Memory Atlas library, review queue and knowledge graph in a Cursor/VS Code webview.",
5
- "version": "0.28.1",
5
+ "version": "0.30.0",
6
6
  "publisher": "EternalNight996",
7
7
  "license": "MIT",
8
8
  "repository": {
@@ -2,7 +2,7 @@
2
2
  "$schema": "urn:dsh-std:community-draft:dsh-plugin:0.15",
3
3
  "id": "memory-eternal-tui",
4
4
  "name": "memory-eternal-tui",
5
- "version": "0.28.1",
5
+ "version": "0.30.0",
6
6
  "manifestVersion": "0.15",
7
7
  "description": "Open Memory Atlas from dsh-TUI: native /audit scene plus browser launcher.",
8
8
  "facets": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memory-eternal-tui",
3
- "version": "0.28.1",
3
+ "version": "0.30.0",
4
4
  "description": "Memory Atlas for dsh-TUI: /audit scene with reason/severity, batch confirmation and reject reasons.",
5
5
  "type": "module",
6
6
  "main": "main.js",
package/lib/api.js CHANGED
@@ -17,7 +17,7 @@ import fs, { readFileSync } from 'node:fs'
17
17
  import path from 'node:path'
18
18
  import { fileURLToPath } from 'node:url'
19
19
  import { spawn } from 'node:child_process'
20
- import { listCards, countCards, readCard, search, searchAll, graph, graphAll, graphLevel, LEVEL_ERR_PATH, LEVEL_ERR_STALE, overview, exportCards, deleteCard, writeCard, parseCard, stats, optimizeCandidates, optimizeApply, addFeedback, dailyCounts, mergeCards, ensureVault, auditQueue, recycleList, purgeExpired, purgeAllRecycle, setCardStatus, setCardKind, restoreCard, mainStoreBodies, updateCardContent, reviseCard } from './vault.js'
20
+ import { listCards, countCards, readCard, search, searchAll, graph, graphAll, graphLevel, topDegreeSubgraph, LEVEL_ERR_PATH, LEVEL_ERR_STALE, overview, exportCards, deleteCard, writeCard, parseCard, stats, optimizeCandidates, optimizeApply, addFeedback, dailyCounts, mergeCards, ensureVault, auditQueue, recycleList, purgeExpired, purgeAllRecycle, setCardStatus, setCardKind, restoreCard, mainStoreBodies, updateCardContent, reviseCard } from './vault.js'
21
21
  import { compressExcerpt, guessRawKind, DEFAULT_CAPTURE_MAX_TOKENS } from './capture.js'
22
22
  import { buildDiagnostics } from './feedback.js'
23
23
  import { FOLLOW_DOMAINS, parseFollowIntent, listFollows, saveFollow, removeFollow, refreshFollows, followItems, ensureDefaultFollow } from './news-follows.js'
@@ -657,10 +657,13 @@ export function createApi(deps = {}) {
657
657
  case '/graph': {
658
658
  await ensureVault(vaultRoot)
659
659
  const all = query.get('all') === '1'
660
+ // limit:只回「度数最高的 N 张」子图(默认 0 = 全量)。大库下全量 JSON 会到几 MB。
661
+ const limit = Number(query.get('limit') || 0)
660
662
  let g
661
663
  try { g = all ? await graphAll(vaultRoots()) : await graph(vaultRoot) }
662
664
  catch (e) { g = await graph(vaultRoot) }
663
- json(res, 200, { ok: true, ...g })
665
+ const out = limit > 0 ? topDegreeSubgraph(g.nodes, g.edges, limit) : { ...g, total: (g.nodes || []).length, shown: (g.nodes || []).length }
666
+ json(res, 200, { ok: true, ...out })
664
667
  return
665
668
  }
666
669
  case '/capture-log': {