From 5cbb48c0ad184f0a83c6a8441b9379b0891437e2 Mon Sep 17 00:00:00 2001 From: Youzini-afk <13153778771cx@gmail.com> Date: Mon, 6 Apr 2026 16:28:31 +0800 Subject: [PATCH] feat(panel): delete graph node from detail header Made-with: Cursor --- index.js | 22 ++++++++++++++++++++++ panel.html | 8 ++++++++ panel.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ style.css | 9 +++++++++ 4 files changed, 86 insertions(+) diff --git a/index.js b/index.js index 977c151..88ad621 100644 --- a/index.js +++ b/index.js @@ -110,6 +110,7 @@ import { getGraphStats, getNode, importGraph, + removeNode, updateNode, } from "./graph.js"; import { @@ -9524,6 +9525,26 @@ function onSavePanelGraphNode(payload = {}) { }; } +function onDeletePanelGraphNode(payload = {}) { + const nodeId = String(payload.nodeId || ""); + if (!nodeId || !currentGraph) { + return { ok: false, error: "invalid-payload" }; + } + if (!getNode(currentGraph, nodeId)) { + return { ok: false, error: "node-not-found" }; + } + const removed = removeNode(currentGraph, nodeId); + if (!removed) { + return { ok: false, error: "delete-failed" }; + } + const persist = saveGraphToChat({ reason: "panel-node-delete" }); + return { + ok: true, + persist, + persistBlocked: Boolean(persist?.blocked), + }; +} + async function onExportGraph() { return await onExportGraphController({ document, @@ -9830,6 +9851,7 @@ async function onReembedDirect() { applyCurrentHide: () => applyMessageHideNow("panel-manual-apply"), clearCurrentHide: () => clearAllHiddenMessages("panel-manual-clear"), saveGraphNode: onSavePanelGraphNode, + deleteGraphNode: onDeletePanelGraphNode, rebuildVectorIndex: () => onRebuildVectorIndex(), rebuildVectorRange: (range) => onRebuildVectorIndex(range), reembedDirect: onReembedDirect, diff --git a/panel.html b/panel.html index 01cabfe..4da089b 100644 --- a/panel.html +++ b/panel.html @@ -443,6 +443,14 @@