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

Source from the content-addressed store, hash-verified

4737}
4738
4739static int cbm_remove_hermes_context_hook(const char *config_path, const char *binary_path) {
4740 static const char *const sequence_path[] = {"hooks", "pre_llm_call"};
4741 static const char identity[] = "\"" CMM_HERMES_HOOK_ID "\"";
4742 char item[CLI_BUF_8K];
4743 if (cbm_build_hermes_context_hook_item(binary_path, item, sizeof(item)) != CLI_OK) {
4744 return CBM_YAML_IDENTITY_EDIT_ERROR;
4745 }
4746 size_t before_len = 0U;
4747 char *before = read_file_str(config_path, &before_len);
4748 int result = cbm_yaml_remove_mapping_sequence_item(
4749 config_path, sequence_path, sizeof(sequence_path) / sizeof(sequence_path[0]), "id",
4750 identity, item);
4751 if (result != CBM_YAML_IDENTITY_EDIT_OK || !before) {
4752 free(before);
4753 return result;
4754 }
4755 size_t after_len = 0U;
4756 char *after = read_file_str(config_path, &after_len);
4757 if (!after) {
4758 free(before);
4759 return CBM_YAML_IDENTITY_EDIT_ERROR;
4760 }
4761 bool exact_removed = before_len != after_len || memcmp(before, after, before_len) != 0;
4762 bool remove_empty_sequence = exact_removed && cbm_hermes_pre_llm_sequence_is_empty(after);
4763 free(before);
4764 free(after);
4765 if (remove_empty_sequence &&
4766 cbm_yaml_remove_mapping_entry(config_path, "hooks", "pre_llm_call") != CLI_OK) {
4767 return CBM_YAML_IDENTITY_EDIT_ERROR;
4768 }
4769 return CBM_YAML_IDENTITY_EDIT_OK;
4770}
4771
4772int cbm_upsert_claude_hooks(const char *settings_path) {
4773 char command[CLI_BUF_8K];

Callers 1

Tested by

no test coverage detected