git: 1cd5f52c2b54 - main - devel/codebase-memory-mcp: update to 0.12.0

From: Olivier Cochard <olivier_at_FreeBSD.org>
Date: Fri, 16 Oct 2026 07:17:31 UTC
The branch main has been updated by olivier:

URL: https://cgit.FreeBSD.org/ports/commit/?id=1cd5f52c2b54decd8bb994061ee5c0a20ce9d1ff

commit 1cd5f52c2b54decd8bb994061ee5c0a20ce9d1ff
Author:     Olivier Cochard <olivier@FreeBSD.org>
AuthorDate: 2026-10-16 07:12:14 +0000
Commit:     Olivier Cochard <olivier@FreeBSD.org>
CommitDate: 2026-10-16 07:14:14 +0000

    devel/codebase-memory-mcp: update to 0.12.0
---
 devel/codebase-memory-mcp/Makefile                 |  2 +-
 devel/codebase-memory-mcp/distinfo                 |  6 ++--
 devel/codebase-memory-mcp/files/patch-Makefile.cbm |  8 ++---
 .../files/patch-internal_cbm_cbm.c                 | 12 ++++----
 .../files/patch-internal_cbm_cbm.h                 | 36 +++++++++++-----------
 .../files/patch-internal_cbm_result__compact.c     | 26 ++++++++++++++++
 .../codebase-memory-mcp/files/patch-src_cli_cli.c  |  6 ++--
 .../files/patch-src_daemon_ipc.c                   |  8 ++---
 .../files/patch-src_pipeline_pass__definitions.c   | 10 +++---
 .../files/patch-src_pipeline_pass__parallel.c      |  6 ++--
 .../files/patch-src_pipeline_pipeline.c            | 14 ++++-----
 .../files/patch-src_pipeline_pipeline__internal.h  |  4 +--
 12 files changed, 82 insertions(+), 56 deletions(-)

diff --git a/devel/codebase-memory-mcp/Makefile b/devel/codebase-memory-mcp/Makefile
index 10f0fdaed90c..68e1193374e6 100644
--- a/devel/codebase-memory-mcp/Makefile
+++ b/devel/codebase-memory-mcp/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	codebase-memory-mcp
 DISTVERSIONPREFIX=v
-DISTVERSION=	0.11.0
+DISTVERSION=	0.12.0
 CATEGORIES=	devel
 
 MAINTAINER=	olivier@FreeBSD.org
diff --git a/devel/codebase-memory-mcp/distinfo b/devel/codebase-memory-mcp/distinfo
index e19f19c211cf..453f42a87c30 100644
--- a/devel/codebase-memory-mcp/distinfo
+++ b/devel/codebase-memory-mcp/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1789587997
-SHA256 (DeusData-codebase-memory-mcp-v0.11.0_GH0.tar.gz) = 7a292eb925640c1d254863733dd260911c94a5f3d1846b228ada685c2770b7ae
-SIZE (DeusData-codebase-memory-mcp-v0.11.0_GH0.tar.gz) = 97846612
+TIMESTAMP = 1792128923
+SHA256 (DeusData-codebase-memory-mcp-v0.12.0_GH0.tar.gz) = a977033aba6ac9e76bb1ad1b13f28367d99663d7ac8b622c6f3b951c632502f3
+SIZE (DeusData-codebase-memory-mcp-v0.12.0_GH0.tar.gz) = 109721617
diff --git a/devel/codebase-memory-mcp/files/patch-Makefile.cbm b/devel/codebase-memory-mcp/files/patch-Makefile.cbm
index d243e69e4a42..67aa4a223740 100644
--- a/devel/codebase-memory-mcp/files/patch-Makefile.cbm
+++ b/devel/codebase-memory-mcp/files/patch-Makefile.cbm
@@ -1,14 +1,14 @@
---- Makefile.cbm.orig	2026-09-15 17:16:24 UTC
+--- Makefile.cbm.orig	2026-10-16 05:39:05 UTC
 +++ Makefile.cbm
