§
    ÎÐjR  ã                   óv   — d Z ddlZddlZddlZddlZddlZddlZddlZdZdZ	dZ
dZdZ G d„ d	¦  «        Zd
„ ZdS )zABounded MCP pages over session-local, immutable result snapshots.é    Né   ip  i   iX  é   c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd
dedddedœd	„Z	dS )ÚResultPagesc                 óv   — i | _         t          j        d¦  «        | _        t	          j        ¦   «         | _        d S )Né    )Ú
_snapshotsÚsecretsÚtoken_bytesÚ_secretÚ	threadingÚRLockÚ_lock)Úselfs    ú9C:\Users\johnn\OneDrive\Documents\AI\shared\mcp\paging.pyÚ__init__zResultPages.__init__   s.   € ØˆŒÝÔ*¨2Ñ.Ô.ˆŒÝ”_Ñ&Ô&ˆŒ
ˆ
ˆ
ó    c                 óä   — | j         5  | j                             ¦   «         D ]}|d                              ¦   «          Œ| j                             ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )NÚfile)r   r	   ÚvaluesÚcloseÚclear)r   Úsnapshots     r   r   zResultPages.close   s¹   € ØŒZð 	$ð 	$Ø œO×2Ò2Ñ4Ô4ð )ð )�Ø˜Ô ×&Ò&Ñ(Ô(Ð(Ð(ØŒO×!Ò!Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$s   ˆAA%Á%A)Á,A)c                 óø   — |› d|› �                      ¦   «         }t          j        | j        |d¦  «        d d…         }t	          j        |dz   |z   ¦  «                             ¦   «                              d¦  «        S )Nú:Úsha256é   ó   .ú=)ÚencodeÚhmacÚdigestr   Úbase64Úurlsafe_b64encodeÚdecodeÚrstrip)r   ÚidentityÚpositionÚvalueÚ	signatures        r   Ú_cursorzResultPages._cursor    st   € ØÐ(Ð(˜hÐ(Ð(×/Ò/Ñ1Ô1ˆÝ”K ¤¨e°XÑ>Ô>¸sÀ¸sÔCˆ	ÝÔ'¨°©°yÑ(@ÑAÔA×HÒHÑJÔJ×QÒQÐRUÑVÔVÐVr   c                 óL  — 	 t          j        |dt          |¦  «         dz  z  z   ¦  «        }|d d…         |dd …         }}|dd…         dk    s6t          j        |t          j        | j        |d¦  «        d d…         ¦  «        st          ¦   «         ‚|                     ¦   «          	                    d¦  «        \  }}| j
        |         }|d	         |k    rt          d
¦  «        ‚|t          |¦  «        |fS # t          t          t          f$ r}	t          d¦  «        |	‚d }	~	ww xY w)Nr   é   ióÿÿÿiôÿÿÿr   r   r   r   ÚqueryzCThe cursor belongs to different filters; repeat the original query.zYInvalid or expired cursor, or changed filters. Repeat the original search without cursor.)r#   Úurlsafe_b64decodeÚlenr!   Úcompare_digestr"   r   Ú
ValueErrorr%   Úsplitr	   ÚintÚKeyErrorÚUnicodeError)
r   Úcursorr.   Údatar)   r*   r'   r(   r   Úexcs
             r   Ú_resumezResultPages._resume%   s8  € ð	CÝÔ+¨F°S½SÀ¹[¼[¸LÈ1Ñ<LÑ5MÑ,MÑNÔNˆDØ# D S Dœz¨4°°°¬:�9ˆEØ�C˜�GŒ} Ò$Ð$­DÔ,?À	Í4Ì;ÐW[ÔWcÐejÐltÑKuÔKuÐvyÐwyÐvyÔKzÑ,{Ô,{Ð$Ý ‘l”lÐ"Ø!&§¢¡¤×!5Ò!5°cÑ!:Ô!:ÑˆH�hØ” xÔ0ˆHØ˜Ô  EÒ)Ð)Ý Ð!fÑgÔgÐgØ�S ™]œ]¨HÐ4Ð4øÝ�,­
Ð3ð 	Cð 	Cð 	CÝÐxÑyÔyð  @Cð  Cøøøøð	Cøøøs   ‚C4C7 Ã7D#ÄDÄD#NÚitemsF)ÚkeyÚlimitr7   ÚmetadataÚsummary_onlyÚ	max_charsc                ó\  — t          |t          ¦  «        s$t          |t          ¦  «        rd|cxk    rdk    sn t          d¦  «        ‚t	          j        |ddd¬¦  «        }| j        5  t          j        ¦   «         }	t          | j
                             ¦   «         ¦  «        D ];\  }
}|	|d         z
  t          k    r"|d	                              ¦   «          | j
        |
