From 0da78babe268f0b27b474e54c5b07977c51553c7 Mon Sep 17 00:00:00 2001 From: zFarbp Date: Wed, 23 Sep 2026 14:40:34 +0200 Subject: [PATCH] feat: agent graph --- packages/server/package.json | 2 +- packages/shared/package.json | 2 +- packages/web/package.json | 2 +- packages/web/src/panels/AgentsGraph.vue | 991 ++++++++++++++++++ packages/web/src/panels/PluginsBrowser.vue | 15 +- .../web/src/views/dashboard/AgentsView.vue | 451 ++++++-- packages/web/src/views/dashboard/chrome.css | 10 +- 7 files changed, 1357 insertions(+), 116 deletions(-) create mode 100644 packages/web/src/panels/AgentsGraph.vue diff --git a/packages/server/package.json b/packages/server/package.json index e24a076..5d3850b 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "threadle", - "version": "1.0.10", + "version": "1.0.11", "description": "Local-first node-graph patchbay for Claude Code, opencode, Cursor Agent, Antigravity, Codex, Copilot, and Grok Build sessions.", "type": "module", "license": "MIT", diff --git a/packages/shared/package.json b/packages/shared/package.json index 9e535ca..c3eb9e7 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@threadle/shared", - "version": "1.0.10", + "version": "1.0.11", "private": true, "type": "module", "main": "./src/index.ts", diff --git a/packages/web/package.json b/packages/web/package.json index 7fcebe1..1ffc47e 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@threadle/web", - "version": "1.0.10", + "version": "1.0.11", "private": true, "type": "module", "scripts": { diff --git a/packages/web/src/panels/AgentsGraph.vue b/packages/web/src/panels/AgentsGraph.vue new file mode 100644 index 0000000..7b78ef4 --- /dev/null +++ b/packages/web/src/panels/AgentsGraph.vue @@ -0,0 +1,991 @@ + + + + + diff --git a/packages/web/src/panels/PluginsBrowser.vue b/packages/web/src/panels/PluginsBrowser.vue index beb877c..da50e38 100644 --- a/packages/web/src/panels/PluginsBrowser.vue +++ b/packages/web/src/panels/PluginsBrowser.vue @@ -124,6 +124,10 @@ const filtered = computed(() => { }); }); +function childCount(e: PluginEntry, kind: PluginChildKind): number { + return e.children.filter((c) => c.kind === kind).length; +} + interface ProvGroup { provider: string; entries: PluginEntry[]; @@ -284,12 +288,15 @@ const loading = computed(() => items.value === undefined);
nameverstateoriginkids + >origincommandsagentschildren
diff --git a/packages/web/src/views/dashboard/AgentsView.vue b/packages/web/src/views/dashboard/AgentsView.vue index b418610..bfde2b9 100644 --- a/packages/web/src/views/dashboard/AgentsView.vue +++ b/packages/web/src/views/dashboard/AgentsView.vue @@ -22,7 +22,9 @@ ? 'Filter memory…' : agentBrowse === 'plugins' ? 'Filter plugins…' - : 'Filter runs…' + : agentBrowse === 'graph' + ? 'Filter graph…' + : 'Filter runs…' " spellcheck="false" /> @@ -59,6 +61,14 @@ > live{{ agentInstances.live ? ` · ${agentInstances.live}` : "" }} +