summaryrefslogtreecommitdiff
path: root/src/domain/message.h
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-07-04 14:54:45 +0900
committertanaka takashi <isazaka@gmail.com>2026-07-04 14:54:45 +0900
commit1efecaef1f867cb218366e2b4ab4b901fdd2835f (patch)
tree3080a3d80a1a0671e8e82819d3f785465aace162 /src/domain/message.h
parent34e00404e9561dcaf8d2d99df7470757a4fee915 (diff)
途中経過コミット
Diffstat (limited to 'src/domain/message.h')
-rw-r--r--src/domain/message.h52
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