From d57577637c1c1a16176d63d5a89e9eec3c1e4d7c Mon Sep 17 00:00:00 2001 From: tanaka takashi Date: Fri, 17 Jul 2026 12:15:41 +0900 Subject: fix: sessions paginationとhealth診断を改善 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sessions cursorのエンコード不具合と長いsession IDのバッファ問題を修正 - response budgetに基づくsessionsページングを追加 - get_system_healthにsession_countを追加 - metadata_jsonのフィールド別エラー診断を追加 - CRUD互換性とDebug/Release/ASanテストを確認 --- src/mcp/tools/update_message.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src/mcp/tools/update_message.c') diff --git a/src/mcp/tools/update_message.c b/src/mcp/tools/update_message.c index aca1bed..9b02a6f 100644 --- a/src/mcp/tools/update_message.c +++ b/src/mcp/tools/update_message.c @@ -22,6 +22,8 @@ call_update_message(const mcpc_tool_t *tool, mcpc_ucbr_t *result) tiny_json_buffer_t json; bool changed = false; tiny_metadata_mask_t metadata_mask = 0; + const char *metadata_error = NULL; + tiny_metadata_parse_status_t metadata_status = TINY_METADATA_PARSE_OK; tiny_message_init(&parsed); tiny_message_init(&updated); patch.content = content; @@ -29,10 +31,22 @@ call_update_message(const mcpc_tool_t *tool, mcpc_ucbr_t *result) patch.metadata_mask = 0; patch.expected_revision = (uint64_t)expected; patch.has_expected_revision = expected_status == MCPC_EC_0; - if (!context || !message_id || (!content && !metadata_json) - || (metadata_json && !tiny_mcp_parse_metadata(metadata_json, &parsed, &metadata_mask)) - || (expected_status != MCPC_EC_0 && expected_status != MCPC_EC_ANYDATA_NOTFOUND) - || (patch.has_expected_revision && expected < 1)) + if (metadata_json) + { + metadata_status + = tiny_mcp_parse_metadata(metadata_json, &parsed, &metadata_mask, &metadata_error); + } + if (metadata_status == TINY_METADATA_PARSE_NO_MEMORY) + { + tiny_mcp_tool_add_error(result, "INTERNAL_ERROR", metadata_error); + } + else if (metadata_status == TINY_METADATA_PARSE_INVALID) + { + tiny_mcp_tool_add_error(result, "VALIDATION_ERROR", metadata_error); + } + else if (!context || !message_id || (!content && !metadata_json) + || (expected_status != MCPC_EC_0 && expected_status != MCPC_EC_ANYDATA_NOTFOUND) + || (patch.has_expected_revision && expected < 1)) { tiny_mcp_tool_add_error(result, "VALIDATION_ERROR", "invalid update_message arguments"); } -- cgit v1.2.3