git: 3e51fdeccc07 - main - devel/codebase-memory-mcp: update to 0.11.0
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 17 Sep 2026 12:12:41 UTC
The branch main has been updated by olivier:
URL: https://cgit.FreeBSD.org/ports/commit/?id=3e51fdeccc0700f95383d00ac8cbac890c5a9005
commit 3e51fdeccc0700f95383d00ac8cbac890c5a9005
Author: Olivier Cochard <olivier@FreeBSD.org>
AuthorDate: 2026-09-17 12:08:22 +0000
Commit: Olivier Cochard <olivier@FreeBSD.org>
CommitDate: 2026-09-17 12:09:29 +0000
devel/codebase-memory-mcp: update to 0.11.0
---
devel/codebase-memory-mcp/Makefile | 2 +-
devel/codebase-memory-mcp/distinfo | 6 ++--
devel/codebase-memory-mcp/files/extract_sysctl.c | 12 ++++----
devel/codebase-memory-mcp/files/patch-Makefile.cbm | 10 +++----
.../files/patch-internal_cbm_cbm.c | 6 ++--
.../files/patch-internal_cbm_cbm.h | 12 ++++----
.../codebase-memory-mcp/files/patch-src_cli_cli.c | 32 ++--------------------
.../files/patch-src_daemon_ipc.c | 8 +++---
.../files/patch-src_pipeline_pass__definitions.c | 6 ++--
.../files/patch-src_pipeline_pass__parallel.c | 8 +++---
.../files/patch-src_pipeline_pipeline.c | 27 ++++++++----------
11 files changed, 50 insertions(+), 79 deletions(-)
diff --git a/devel/codebase-memory-mcp/Makefile b/devel/codebase-memory-mcp/Makefile
index d9b4025023fa..10f0fdaed90c 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.10.8
+DISTVERSION= 0.11.0
CATEGORIES= devel
MAINTAINER= olivier@FreeBSD.org
diff --git a/devel/codebase-memory-mcp/distinfo b/devel/codebase-memory-mcp/distinfo
index 4357e62557e2..e19f19c211cf 100644
--- a/devel/codebase-memory-mcp/distinfo
+++ b/devel/codebase-memory-mcp/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1787154654
-SHA256 (DeusData-codebase-memory-mcp-v0.10.8_GH0.tar.gz) = bbb40b0af7860e518d5f11e1d7316634bfebaa0928a05928792a890e0222cbeb
-SIZE (DeusData-codebase-memory-mcp-v0.10.8_GH0.tar.gz) = 94894604
+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
diff --git a/devel/codebase-memory-mcp/files/extract_sysctl.c b/devel/codebase-memory-mcp/files/extract_sysctl.c
index 9502782fbedf..f6661ce3b928 100644
--- a/devel/codebase-memory-mcp/files/extract_sysctl.c
+++ b/devel/codebase-memory-mcp/files/extract_sysctl.c
@@ -504,8 +504,8 @@ static const char *assign_lhs_of(CBMExtractCtx *ctx, TSNode call) {
* before the def. We therefore seed every alias first, then emit. */
static void collect_aliases(CBMExtractCtx *ctx, sysctl_alias_table_t *aliases, TSNode root) {
TSNodeStack stack;
- ts_nstack_init(&stack, ctx->arena, SYSCTL_STACK_CAP);
- ts_nstack_push(&stack, ctx->arena, root);
+ ts_nstack_init(&stack, ctx, SYSCTL_STACK_CAP);
+ ts_nstack_push(&stack, root);
while (stack.count > 0) {
TSNode node = ts_nstack_pop(&stack);
if (strcmp(ts_node_type(node), "call_expression") == 0) {
@@ -528,7 +528,7 @@ static void collect_aliases(CBMExtractCtx *ctx, sysctl_alias_table_t *aliases, T
}
}
}
- ts_nstack_push_children(&stack, ctx->arena, node);
+ ts_nstack_push_children(&stack, node);
}
}
@@ -544,8 +544,8 @@ static void extract_sysctl_c(CBMExtractCtx *ctx) {
collect_aliases(ctx, &aliases, ctx->root);
TSNodeStack stack;
- ts_nstack_init(&stack, ctx->arena, SYSCTL_STACK_CAP);
- ts_nstack_push(&stack, ctx->arena, ctx->root);
+ ts_nstack_init(&stack, ctx, SYSCTL_STACK_CAP);
+ ts_nstack_push(&stack, ctx->root);
while (stack.count > 0) {
TSNode node = ts_nstack_pop(&stack);
@@ -586,7 +586,7 @@ static void extract_sysctl_c(CBMExtractCtx *ctx) {
break; /* one macro per node */
}
}
- ts_nstack_push_children(&stack, ctx->arena, node);
+ ts_nstack_push_children(&stack, node);
}
}
diff --git a/devel/codebase-memory-mcp/files/patch-Makefile.cbm b/devel/codebase-memory-mcp/files/patch-Makefile.cbm
index dd40510a7e68..d243e69e4a42 100644
--- a/devel/codebase-memory-mcp/files/patch-Makefile.cbm
+++ b/devel/codebase-memory-mcp/files/patch-Makefile.cbm
@@ -1,17 +1,17 @@
---- Makefile.cbm.orig 2026-08-18 20:39:59 UTC
+--- Makefile.cbm.orig 2026-09-15 17:16:24 UTC
+++ Makefile.cbm
-@@ -244,6 +244,7 @@ EXTRACTION_SRCS = \
+@@ -273,6 +273,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 \
- $(CBM_DIR)/lang_specs.c \
-@@ -355,6 +356,7 @@ PIPELINE_SRCS = \
- src/pipeline/pass_complexity.c \
+@@ -389,6 +390,7 @@ PIPELINE_SRCS = \
src/pipeline/pass_cross_repo.c \
src/pipeline/artifact.c \
+ src/pipeline/pass_ensemble_routing.c \
+ src/pipeline/pass_sysctl.c \
src/pipeline/pass_pkgmap.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 8911e9114198..da9a588dfb5a 100644
--- a/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.c
+++ b/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.c
@@ -1,6 +1,6 @@
---- internal/cbm/cbm.c.orig 2026-08-18 20:39:59 UTC
+--- internal/cbm/cbm.c.orig 2026-09-15 17:16:24 UTC
+++ internal/cbm/cbm.c
-@@ -188,6 +188,11 @@ void cbm_channels_push(CBMChannelArray *arr, CBMArena
+@@ -194,6 +194,11 @@ void cbm_channels_push(CBMChannelArray *arr, CBMArena
arr->items[arr->count++] = ch;
}
@@ -12,7 +12,7 @@
// --- String input reader (for parse_with_options) ---
typedef struct {
-@@ -1297,6 +1302,9 @@ CBMFileResult *cbm_extract_file_ex(const char *source,
+@@ -1834,6 +1839,9 @@ static CBMFileResult *extract_file_ex_body(const char
// Channel detection (Socket.IO / EventEmitter) — JS/TS only.
cbm_extract_channels(&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 73f007c586bf..f26022fac7e4 100644
--- a/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.h
+++ b/devel/codebase-memory-mcp/files/patch-internal_cbm_cbm.h
@@ -1,6 +1,6 @@
---- internal/cbm/cbm.h.orig 2026-08-18 20:39:59 UTC
+--- internal/cbm/cbm.h.orig 2026-09-15 17:16:24 UTC
+++ internal/cbm/cbm.h
-@@ -355,6 +355,21 @@ typedef struct {
+@@ -380,6 +380,21 @@ typedef struct {
CBMChannelDirection direction;
} CBMChannel;
@@ -22,7 +22,7 @@
// Rust: impl Trait for Struct
typedef struct {
const char *trait_name; // trait name (raw text)
-@@ -468,6 +483,12 @@ typedef struct {
+@@ -493,6 +508,12 @@ typedef struct {
int cap;
} CBMChannelArray;
@@ -35,7 +35,7 @@
// Full extraction result for one file.
typedef struct CBMFileResult {
CBMArena arena; // owns local memory; composites may also retain child arenas below
-@@ -486,6 +507,7 @@ typedef struct CBMFileResult {
+@@ -511,6 +532,7 @@ typedef struct CBMFileResult {
CBMStringRefArray string_refs; // URL/config string literals from AST
CBMInfraBindingArray infra_bindings; // topic→URL pairs from IaC configs
CBMChannelArray channels; // Socket.IO / EventEmitter pub/sub participation
@@ -43,7 +43,7 @@
const char *module_qn; // module qualified name
const char *namespace_name; // declared namespace/package (Java/Kotlin/C#/PHP), NULL if none
-@@ -722,6 +744,7 @@ void cbm_channels_push(CBMChannelArray *arr, CBMArena
+@@ -824,6 +846,7 @@ void cbm_channels_push(CBMChannelArray *arr, CBMArena
void cbm_impltrait_push(CBMImplTraitArray *arr, CBMArena *a, CBMImplTrait it);
void cbm_resolvedcall_push(CBMResolvedCallArray *arr, CBMArena *a, CBMResolvedCall rc);
void cbm_channels_push(CBMChannelArray *arr, CBMArena *a, CBMChannel ch);
@@ -51,7 +51,7 @@
// --- Sub-extractor entry points ---
-@@ -733,6 +756,7 @@ void cbm_extract_channels(CBMExtractCtx *ctx);
+@@ -842,6 +865,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);
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 3edabd31ea2d..98532a5cd2bd 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-08-18 20:39:59 UTC
+--- src/cli/cli.c.orig 2026-09-16 19:47:37 UTC
+++ src/cli/cli.c
-@@ -8178,7 +8178,12 @@ static void cbm_agent_installed_binary_path(const char
+@@ -9003,7 +9003,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,24 +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);
-@@ -9699,6 +9704,16 @@ static const char *cli_external_manager_name(const cha
- if (strstr(self_path, "/.cargo/bin/")) {
- return "cargo";
- }
-+#if defined(__FreeBSD__) && defined(CBM_PKG_PREFIX)
-+ /* FreeBSD ports/pkg install the binary under ${PREFIX}/bin (CBM_PKG_PREFIX
-+ * is the port's PREFIX, default /usr/local). pkg owns that file, so install
-+ * must not copy it into ~/.local/bin or edit PATH, and update must refuse
-+ * and defer to pkg(8). Match only ${PREFIX}/bin/ so a manual --dir install
-+ * elsewhere is still treated as ours. */
-+ if (strstr(self_path, CBM_PKG_PREFIX "/bin/") == self_path) {
-+ return "FreeBSD pkg";
-+ }
-+#endif
- return NULL;
- }
-
-@@ -10117,6 +10132,13 @@ int cbm_cmd_install(int argc, char **argv) {
+@@ -11147,6 +11152,13 @@ int cbm_cmd_install(int argc, char **argv) {
manager ? " by " : "", manager ? manager : "", self_path, bin_dir);
}
skip_binary = true;
@@ -45,12 +28,3 @@
}
/* NOT stat(): on Windows it goes through the ANSI code page, so an
-@@ -12227,6 +12249,8 @@ int cbm_cmd_update(int argc, char **argv) {
- (void)fprintf(stderr, " update it with: mise upgrade codebase-memory-mcp\n");
- } else if (manager && strcmp(manager, "Homebrew") == 0) {
- (void)fprintf(stderr, " update it with: brew upgrade codebase-memory-mcp\n");
-+ } else if (manager && strcmp(manager, "FreeBSD pkg") == 0) {
-+ (void)fprintf(stderr, " update it with: pkg upgrade codebase-memory-mcp\n");
- } else {
- (void)fprintf(stderr, " update it through whichever tool installed it.\n");
- }
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 d79b2027ee5f..576b8763c2b0 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-08-18 20:39:59 UTC
+--- src/daemon/ipc.c.orig 2026-09-16 19:49:25 UTC
+++ src/daemon/ipc.c
-@@ -313,6 +313,9 @@ int cbm_daemon_ipc_wait_pending(const cbm_ipc_pending_
+@@ -381,6 +381,9 @@ int cbm_daemon_ipc_wait_pending(const cbm_ipc_pending_
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/un.h>
@@ -10,10 +10,10 @@
#include <time.h>
#include <unistd.h>
-@@ -3078,6 +3081,19 @@ uint64_t cbm_daemon_ipc_connection_peer_pid(const cbm_
+@@ -3467,6 +3470,19 @@ uint64_t cbm_daemon_ipc_connection_peer_pid(const cbm_
return 0;
}
- return (uint64_t)peer_pid;
+ return (uint64_t)peer_id.unp_pid;
+#elif defined(__FreeBSD__) && defined(LOCAL_PEERCRED)
+ /* FreeBSD has neither SO_PEERCRED nor LOCAL_PEERPID; LOCAL_PEERCRED returns
+ * a struct xucred whose cr_pid (FreeBSD 13+) is the connecting peer's 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 f4849773da7f..de7eccb915c0 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,6 +1,6 @@
---- src/pipeline/pass_definitions.c.orig 2026-08-18 20:39:59 UTC
+--- src/pipeline/pass_definitions.c.orig 2026-09-15 17:16:24 UTC
+++ src/pipeline/pass_definitions.c
-@@ -812,6 +812,7 @@ int cbm_pipeline_pass_definitions(cbm_pipeline_ctx_t *
+@@ -876,6 +876,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);
@@ -8,7 +8,7 @@
cbm_pipeline_create_env_configures_for_file(ctx, result, rel);
cbm_free_result(result);
}
-@@ -845,6 +846,7 @@ int cbm_pipeline_pass_definitions(cbm_pipeline_ctx_t *
+@@ -909,6 +910,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);
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 0a5c72c9e6c5..d4285d239b3d 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-08-18 20:39:59 UTC
+--- src/pipeline/pass_parallel.c.orig 2026-09-15 17:16:24 UTC
+++ src/pipeline/pass_parallel.c
-@@ -1343,6 +1343,7 @@ int cbm_build_registry_from_cache(cbm_pipeline_ctx_t *
+@@ -1681,6 +1681,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_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 f8518624c9e0..33c6a0cd55c7 100644
--- a/devel/codebase-memory-mcp/files/patch-src_pipeline_pipeline.c
+++ b/devel/codebase-memory-mcp/files/patch-src_pipeline_pipeline.c
@@ -1,23 +1,20 @@
---- src/pipeline/pipeline.c.orig 2026-08-18 20:39:59 UTC
+--- src/pipeline/pipeline.c.orig 2026-09-16 19:50:09 UTC
+++ src/pipeline/pipeline.c
-@@ -934,6 +934,9 @@ static void predump_complexity(cbm_pipeline_ctx_t *ctx
+@@ -1032,6 +1032,9 @@ static void predump_complexity(cbm_pipeline_ctx_t *ctx
static void predump_complexity(cbm_pipeline_ctx_t *ctx) {
cbm_pipeline_pass_complexity(ctx);
}
+static void predump_sysctl(cbm_pipeline_ctx_t *ctx) {
+ cbm_pipeline_resolve_sysctl(ctx->gbuf);
+}
- static void run_predump_passes(cbm_pipeline_t *p, cbm_pipeline_ctx_t *ctx) {
- static const struct {
- predump_pass_fn fn;
-@@ -943,8 +946,9 @@ static void run_predump_passes(cbm_pipeline_t *p, cbm_
- {predump_deco, "decorator_tags", false}, {predump_cfg, "configlink", false},
- {predump_route, "route_match", false}, {predump_sim, "similarity", true},
- {predump_sem, "semantic_edges", true}, {predump_complexity, "complexity", false},
+ 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},
- };
-- enum { PREDUMP_PASS_COUNT = 6 };
-+ enum { PREDUMP_PASS_COUNT = 7 };
- struct timespec t;
- for (int i = 0; i < PREDUMP_PASS_COUNT && !check_cancel(p); i++) {
- /* "moderate_only" passes (similarity/semantic edges) run in FULL,
+ /* 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. */