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:4519–4550  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

Tested by

no test coverage detected