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

Source from the content-addressed store, hash-verified

4573}
4574
4575static int cbm_remove_hermes_context_hook(const char *config_path, const char *binary_path) {
4576 static const char *const sequence_path[] = {"hooks", "pre_llm_call"};
4577 static const char identity[] = "\"" CMM_HERMES_HOOK_ID "\"";
4578 char item[CLI_BUF_8K];
4579 if (cbm_build_hermes_context_hook_item(binary_path, item, sizeof(item)) != CLI_OK) {
4580 return CBM_YAML_IDENTITY_EDIT_ERROR;
4581 }
4582 size_t before_len = 0U;
4583 char *before = read_file_str(config_path, &before_len);
4584 int result = cbm_yaml_remove_mapping_sequence_item(
4585 config_path, sequence_path, sizeof(sequence_path) / sizeof(sequence_path[0]), "id",
4586 identity, item);
4587 if (result != CBM_YAML_IDENTITY_EDIT_OK || !before) {
4588 free(before);
4589 return result;
4590 }
4591 size_t after_len = 0U;
4592 char *after = read_file_str(config_path, &after_len);
4593 if (!after) {
4594 free(before);
4595 return CBM_YAML_IDENTITY_EDIT_ERROR;
4596 }
4597 bool exact_removed = before_len != after_len || memcmp(before, after, before_len) != 0;
4598 bool remove_empty_sequence = exact_removed && cbm_hermes_pre_llm_sequence_is_empty(after);
4599 free(before);
4600 free(after);
4601 if (remove_empty_sequence &&
4602 cbm_yaml_remove_mapping_entry(config_path, "hooks", "pre_llm_call") != CLI_OK) {
4603 return CBM_YAML_IDENTITY_EDIT_ERROR;
4604 }
4605 return CBM_YAML_IDENTITY_EDIT_OK;
4606}
4607
4608int cbm_upsert_claude_hooks(const char *settings_path) {
4609 char command[CLI_BUF_8K];

Callers 1

Tested by

no test coverage detected