diff options
Diffstat (limited to 'src/domain/message.h')
| -rw-r--r-- | src/domain/message.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/domain/message.h b/src/domain/message.h index fa36d2a..cece77c 100644 --- a/src/domain/message.h +++ b/src/domain/message.h @@ -12,6 +12,9 @@ #define TINY_TAG_MAX 128 #define TINY_TAG_COUNT_MAX 32 #define TINY_QUERY_MAX 4096 +#define TINY_SUMMARY_MAX 4096 +#define TINY_RELATION_COUNT_MAX 32 +#define TINY_SOURCE_COUNT_MAX 64 typedef enum tiny_role { @@ -28,14 +31,56 @@ typedef enum tiny_memory_tier TINY_TIER_DISCARD = 4 } tiny_memory_tier_t; +typedef enum tiny_memory_kind +{ + TINY_KIND_CONVERSATION = 1, + TINY_KIND_EPISODE, + TINY_KIND_SEMANTIC, + TINY_KIND_PROCEDURE, + TINY_KIND_PREFERENCE, + TINY_KIND_SUMMARY +} tiny_memory_kind_t; + +typedef enum tiny_relation_type +{ + TINY_RELATION_DEPENDS_ON = 1, + TINY_RELATION_DERIVED_FROM, + TINY_RELATION_SUPERSEDES, + TINY_RELATION_RELATED_TO +} tiny_relation_type_t; + +typedef struct tiny_relation +{ + tiny_relation_type_t type; + char message_id[TINY_MESSAGE_ID_LENGTH + 1]; +} tiny_relation_t; + typedef struct tiny_metadata { char *tool_call_id; char **tags; size_t tag_count; tiny_memory_tier_t memory_tier; + tiny_memory_kind_t memory_kind; + uint8_t importance; + char *summary; + tiny_relation_t *relations; + size_t relation_count; + char **source_message_ids; + size_t source_count; } tiny_metadata_t; +typedef uint32_t tiny_metadata_mask_t; +#define TINY_METADATA_TOOL_CALL_ID UINT32_C(0x01) +#define TINY_METADATA_TAGS UINT32_C(0x02) +#define TINY_METADATA_TIER UINT32_C(0x04) +#define TINY_METADATA_KIND UINT32_C(0x08) +#define TINY_METADATA_IMPORTANCE UINT32_C(0x10) +#define TINY_METADATA_SUMMARY UINT32_C(0x20) +#define TINY_METADATA_RELATIONS UINT32_C(0x40) +#define TINY_METADATA_SOURCES UINT32_C(0x80) +#define TINY_METADATA_ALL UINT32_C(0xff) + typedef struct tiny_message { char message_id[TINY_MESSAGE_ID_LENGTH + 1]; @@ -44,6 +89,8 @@ typedef struct tiny_message tiny_role_t role; char *content; tiny_metadata_t metadata; + uint64_t revision; + int64_t updated_at_ms; } tiny_message_t; void tiny_message_init(tiny_message_t *message); @@ -54,7 +101,12 @@ 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); +const char *tiny_kind_name(tiny_memory_kind_t kind); +bool tiny_kind_parse(const char *value, tiny_memory_kind_t *kind); +const char *tiny_relation_type_name(tiny_relation_type_t type); +bool tiny_relation_type_parse(const char *value, tiny_relation_type_t *type); bool tiny_utf8_valid(const char *value, size_t length); bool tiny_message_id_valid(const char *value); +bool tiny_metadata_valid(const tiny_metadata_t *metadata); #endif |