= Œ<|r|                      ||¦  «        \  }
}}�nkt          | j
        ¦  «        t           k    rSt#          t%          | j
        ¦  «        ¦  «        }| j
                             |¦  «        d	                              ¦   «          t)          j        d
¦  «        d}}
t-          j        d¬¦  «        }d}	 |D ]…}t	          j        |dd¬¦  «        dz                        d¦  «        }|                     ¦   «         t          |¦  «        z   t4          k    rt          d¦  «        ‚|                     |¦  «         |dz  }Œ†|||	|t9          |pi ¦  «        dœ}|| j
        |
<   n## t:          $ r |                     ¦   «          ‚ w xY w|d	         }|                     |¦  «         g d}}|sÜt          |¦  «        |k     rÉ|                     ¦   «         }|                     ¦   «         }|snž|                      d¦  «        }|t          |¦  «        z   |k    r'|                     |¦  «         |st          d¦  «        ‚nL| !                    t	          j"        |¦  «        ¦  «         |t          |¦  «        z  }t          |¦  «        |k     °É|                     ¦   «         }t          | #                    d¦  «        ¦  «        }ddi|d         ¥||dt          |¦  «        d|d|r|  $                    |
|¦  «        nd i¥}|r:|d         tK          dt          t          |	|d         z
  z
  ¦  «        ¦  «        dœ|d<   |cd d d ¦  «         S # 1 swxY w Y   d S )Né   éd   z'limit must be an integer from 1 to 100.TF)ú,r   )Ú	sort_keysÚensure_asciiÚ
separatorsÚcreatedr   r   r   zw+b)Úmode)rF   rG   ú
zutf-8z3Search snapshot exceeds 128 MiB. Narrow the search.)r   r.   rH   Úcountr>   zROne result exceeds the page budget. Narrow the query or request a smaller excerpt.ÚstatusÚdoner>   rK   Úhas_moreÚnext_cursor)Ústored_resultsÚexpires_in_secondsÚsummary)&Ú
isinstanceÚboolr4   r2   ÚjsonÚdumpsr   ÚtimeÚ	monotonicÚlistr	   r;   ÚSNAPSHOT_TTLr   r:   r0   ÚSNAPSHOT_COUNTÚnextÚiterÚpopr
   Ú	token_hexÚtempfileÚTemporaryFiler    ÚtellÚSNAPSHOT_MAX_BYTESÚwriteÚdictÚBaseExceptionÚseekÚreadliner%   ÚappendÚloadsÚreadr+   Úmax)r   r.   Úrecordsr<   r=   r7   r>   r?   r@   Únowr'   r   r(   ÚoldestÚwriterrK   ÚrecordÚlineÚreaderr;   ÚcharsÚstartÚtextrN   Úresults                            r   ÚpagezResultPages.page3   s  € Ý�e�TÑ"Ô"ð 	H­*°U½CÑ*@Ô*@ð 	HÈÈUÐHYÐHYÒHYÐHYÐVYÒHYÐHYÐHYÐHYÝÐFÑGÔGÐGÝ”
