#ifndef TINY_CONVMEM_DOMAIN_MESSAGE_H #define TINY_CONVMEM_DOMAIN_MESSAGE_H #include #include #include #define TINY_MESSAGE_ID_LENGTH 26 #define TINY_SESSION_ID_MAX 256 #define TINY_CONTENT_MAX (1024U * 1024U) #define TINY_TOOL_CALL_ID_MAX 256 #define TINY_TAG_MAX 128 #define TINY_TAG_COUNT_MAX 32 #define TINY_QUERY_MAX 4096 typedef enum tiny_role { TINY_ROLE_USER = 1, TINY_ROLE_ASSISTANT = 2, TINY_ROLE_SYSTEM = 3 } tiny_role_t; typedef enum tiny_memory_tier { TINY_TIER_SHORT = 1, TINY_TIER_MID = 2, TINY_TIER_LONG = 3, TINY_TIER_DISCARD = 4 } tiny_memory_tier_t; typedef struct tiny_metadata { char *tool_call_id; char **tags; size_t tag_count; tiny_memory_tier_t memory_tier; } tiny_metadata_t; typedef struct tiny_message { char message_id[TINY_MESSAGE_ID_LENGTH + 1]; char *session_id; int64_t timestamp_ms; tiny_role_t role; char *content; tiny_metadata_t metadata; } tiny_message_t; void tiny_message_init(tiny_message_t *message); void tiny_message_free(tiny_message_t *message); int tiny_message_copy(tiny_message_t *destination, const tiny_message_t *source); const char *tiny_role_name(tiny_role_t role); bool tiny_role_parse(const char *value, tiny_role_t *role); const char *tiny_tier_name(tiny_memory_tier_t tier); bool tiny_tier_parse(const char *value, tiny_memory_tier_t *tier); bool tiny_utf8_valid(const char *value, size_t length); bool tiny_message_id_valid(const char *value); #endif