-@@ -273,6 +273,7 @@ EXTRACTION_SRCS = \
+@@ -372,6 +372,7 @@ EXTRACTION_SRCS = \
      $(CBM_DIR)/extract_type_assigns.c \
      $(CBM_DIR)/extract_env_accesses.c \
      $(CBM_DIR)/extract_channels.c \
 +    $(CBM_DIR)/extract_sysctl.c \
      $(CBM_DIR)/extract_k8s.c \
      $(CBM_DIR)/extract_dbt.c \
-     $(CBM_DIR)/helpers.c \
-@@ -389,6 +390,7 @@ PIPELINE_SRCS = \
+     $(CBM_DIR)/doclink.c \
+@@ -551,6 +552,7 @@ PIPELINE_SRCS = \
      src/pipeline/pass_cross_repo.c \
      src/pipeline/artifact.c \
      src/pipeline/pass_ensemble_routing.c \
diff --git a/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.c b/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.c
index da9a588dfb5a..8cd70060e01e 100644
--- a/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.c
+++ b/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.c
@@ -1,7 +1,7 @@
---- internal/cbm/cbm.c.orig	2026-09-15 17:16:24 UTC
+--- internal/cbm/cbm.c.orig	2026-10-16 05:39:05 UTC
 +++ internal/cbm/cbm.c
