diff options
| author | tanaka takashi <isazaka@gmail.com> | 2026-06-29 02:36:40 +0900 |
|---|---|---|
| committer | tanaka takashi <isazaka@gmail.com> | 2026-06-29 02:36:40 +0900 |
| commit | 4c6a831aa2a57e2bcc20aa3fc2f1b7172f5be285 (patch) | |
| tree | 074021381abf57cad434430f25027115b681b8a9 /src/domain/message.h | |
| parent | 8d38b06f11c713e547d70468340242f23322152c (diff) | |
feat: 会話メモリのプロトタイプを実装
- 6種類のMCPツールと入力検証を追加
- バイナリログ、スナップショット、復旧、圧縮処理を実装
- Unicode n-gram検索とドメインモデルを追加
- 単体テストと統合テストを追加
- アーキテクチャと実装状況を文書化
- Cコードの記述スタイルを統一
Diffstat (limited to 'src/domain/message.h')
| -rw-r--r-- | src/domain/message.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/domain/message.h b/src/domain/message.h new file mode 100644 index 0000000..fa36d2a --- /dev/null +++ b/src/domain/message.h @@ -0,0 +1,60 @@ +#ifndef TINY_CONVMEM_DOMAIN_MESSAGE_H +#define TINY_CONVMEM_DOMAIN_MESSAGE_H + +#include <stdbool.h> +#include <stddef.h> +#include <stdint.h> + +#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 |
