Skip to content

Commit d24f719

Browse files
cdeustclaude
andcommitted
refactor(viz): use AP typed tools (get_context/get_impact) + bump 3.18.1
Per architect plan — refactor the impact path to fully use automatised-pipeline's typed MCP tools instead of hand-written Cypher (no new module; behavior-preserving): - _impact_for_graph: symbol-level direction now from get_context per member (cap N=20, Cypher fallback beyond) — gains implements/implemented_by + uses/used_by + community, on top of calls/imports. Blast-radius counts (communities_affected/processes_affected) from get_impact. File→File edges, present-gate, members list, _rollup kept as legitimate query_graph use. - _ast_and_impact: per-symbol get_context (capped) + one get_impact. - workflow_graph_source_ast: search_codebase raw call → typed wrapper. All existing response keys preserved; only additive fields. Frontend reads no ast.impact array (verified) — safe. Version 3.18.0 → 3.18.1 across ALL marketplace files (pyproject, plugin.json, marketplace.json metadata+plugin+version_note, README badge) — shipping the since-3.18.0 fixes: HUD true counts (/api/stats), AP-typed-tools impact, ap_bridge installed_plugins.json resolution, HTML-attr XSS + node-id hash. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 082e030 commit d24f719

6 files changed

Lines changed: 249 additions & 121 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@
66
},
77
"metadata": {
88
"description": "Persistent memory and cognitive profiling plugins for Claude Code",
9-
"version": "3.18.0"
9+
"version": "3.18.1"
1010
},
1111
"plugins": [
1212
{
1313
"name": "cortex",
1414
"source": "./",
1515
"description": "Persistent memory and cognitive profiling for Claude Code — thermodynamic memory with heat/decay, intent-aware retrieval, biological plasticity, codebase intelligence, and cognitive profiling. 49 MCP tools with enriched schemas. PostgreSQL + pgvector in CLI mode; automatic SQLite fallback in Cowork/sandboxed mode. v3.17.0 — autonomous per-project wiki: SessionStart auto-spawns a 6-hour consolidate cycle; a headless `claude -p` worker drains the curation-gap queue, calls codebase-intelligence MCP tools to ground each section in the real call graph, and authors missing anchor pages (architecture / services / api / data-flow / operations / decisions / PRD) per project from the source tree. 15 canonical scopes × 13 file sections; per-project dashboards under `wiki/_dashboards/`. Mermaid diagrams have a 🔍 lens with zoom + pan. Workflow graph with caller-qualified CALLS chains rendering full method-to-method dependencies (native tree-sitter, no AP required). Side panel humanized for non-technical users. Ingests codebase analysis (ai-automatised-pipeline) and PRDs (prd-spec-generator) into wiki + memory + knowledge graph. Docker image available.",
16-
"version": "3.18.0",
16+
"version": "3.18.1",
1717
"author": {
1818
"name": "Clement Deust",
1919
"email": "admin@ai-architect.tools"
2020
},
2121
"homepage": "https://github.com/cdeust/Cortex",
2222
"repository": "https://github.com/cdeust/Cortex",
2323
"license": "MIT",
24-
"version_note": "3.18.0 — live execution-trace graph in cortex-visualize: domain→session→chain served live from session transcripts (no snapshot), galaxy-style non-overlapping session clusters with type-banded disks, and a file impact panel wired to the automatised-pipeline code graph for full caller/callee direction, causal execution chains (processes), and per-file git version history. Loopback-only host guard retained (GHSA-gvpp-v77h-5w8g).",
24+
"version_note": "3.18.1 — HUD shows true store counts (memories/entities/synapses) via /api/stats instead of loaded-graph nodes; impact panel refactored to use automatised-pipeline's typed tools (get_context/get_impact) for full direction incl. implements/uses + community/process blast radius; AP MCP resolved from installed_plugins.json (compiled binary, not bin/* glob); HTML-attribute XSS escaping + non-security node-id hash. 3.18.0 — live execution-trace graph in cortex-visualize: domain→session→chain (no snapshot), galaxy-style type-banded clusters, file impact panel wired to the AP code graph (caller/callee direction, causal chains, per-file git versions). Loopback-only host guard retained (GHSA-gvpp-v77h-5w8g).",
2525
"keywords": ["memory", "cognitive-profiling", "mcp", "claude-code", "cortex", "knowledge-graph", "codebase-analysis", "docker"],
2626
"category": "productivity",
2727
"runtime": ["cli", "cowork"],

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "cortex",
33
"description": "Persistent memory for Claude Code — remembers across sessions automatically. Install and forget. Scientific retrieval backed by 41 published papers.",
4-
"version": "3.18.0",
4+
"version": "3.18.1",
55
"author": {
66
"name": "Clement Deust",
77
"email": "admin@ai-architect.tools"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<img src="https://img.shields.io/badge/python-3.10+-blue.svg" alt="Python 3.10+">
99
<img src="https://img.shields.io/badge/tests-2500_passing-brightgreen.svg" alt="Tests">
1010
<img src="https://img.shields.io/badge/citations-45_papers-orange.svg" alt="Citations">
11-
<img src="https://img.shields.io/badge/version-3.18.0-brightgreen.svg" alt="Version 3.18.0">
11+
<img src="https://img.shields.io/badge/version-3.18.1-brightgreen.svg" alt="Version 3.18.1">
1212
<a href="https://glama.ai/mcp/servers/cdeust/Cortex"><img src="https://glama.ai/mcp/servers/cdeust/Cortex/badges/score.svg" alt="Glama score: security A, license A"></a>
1313
</p>
1414

mcp_server/infrastructure/workflow_graph_source_ast.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -425,10 +425,7 @@ def search_codebase(
425425
if not gp:
426426
return []
427427
resp = self._loop_owner.run(
428-
self._bridge.call(
429-
"search_codebase",
430-
{"graph_path": gp, "query": query, "limit": int(limit)},
431-
)
428+
self._bridge.search_codebase(gp, query, limit=int(limit))
432429
)
433430
out: list[dict[str, Any]] = []
434431
for r in _as_list(resp):

0 commit comments

Comments
 (0)