-@@ -194,6 +194,11 @@ void cbm_channels_push(CBMChannelArray *arr, CBMArena 
-     arr->items[arr->count++] = ch;
+@@ -472,6 +472,11 @@ void cbm_diagram_arrows_push(CBMDiagramArrowArray *arr
+     arr->items[arr->count++] = da;
  }
  
 +void cbm_sysctl_push(CBMSysctlArray *arr, CBMArena *a, CBMSysctl s) {
@@ -12,7 +12,7 @@
  // --- String input reader (for parse_with_options) ---
  
  typedef struct {
-@@ -1834,6 +1839,9 @@ static CBMFileResult *extract_file_ex_body(const char 
+@@ -3870,6 +3875,9 @@ static CBMFileResult *extract_file_ex_body(const char 
  
      // Channel detection (Socket.IO / EventEmitter) — JS/TS only.
      cbm_extract_channels(&ctx);
@@ -20,5 +20,5 @@
 +    // FreeBSD/DragonFly sysctl OID collection — C only (no-op elsewhere).
 +    cbm_extract_sysctl(&ctx);
  
-     // K8s / Kustomize semantic pass (additional structured extraction for YAML-based infra files).
-     if (ctx.language == CBM_LANG_KUSTOMIZE || ctx.language == CBM_LANG_K8S) {
+     // Diagrams: blocks of documents and diagram files (self-gated by language).
+     cbm_extract_diagrams(&ctx);
diff --git a/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.h b/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.h
index f26022fac7e4..c40bc260c62d 100644
--- a/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.h
+++ b/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.h
@@ -1,8 +1,8 @@
---- internal/cbm/cbm.h.orig	2026-09-15 17:16:24 UTC
+--- internal/cbm/cbm.h.orig	2026-10-16 05:39:05 UTC
 +++ internal/cbm/cbm.h
-@@ -380,6 +380,21 @@ typedef struct {
-     CBMChannelDirection direction;
- } CBMChannel;
+@@ -580,6 +580,21 @@ typedef struct {
+     const char *type_text;  // raw annotation text, resolved later per file
+ } CBMFieldType;
  
 +// FreeBSD/DragonFly sysctl OID declaration collected from a SYSCTL_* macro.
 +// The runtime dotted path (kern.ipc.maxsockbuf) is NOT stored here — it is
@@ -22,9 +22,9 @@
  // Rust: impl Trait for Struct
  typedef struct {
      const char *trait_name;  // trait name (raw text)
-@@ -493,6 +508,12 @@ typedef struct {
-     int cap;
- } CBMChannelArray;
+@@ -826,6 +841,12 @@ typedef struct {
+     bool failed;
+ } CBMDocLinkArray;
  
 +typedef struct {
 +    CBMSysctl *items;
@@ -35,27 +35,27 @@
  // Full extraction result for one file.
  typedef struct CBMFileResult {
      CBMArena arena; // owns local memory; composites may also retain child arenas below
-@@ -511,6 +532,7 @@ typedef struct CBMFileResult {
-     CBMStringRefArray string_refs;       // URL/config string literals from AST
+@@ -846,6 +867,7 @@ typedef struct CBMFileResult {
      CBMInfraBindingArray infra_bindings; // topic→URL pairs from IaC configs
+     CBMK8sFactArray k8s_facts;           // Kubernetes references and CRD declarations
      CBMChannelArray channels;            // Socket.IO / EventEmitter pub/sub participation
 +    CBMSysctlArray sysctls;              // FreeBSD/DragonFly SYSCTL_* OID declarations
+     CBMDiagramArrowArray diagram_arrows; // arrows between the file's DiagramElement defs
+     CBMFieldTypeArray field_types;       // Python: annotated instance fields (#1277)
  
-     const char *module_qn;      // module qualified name
-     const char *namespace_name; // declared namespace/package (Java/Kotlin/C#/PHP), NULL if none
-@@ -824,6 +846,7 @@ void cbm_channels_push(CBMChannelArray *arr, CBMArena 
- void cbm_impltrait_push(CBMImplTraitArray *arr, CBMArena *a, CBMImplTrait it);
+@@ -1326,6 +1348,7 @@ void cbm_channels_push(CBMChannelArray *arr, CBMArena 
+ #endif
  void cbm_resolvedcall_push(CBMResolvedCallArray *arr, CBMArena *a, CBMResolvedCall rc);
  void cbm_channels_push(CBMChannelArray *arr, CBMArena *a, CBMChannel ch);
 +void cbm_sysctl_push(CBMSysctlArray *arr, CBMArena *a, CBMSysctl s);
+ void cbm_diagram_arrows_push(CBMDiagramArrowArray *arr, CBMArena *a, CBMDiagramArrow da);
  
  // --- Sub-extractor entry points ---
- 
-@@ -842,6 +865,7 @@ void cbm_extract_channels(CBMExtractCtx *ctx);
+@@ -1345,6 +1368,7 @@ void cbm_extract_channels(CBMExtractCtx *ctx);
  void cbm_extract_env_accesses(CBMExtractCtx *ctx);
  void cbm_extract_type_assigns(CBMExtractCtx *ctx);
  void cbm_extract_channels(CBMExtractCtx *ctx);
 +void cbm_extract_sysctl(CBMExtractCtx *ctx);
- 
- // Single-pass unified extraction (replaces the 7 calls above except defs+imports).
- void cbm_extract_unified(CBMExtractCtx *ctx);
+ /* Diagrams (diagram.c): a Diagram definition per diagram -- a Markdown, reST
+  * or AsciiDoc block, or a diagram file -- with a DiagramElement definition per
+  * element and the arrows between them. */
diff --git a/devel/codebase-memory-mcp/files/patch-internal_cbm_result__compact.c b/devel/codebase-memory-mcp/files/patch-internal_cbm_result__compact.c
new file mode 100644
index 000000000000..2dccae5b2386
--- /dev/null
+++ b/devel/codebase-memory-mcp/files/patch-internal_cbm_result__compact.c
@@ -0,0 +1,26 @@
+--- internal/cbm/result_compact.c.orig	2026-10-16 06:23:44 UTC
++++ internal/cbm/result_compact.c
+@@ -440,6 +440,15 @@ static void cr_walk(cr_ctx_t *c, CBMFileResult *r) {
+         cr_str(c, &r->channels.items[i].transport);
+         cr_str(c, &r->channels.items[i].enclosing_func_qn);
+     }
++    cr_array(c, (void **)&r->sysctls.items, r->sysctls.count, sizeof(CBMSysctl));
++    for (int i = 0; i < r->sysctls.count && r->sysctls.items; i++) {
++        cr_str(c, &r->sysctls.items[i].leaf_name);
++        cr_str(c, &r->sysctls.items[i].parent_symbol);
++        cr_str(c, &r->sysctls.items[i].self_symbol);
++        cr_str(c, &r->sysctls.items[i].handler);
++        cr_str(c, &r->sysctls.items[i].enclosing_func_qn);
++        cr_str(c, &r->sysctls.items[i].file_rel);
++    }
+     cr_array(c, (void **)&r->field_types.items, r->field_types.count, sizeof(CBMFieldType));
+     for (int i = 0; i < r->field_types.count && r->field_types.items; i++) {
+         cr_str(c, &r->field_types.items[i].class_qn);
+@@ -611,6 +620,7 @@ void cbm_result_compact(CBMFileResult *result) {
+     tmp.string_refs.cap = tmp.string_refs.count;
+     tmp.infra_bindings.cap = tmp.infra_bindings.count;
+     tmp.channels.cap = tmp.channels.count;
++    tmp.sysctls.cap = tmp.sysctls.count;
+     tmp.diagram_arrows.cap = tmp.diagram_arrows.count;
+     tmp.field_types.cap = tmp.field_types.count;
+     tmp.doc_links.cap = tmp.doc_links.count;
diff --git a/devel/codebase-memory-mcp/files/patch-src_cli_cli.c b/devel/codebase-memory-mcp/files/patch-src_cli_cli.c
index 98532a5cd2bd..f29bc25713be 100644
--- a/devel/codebase-memory-mcp/files/patch-src_cli_cli.c
+++ b/devel/codebase-memory-mcp/files/patch-src_cli_cli.c
@@ -1,6 +1,6 @@
---- src/cli/cli.c.orig	2026-09-16 19:47:37 UTC
+--- src/cli/cli.c.orig	2026-10-16 05:39:05 UTC
 +++ src/cli/cli.c
-@@ -9003,7 +9003,12 @@ static void cbm_agent_installed_binary_path(const char
+@@ -9223,7 +9223,12 @@ static void cbm_agent_installed_binary_path(const char
  
  static void cbm_agent_installed_binary_path(const char *home, char *binary_path,
                                              size_t binary_path_size) {
@@ -14,7 +14,7 @@
      snprintf(binary_path, binary_path_size, "%s/.local/bin/codebase-memory-mcp.exe", home);
  #else
      snprintf(binary_path, binary_path_size, "%s/.local/bin/codebase-memory-mcp", home);
-@@ -11147,6 +11152,13 @@ int cbm_cmd_install(int argc, char **argv) {
+@@ -11366,6 +11371,13 @@ int cbm_cmd_install(int argc, char **argv) {
                     manager ? " by " : "", manager ? manager : "", self_path, bin_dir);
          }
          skip_binary = true;
diff --git a/devel/codebase-memory-mcp/files/patch-src_daemon_ipc.c b/devel/codebase-memory-mcp/files/patch-src_daemon_ipc.c
index 576b8763c2b0..71c6184efff4 100644
--- a/devel/codebase-memory-mcp/files/patch-src_daemon_ipc.c
+++ b/devel/codebase-memory-mcp/files/patch-src_daemon_ipc.c
@@ -1,6 +1,6 @@
---- src/daemon/ipc.c.orig	2026-09-16 19:49:25 UTC
+--- src/daemon/ipc.c.orig	2026-10-16 05:39:05 UTC
 +++ src/daemon/ipc.c
-@@ -381,6 +381,9 @@ int cbm_daemon_ipc_wait_pending(const cbm_ipc_pending_
+@@ -482,6 +482,9 @@ int cbm_daemon_ipc_wait_pending(const cbm_ipc_pending_
  #include <sys/stat.h>
  #include <sys/types.h>
  #include <sys/un.h>
@@ -9,8 +9,8 @@
 +#endif
  #include <time.h>
  #include <unistd.h>
- 
-@@ -3467,6 +3470,19 @@ uint64_t cbm_daemon_ipc_connection_peer_pid(const cbm_
+ #if defined(__linux__)
+@@ -3755,6 +3758,19 @@ uint64_t cbm_daemon_ipc_connection_peer_pid(const cbm_
          return 0;
      }
      return (uint64_t)peer_id.unp_pid;
diff --git a/devel/codebase-memory-mcp/files/patch-src_pipeline_pass__definitions.c b/devel/codebase-memory-mcp/files/patch-src_pipeline_pass__definitions.c
index de7eccb915c0..44de95bee33a 100644
--- a/devel/codebase-memory-mcp/files/patch-src_pipeline_pass__definitions.c
+++ b/devel/codebase-memory-mcp/files/patch-src_pipeline_pass__definitions.c
@@ -1,18 +1,18 @@
---- src/pipeline/pass_definitions.c.orig	2026-09-15 17:16:24 UTC
+--- src/pipeline/pass_definitions.c.orig	2026-10-16 05:39:05 UTC
 +++ src/pipeline/pass_definitions.c
-@@ -876,6 +876,7 @@ int cbm_pipeline_pass_definitions(cbm_pipeline_ctx_t *
+@@ -1040,6 +1040,7 @@ int cbm_pipeline_pass_definitions(cbm_pipeline_ctx_t *
               * map is available without the cache (single-file scope). */
              total_imports += create_import_edges_for_file(ctx, result, rel, NULL);
              create_channel_edges_for_file(ctx, result, rel);
 +            cbm_sysctl_emit_raw_for_file(ctx, result, rel);
+             cbm_pipeline_diagram_arrows(ctx, result);
              cbm_pipeline_create_env_configures_for_file(ctx, result, rel);
              cbm_free_result(result);
-         }
-@@ -909,6 +910,7 @@ int cbm_pipeline_pass_definitions(cbm_pipeline_ctx_t *
+@@ -1074,6 +1075,7 @@ int cbm_pipeline_pass_definitions(cbm_pipeline_ctx_t *
              total_imports +=
                  create_import_edges_for_file(ctx, result, files[i].rel_path, namespace_map);
              create_channel_edges_for_file(ctx, result, files[i].rel_path);
 +            cbm_sysctl_emit_raw_for_file(ctx, result, files[i].rel_path);
+             cbm_pipeline_diagram_arrows(ctx, result);
              cbm_pipeline_create_env_configures_for_file(ctx, result, files[i].rel_path);
          }
-         cbm_pipeline_namespace_map_free(namespace_map);
diff --git a/devel/codebase-memory-mcp/files/patch-src_pipeline_pass__parallel.c b/devel/codebase-memory-mcp/files/patch-src_pipeline_pass__parallel.c
index d4285d239b3d..1373772c3e5b 100644
--- a/devel/codebase-memory-mcp/files/patch-src_pipeline_pass__parallel.c
+++ b/devel/codebase-memory-mcp/files/patch-src_pipeline_pass__parallel.c
@@ -1,10 +1,10 @@
---- src/pipeline/pass_parallel.c.orig	2026-09-15 17:16:24 UTC
+--- src/pipeline/pass_parallel.c.orig	2026-10-16 05:39:05 UTC
 +++ src/pipeline/pass_parallel.c
-@@ -1681,6 +1681,7 @@ int cbm_build_registry_from_cache(cbm_pipeline_ctx_t *
+@@ -1996,6 +1996,7 @@ int cbm_build_registry_from_cache(cbm_pipeline_ctx_t *
  
          imports_edges += create_imports_edges(ctx, result, rel, namespace_map);
          create_channel_edges(ctx, result, rel);
 +        cbm_sysctl_emit_raw_for_file(ctx, result, rel);
+         cbm_pipeline_diagram_arrows(ctx, result);
          cbm_pipeline_create_env_configures_for_file(ctx, result, rel);
          if (loaded) {
-             cbm_free_result(result);
diff --git a/devel/codebase-memory-mcp/files/patch-src_pipeline_pipeline.c b/devel/codebase-memory-mcp/files/patch-src_pipeline_pipeline.c
index 33c6a0cd55c7..aea2140dc975 100644
--- a/devel/codebase-memory-mcp/files/patch-src_pipeline_pipeline.c
+++ b/devel/codebase-memory-mcp/files/patch-src_pipeline_pipeline.c
@@ -1,6 +1,6 @@
---- src/pipeline/pipeline.c.orig	2026-09-16 19:50:09 UTC
+--- src/pipeline/pipeline.c.orig	2026-10-16 05:39:05 UTC
 +++ src/pipeline/pipeline.c
-@@ -1032,6 +1032,9 @@ static void predump_complexity(cbm_pipeline_ctx_t *ctx
+@@ -2007,6 +2007,9 @@ static void predump_complexity(cbm_pipeline_ctx_t *ctx
  static void predump_complexity(cbm_pipeline_ctx_t *ctx) {
      cbm_pipeline_pass_complexity(ctx);
  }
@@ -10,11 +10,11 @@
  static void predump_ensemble(cbm_pipeline_ctx_t *ctx) {
      cbm_pipeline_pass_ensemble_routing(ctx);
  }
-@@ -1268,6 +1271,7 @@ static void run_predump_passes(cbm_pipeline_t *p, cbm_
-         {predump_sim, "similarity", true},
-         {predump_sem, "semantic_edges", true},
-         {predump_complexity, "complexity", false},
-+        {predump_sysctl, "sysctl_resolve", false},
+@@ -2277,6 +2280,7 @@ static void run_predump_passes(cbm_pipeline_t *p, cbm_
+         {predump_sim, "similarity", PREDUMP_SKIP_FAST},
+         {predump_sem, "semantic_edges", PREDUMP_FAST_DOC_CANDIDATES},
+         {predump_complexity, "complexity", PREDUMP_EVERY_MODE},
++        {predump_sysctl, "sysctl_resolve", PREDUMP_EVERY_MODE},
          /* Importance runs LAST: it reads CALLS/USAGE (extraction) and TESTS
           * (pass_tests, which run_post_extraction runs before this loop), so
           * every edge type its score depends on already exists here. */
diff --git a/devel/codebase-memory-mcp/files/patch-src_pipeline_pipeline__internal.h b/devel/codebase-memory-mcp/files/patch-src_pipeline_pipeline__internal.h
index f0dfdbe97c3c..6864595f3c5b 100644
--- a/devel/codebase-memory-mcp/files/patch-src_pipeline_pipeline__internal.h
+++ b/devel/codebase-memory-mcp/files/patch-src_pipeline_pipeline__internal.h
@@ -1,6 +1,6 @@
---- src/pipeline/pipeline_internal.h.orig	2026-08-18 20:39:59 UTC
+--- src/pipeline/pipeline_internal.h.orig	2026-10-16 05:39:05 UTC
 +++ src/pipeline/pipeline_internal.h
-@@ -570,6 +570,13 @@ int cbm_pipeline_pass_definitions(cbm_pipeline_ctx_t *
+@@ -1167,6 +1167,13 @@ int cbm_pipeline_pass_definitions(cbm_pipeline_ctx_t *
  int cbm_pipeline_pass_definitions(cbm_pipeline_ctx_t *ctx, const cbm_file_info_t *files,
                                    int file_count);