memory-eternal 0.10.52 → 0.10.53
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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/README.en.md +3 -2
- package/README.md +3 -2
- package/lib/api.js +15 -1
- package/lib/client.js +16 -16
- package/package.json +2 -2
- package/scripts/panel-check.mjs +33 -5
- package/web/app.js +14 -14
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memory-eternal",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.53",
|
|
4
4
|
"description": "记忆核心(Memory Eternal):自研的 DeepSeek Harness 记忆插件,不移植任何既有记忆框架——对话结束后自动沉淀知识卡到本地 Markdown Vault(自研去重、自研 CJK 检索、可 git 管理),设置页提供图形化知识库(统计 / 搜索 / 知识图谱 + 侧边栏一键弹窗),Agent 通过 memory_recall 工具按需召回历史上下文。零人工干预。",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"release": "node scripts/release.mjs",
|
|
66
66
|
"release:dry": "node scripts/release.mjs --dry-run",
|
|
67
67
|
"panel-check": "node scripts/panel-check.mjs",
|
|
68
|
-
"test": "node build.mjs && node tests/vault.test.mjs && node tests/capture.test.mjs && node tests/capture-route.test.mjs && node tests/stall.test.mjs && node tests/vault-path.test.mjs && node tests/vault-resolve.test.mjs && node tests/minhash.test.mjs && node tests/settings-save.test.mjs && node tests/config-coverage.test.mjs && node tests/config-sync.test.mjs && node tests/config-merge.test.mjs && node tests/sse.test.mjs && node tests/api.test.mjs && node tests/import-roundtrip.test.mjs && node tests/graph-perf.test.mjs && node tests/settings-compat.test.mjs && node tests/node-bin.test.mjs && node tests/watchdog-lock.test.mjs && node tests/markdown.test.mjs && node tests/feedback.test.mjs && node tests/graph-lod.test.mjs && node tests/ssr.test.mjs && node tests/web-assets.test.mjs && node tests/manifests.test.mjs && node tests/two-store.test.mjs && node tests/noise-gate.test.mjs && node tests/e2e-recall.test.mjs && node tests/issue-fixes.test.mjs && node tests/issue-fixes-2.test.mjs && node tests/issue-fixes-3.test.mjs && node tests/watchdog-orphans.test.mjs && node tests/watchdog-restart.test.mjs && node tests/readme-i18n.test.mjs && node tests/issue-fixes-4.test.mjs && node tests/host-drain.test.mjs && node tests/e2e-host-drain.mjs && node tests/issue-fixes-5.test.mjs && node tests/issue-fixes-6.test.mjs && node tests/capture-json-repair.test.mjs && node tests/csrf-origin.test.mjs && node tests/watchdog-orphan-web.test.mjs && node tests/config-validate.test.mjs && node tests/issue-fixes-8.test.mjs && node tests/issue-fixes-9.test.mjs && node tests/release-verify.test.mjs && node tests/refine.test.mjs && node tests/db-restore.test.mjs && node tests/align.test.mjs && node tests/tags-normalize.test.mjs && node tests/resident-state.test.mjs && node tests/llm-route.test.mjs && node tests/host-managed.test.mjs && node tests/replace-claim.test.mjs && node tests/version-check-self.test.mjs && node tests/setup-codex.test.mjs && node tests/listener-netstat.test.mjs && node tests/issue-46-overlay.test.mjs && node tests/graph-initial-zoom.test.mjs && node tests/card-head-actions.test.mjs && node tests/card-reader-ux.test.mjs && node tests/tag-filter.test.mjs && node tests/ui-overflow.test.mjs && node tests/version-card-state.test.mjs && node tests/llm-routes-proxy.test.mjs && node tests/model-strikes.test.mjs && node tests/support-bundle.test.mjs"
|
|
68
|
+
"test": "node build.mjs && node tests/vault.test.mjs && node tests/capture.test.mjs && node tests/capture-route.test.mjs && node tests/stall.test.mjs && node tests/vault-path.test.mjs && node tests/vault-resolve.test.mjs && node tests/minhash.test.mjs && node tests/settings-save.test.mjs && node tests/config-coverage.test.mjs && node tests/config-sync.test.mjs && node tests/config-merge.test.mjs && node tests/sse.test.mjs && node tests/api.test.mjs && node tests/import-roundtrip.test.mjs && node tests/graph-perf.test.mjs && node tests/settings-compat.test.mjs && node tests/node-bin.test.mjs && node tests/watchdog-lock.test.mjs && node tests/markdown.test.mjs && node tests/feedback.test.mjs && node tests/graph-lod.test.mjs && node tests/ssr.test.mjs && node tests/web-assets.test.mjs && node tests/manifests.test.mjs && node tests/two-store.test.mjs && node tests/noise-gate.test.mjs && node tests/e2e-recall.test.mjs && node tests/issue-fixes.test.mjs && node tests/issue-fixes-2.test.mjs && node tests/issue-fixes-3.test.mjs && node tests/watchdog-orphans.test.mjs && node tests/watchdog-restart.test.mjs && node tests/readme-i18n.test.mjs && node tests/issue-fixes-4.test.mjs && node tests/host-drain.test.mjs && node tests/e2e-host-drain.mjs && node tests/issue-fixes-5.test.mjs && node tests/issue-fixes-6.test.mjs && node tests/capture-json-repair.test.mjs && node tests/csrf-origin.test.mjs && node tests/watchdog-orphan-web.test.mjs && node tests/config-validate.test.mjs && node tests/issue-fixes-8.test.mjs && node tests/issue-fixes-9.test.mjs && node tests/release-verify.test.mjs && node tests/refine.test.mjs && node tests/db-restore.test.mjs && node tests/align.test.mjs && node tests/tags-normalize.test.mjs && node tests/resident-state.test.mjs && node tests/llm-route.test.mjs && node tests/host-managed.test.mjs && node tests/replace-claim.test.mjs && node tests/version-check-self.test.mjs && node tests/setup-codex.test.mjs && node tests/listener-netstat.test.mjs && node tests/issue-46-overlay.test.mjs && node tests/graph-initial-zoom.test.mjs && node tests/card-head-actions.test.mjs && node tests/card-reader-ux.test.mjs && node tests/tag-filter.test.mjs && node tests/ui-overflow.test.mjs && node tests/version-card-state.test.mjs && node tests/llm-routes-proxy.test.mjs && node tests/model-strikes.test.mjs && node tests/support-bundle.test.mjs && node tests/health-panel.test.mjs"
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
71
|
"@deepseek-ai/schemastery": "^3.18.1"
|
package/scripts/panel-check.mjs
CHANGED
|
@@ -83,6 +83,13 @@ class Cdp {
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
// 每步都跑的断言:任何「可滚动容器的 scrollWidth > clientWidth」都算横向溢出(滚动条异常)
|
|
86
|
+
// 页面健康:白屏 / JS 异常 = 比溢出更严重的失败(真实事故:一个 t 之外的 helper 让整页白屏,
|
|
87
|
+
// 而「空白页没有横向溢出」会让检查**通过** —— 所以必须先断言页面还活着)。
|
|
88
|
+
const PAGE_ALIVE_PROBE = `(() => {
|
|
89
|
+
const txt = (document.body && document.body.innerText || '').trim()
|
|
90
|
+
return { textLen: txt.length, hasRoot: Boolean(document.querySelector('.me-overlay, .mc-card, .mc-grid, .mc-rail')) }
|
|
91
|
+
})()`
|
|
92
|
+
|
|
86
93
|
const OVERFLOW_PROBE = `(() => {
|
|
87
94
|
const out = []
|
|
88
95
|
const root = document.documentElement
|
|
@@ -128,17 +135,34 @@ const main = async () => {
|
|
|
128
135
|
cdp = await Cdp.connect(target.webSocketDebuggerUrl)
|
|
129
136
|
await cdp.send('Page.enable')
|
|
130
137
|
await cdp.send('Runtime.enable')
|
|
138
|
+
// 页面抛异常 = 发布阻断项(白屏的根因就在这类异常里)
|
|
139
|
+
cdp.ws.addEventListener('message', (ev) => {
|
|
140
|
+
try {
|
|
141
|
+
const m = JSON.parse(ev.data)
|
|
142
|
+
if (m.method === 'Runtime.exceptionThrown') {
|
|
143
|
+
const d = (m.params && m.params.exceptionDetails) || {}
|
|
144
|
+
const desc = (d.exception && d.exception.description) || d.text || 'unknown'
|
|
145
|
+
;(globalThis.__panelErrors ||= []).push(String(desc).split('\n')[0])
|
|
146
|
+
}
|
|
147
|
+
} catch { /* 非 JSON 消息忽略 */ }
|
|
148
|
+
})
|
|
131
149
|
await cdp.send('Page.navigate', { url: URL_TARGET })
|
|
132
150
|
await sleep(2500)
|
|
133
151
|
|
|
134
152
|
const report = []
|
|
135
153
|
let bad = 0
|
|
154
|
+
const jsErrors = []
|
|
136
155
|
const step = async (label) => {
|
|
156
|
+
const alive = await cdp.eval(PAGE_ALIVE_PROBE)
|
|
137
157
|
const over = await cdp.eval(OVERFLOW_PROBE)
|
|
138
158
|
const file = path.join(OUT_DIR, label + '.png')
|
|
139
159
|
await cdp.shot(file)
|
|
140
|
-
|
|
141
|
-
|
|
160
|
+
const blank = !alive || alive.textLen < 20
|
|
161
|
+
const entry = { label, over, png: file }
|
|
162
|
+
if (blank) entry.blank = true
|
|
163
|
+
if (alive) entry.textLen = alive.textLen
|
|
164
|
+
report.push(entry)
|
|
165
|
+
if (over.length || blank) bad++
|
|
142
166
|
}
|
|
143
167
|
|
|
144
168
|
await step('01-list')
|
|
@@ -147,9 +171,13 @@ const main = async () => {
|
|
|
147
171
|
await step(String(i + 2).padStart(2, '0') + '-' + (CLICKS[i].replace(/^text=/, '').replace(/[^\w\u4e00-\u9fa5-]/g, '_') || 'step'))
|
|
148
172
|
}
|
|
149
173
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
174
|
+
const pageErrors = globalThis.__panelErrors || []
|
|
175
|
+
console.log(JSON.stringify({ url: URL_TARGET, out: OUT_DIR, steps: report, badSteps: bad, pageErrors }, null, 2))
|
|
176
|
+
if (bad || pageErrors.length) {
|
|
177
|
+
if (bad) console.error('✗ ' + bad + ' 个步骤不合格:横向溢出或白屏(见 steps 里的 over / blank)')
|
|
178
|
+
if (pageErrors.length) console.error('✗ 页面抛出 ' + pageErrors.length + ' 个异常:' + pageErrors.slice(0, 3).join(' | '))
|
|
179
|
+
process.exitCode = 1
|
|
180
|
+
} else console.log('✓ 全部步骤:页面存活、无横向溢出、无 JS 异常')
|
|
153
181
|
} finally {
|
|
154
182
|
try { cdp && cdp.ws.close() } catch { /* 无所谓 */ }
|
|
155
183
|
try { child.kill() } catch { /* 已经退出 */ }
|