˜5¨D¸uÐQ[Ð\Ñ\Ô\ˆØŒZð 1	ð 1	Ý”.Ñ"Ô"ˆCÝ&*¨4¬?×+@Ò+@Ñ+BÔ+BÑ&CÔ&Cð 2ð 2Ñ"�˜(Ø˜ )Ô,Ñ,­|Ò;Ð;Ø˜VÔ$×*Ò*Ñ,Ô,Ð,Øœ¨Ð1øØð Ø/3¯|ª|¸FÀEÑ/JÔ/JÑ,�˜( H¡Hå�t”Ñ'Ô'­>Ò9Ð9Ý!¥$ t¤Ñ"7Ô"7Ñ8Ô8�FØ”O×'Ò'¨Ñ/Ô/°Ô7×=Ò=Ñ?Ô?Ð?Ý%,Ô%6°rÑ%:Ô%:¸A˜(�Ý!Ô/°UÐ;Ñ;Ô;�Ø�ðØ")ð #ð #˜Ý $¤
¨6ÀÐR\Ð ]Ñ ]Ô ]Ð`dÑ d×lÒlÐmtÑuÔu˜Ø!Ÿ;š;™=œ=­3¨t©9¬9Ñ4Õ7IÒIÐIÝ",Ð-bÑ"cÔ"cÐcØŸš TÑ*Ô*Ð*Ø ™
˜˜Ø(.¸È3ÐY^ÕlpÐqyÐqÐ}ñ  mAô  mAð   Bð   B�HØ08�D”O HÑ-Ð-øÝ$ð ð ð Ø—L’L‘N”N�NØðøøøð ˜fÔ%ˆFØ�KŠK˜Ñ!Ô!Ð!Ø˜q�5ˆEØð 'Ý˜%‘j”j 5Ò(Ð(Ø"ŸKšK™MœM�EØ!Ÿ?š?Ñ,Ô,�DØð ØØŸ;š; wÑ/Ô/�DØ�s 4™yœyÑ(¨9Ò4Ð4ØŸš EÑ*Ô*Ð*Ø$ð CÝ",ð  .Bñ  #Cô  #Cð  CØØ—L’L¥¤¨DÑ!1Ô!1Ñ2Ô2Ð2Ø�S ™YœYÑ&�Eõ ˜%‘j”j 5Ò(Ð(ð —{’{‘}”}ˆHÝ˜FŸKšK¨™NœNÑ+Ô+ˆHØ ð  ~¨(°:Ô*>ð  ~ÀÀUÈGÕUXÐY^ÑU_ÔU_ÐakÐmuð  xEð  ksð  G}ð  GK÷  GSò  GSð  T\ð  ^fñ  Ggô  Ggð  Ggð  y}ð  ~ð  ~ˆFØð YØ7?ÀÔ7HÕ`cÐdeÕgjÕkwÐ{~ð  BJð  KTô  BUñ  |Uñ  lVñ  hWô  hWñ  aXô  aXð  %Yð  %Y��yÑ!Øðc1	ð 1	ð 1	ð 1	ñ 1	ô 1	ð 1	ð 1	ð 1	ð 1	ð 1	ð 1	øøøð 1	ð 1	ð 1	ð 1	ð 1	ð 1	s-   Á(D1P!ÆB)IÉP!É I$É$F0P!Ð!P%Ð(P%)N)
Ú__name__Ú
__module__Ú__qualname__r   r   r+   r:   Ú	PAGE_SIZEÚPAGE_MAX_CHARSrx   © r   r   r   r      sˆ   € € € € € ð'ð 'ð 'ð
$ð $ð $ðWð Wð Wð
Cð Cð Cð5¨w¸iÐPTÐ_cÐrwð  DRð 5ð 5ð 5ð 5ð 5ð 5ð 5r   r   c                 óT  — t          | t          ¦  «        s| S i }h d£}h d£}h d£}|                      ¦   «         D ]m\  }}|dk    rŒ||v r4t          |t          ¦  «        rd„ |                     ¦   «         D ¦   «         }n$||v rt          |¦  «        }n||v rd„ |D ¦   «         }|||<   Œn|S )zNRemove schema annotations, preserving properties named title and literal data.>   ú$defsÚ
propertiesÚdefinitionsÚdependentSchemasÚpatternProperties>	   ÚifÚnotÚelseÚthenr;   ÚcontainsÚpropertyNamesÚadditionalPropertiesÚunevaluatedProperties>   ÚallOfÚanyOfÚoneOfÚprefixItemsÚtitlec                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r~   ©Ústrip_schema_titles)Ú.0ÚnameÚchilds      r   ú
<dictcomp>z'strip_schema_titles.<locals>.<dictcomp>w   s'   € ÐWÐWÐW¹+¸$À�TÕ.¨uÑ5Ô5ÐWÐWÐWr   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r~   r“   )r•   r—   s     r   ú
<listcomp>z'strip_schema_titles.<locals>.<listcomp>{   s!   € ÐCÐCÐC°EÕ(¨Ñ/Ô/ÐCÐCÐCr   )rS   re   r;   r”   )Úschemarw   ÚmappingsÚchildrenÚarraysr<   r)   s          r   r”   r”   k   sç   € å�f�dÑ#Ô#ð ØˆØ€FØ^Ð^Ð^€Hð Dð  Dð  D€HØ7Ð7Ð7€FØ—l’l‘n”nð 	ð 	‰
ˆˆUØ�'Š>ˆ>ØØ�(ˆ?ˆ?�z¨%µÑ6Ô6ˆ?ØWÐWÈÏÊÉÌÐWÑWÔWˆEˆEØ�Hˆ_ˆ_Ý'¨Ñ.Ô.ˆEˆEØ�Fˆ]ˆ]ØCÐC¸UÐCÑCÔCˆEØˆˆs‰ˆØ€Mr   )Ú__doc__r#   r!   rU   r
   r`   r   rW   r|   r}   rc   rZ   r[   r   r”   r~   r   r   ú<module>r       s³   ðà GÐ Gà €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€ð €	Ø€Ø&Ð Ø€Ø€ðTð Tð Tð Tð Tñ Tô Tð Tðnð ð ð ð r   