MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / cbm_upsert_json_named_mcp

Function cbm_upsert_json_named_mcp

src/cli/cli.c:1996–2033  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1994}
1995
1996static int cbm_upsert_json_named_mcp(const char *binary_path, const char *config_path,
1997 const char *const *object_path, size_t path_len,
1998 cbm_json_mcp_schema_t schema, const char *entry_name,
1999 const char *argument) {
2000 if (!binary_path || !config_path || !object_path || !entry_name || !entry_name[0]) {
2001 return CLI_ERR;
2002 }
2003 char *document = NULL;
2004 size_t document_length = 0U;
2005 int read_result = cbm_json_like_read_document(config_path, &document, &document_length);
2006 if (read_result < 0) {
2007 return CLI_ERR;
2008 }
2009 if (read_result == 0) {
2010 int ownership = cbm_json_mcp_snapshot_ownership(
2011 document, document_length, object_path, path_len, schema, entry_name, argument,
2012 binary_path, g_previous_managed_mcp_command);
2013 /* STALE (our exact shape, dead binary path) is repairable — that is
2014 * the update contract. Only a genuinely foreign shape refuses. */
2015 if (ownership != CBM_JSON_LIKE_OBJECT_MATCH && ownership != CBM_JSON_LIKE_OBJECT_MISSING &&
2016 ownership != CBM_JSON_MCP_OWNERSHIP_STALE) {
2017 free(document);
2018 return CLI_ERR;
2019 }
2020 }
2021
2022 char *entry = cbm_build_json_mcp_entry(binary_path, schema, argument);
2023 if (!entry) {
2024 free(document);
2025 return CLI_ERR;
2026 }
2027 int edit_result = cbm_json_like_upsert_entry_if_unchanged(
2028 config_path, object_path, path_len, entry_name, entry, read_result == 1 ? NULL : document,
2029 document_length);
2030 free(entry);
2031 free(document);
2032 return edit_result == 0 ? CLI_OK : CLI_ERR;
2033}
2034
2035static int cbm_upsert_json_mcp(const char *binary_path, const char *config_path,
2036 const char *const *object_path, size_t path_len,

Callers 2

cbm_upsert_json_mcpFunction · 0.85
cbm_upsert_junie_mcpFunction · 0.85

Tested by

no test coverage detected