
    i$                         d Z ddlmZ ddlmZ ddlZ ed       G d d             Zg d	ZeD  cg c]  }  ej                  |        c} Z	d
e
de
fdZde
defdZd
e
dee   fdZyc c} w )u   
AIVA RLM Nexus — Redis Key Schema
Single source of truth for all Redis keys, patterns, and TTLs.
Story 1.03 — Track A

VERIFICATION_STAMP
Story: 1.03
Verified By: parallel-builder
Verified At: 2026-02-25
Tests: 9/9
Coverage: 100%
    )	dataclass)OptionalNT)frozenc                   @    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZy)RedisKeySchemaz>All Redis keys used in AIVA RLM Nexus. Single source of truth.zaiva:state:{session_id}zaiva:transcript:{session_id}zaiva:context:{session_id}zgenesis:staging:{task_id}z!genesis:state:master:{session_id}zgenesis:royal:swarm_taskszaiva:results:{session_id}zkinan:directives:activeiQ i  i,  iX  N)__name__
__module____qualname____doc__AIVA_WORKING_STATEAIVA_TRANSCRIPTAIVA_CONTEXT_PRELOADGENESIS_STAGINGGENESIS_MASTER_STATEGENESIS_SWARM_TASKSAIVA_RESULTSKINAN_ACTIVE_DIRECTIVESTTL_WORKING_STATETTL_TRANSCRIPTTTL_CONTEXT_PRELOADTTL_STAGING     1/mnt/e/genesis-system/core/schema/redis_schema.pyr   r      sL    H 8<O99OA99L7 !NKr   r   )z^aiva:state:[a-zA-Z0-9_-]+$z ^aiva:transcript:[a-zA-Z0-9_-]+$z^aiva:context:[a-zA-Z0-9_-]+$z ^genesis:staging:[a-zA-Z0-9_-]+$z%^genesis:state:master:[a-zA-Z0-9_-]+$z^genesis:royal:swarm_tasks$z^aiva:results:[a-zA-Z0-9_-]+$z^kinan:directives:active$patternreturnc                 n    	  | j                   di |S # t        $ r}t        d| d|  d      d}~ww xY w)a-  
    Build a Redis key from a pattern.

    Args:
        pattern: One of the RedisKeySchema patterns (e.g., "aiva:state:{session_id}")
        **kwargs: Values for placeholders

    Returns:
        Formatted key string

    Raises:
        ValueError: If required fields are missing from kwargs
    zMissing required field z for pattern ''Nr   )formatKeyError
ValueError)r   kwargses      r   	build_keyr$   7   sI    Pw~~''' P21#^G9ANOOPs    	4/4keyc                 4     t         fdt        D              S )us   
    Returns True if key matches a known schema pattern.
    Strict matching — partial matches return False.
    c              3   @   K   | ]  }|j                          y w)N)match).0pr%   s     r   	<genexpr>zvalidate_key.<locals>.<genexpr>P   s     8qwws|8s   )any_COMPILED_PATTERNS)r%   s   `r   validate_keyr.   K   s    
 8%7888r   c                     t               }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  i}|j                  |       S )zl
    Returns the TTL in seconds for a given key pattern.
    Returns None for persistent keys (no TTL).
    )
r   r   r   r   r   r   r   r   r   get)r   schemattl_maps      r   get_ttlr3   S   sh    
 F!!V%=%=V%:%:##V%?%?V%7%7	G ;;wr   )r   dataclassesr   typingr   rer   _KEY_PATTERNScompiler-   strr$   boolr.   intr3   )r*   s   0r   <module>r<      s    "  	 $  .	 .;;jbjjm; Ps P P(9c 9d 9 S  Xc]  ? <s   A)