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

Function cbm_remove_hermes_context_hook

src/cli/cli.c:4513–4544  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4511}
4512
4513static int cbm_remove_hermes_context_hook(const char *config_path, const char *binary_path) {
4514 static const char *const sequence_path[] = {"hooks", "pre_llm_call"};
4515 static const char identity[] = "\"" CMM_HERMES_HOOK_ID "\"";
4516 char item[CLI_BUF_8K];
4517 if (cbm_build_hermes_context_hook_item(binary_path, item, sizeof(item)) != CLI_OK) {
4518 return CBM_YAML_IDENTITY_EDIT_ERROR;
4519 }
4520 size_t before_len = 0U;
4521 char *before = read_file_str(config_path, &before_len);
4522 int result = cbm_yaml_remove_mapping_sequence_item(
4523 config_path, sequence_path, sizeof(sequence_path) / sizeof(sequence_path[0]), "id",
4524 identity, item);
4525 if (result != CBM_YAML_IDENTITY_EDIT_OK || !before) {
4526 free(before);
4527 return result;
4528 }
4529 size_t after_len = 0U;
4530 char *after = read_file_str(config_path, &after_len);
4531 if (!after) {
4532 free(before);
4533 return CBM_YAML_IDENTITY_EDIT_ERROR;
4534 }
4535 bool exact_removed = before_len != after_len || memcmp(before, after, before_len) != 0;
4536 bool remove_empty_sequence = exact_removed && cbm_hermes_pre_llm_sequence_is_empty(after);
4537 free(before);
4538 free(after);
4539 if (remove_empty_sequence &&
4540 cbm_yaml_remove_mapping_entry(config_path, "hooks", "pre_llm_call") != CLI_OK) {
4541 return CBM_YAML_IDENTITY_EDIT_ERROR;
4542 }
4543 return CBM_YAML_IDENTITY_EDIT_OK;
4544}
4545
4546int cbm_upsert_claude_hooks(const char *settings_path) {
4547 char command[CLI_BUF_8K];

Callers 1

Tested by

no test coverage detected