Ë
    ÛJêj:  ã                   óâ   — d dl Zd dlmc m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ej                  j                  ej                  j                  e«      dddd«      Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zy)é    Nz..z.kiloÚpluginúcyberbrain26-freeautoc                  ó  — t         j                  j                  t        d«      } t         j                  }|j                  } || «      }|�st        j                  d| › �«      dz   dt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      t        j                  |«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      dœz  }t        t        j                  |«      «      ‚dx}x}}t        | «      5 }t        j                  |«      }ddd«       d   }d	}||k(  }|slt        j                   d
|fd||f«      t        j                  |«      t        j                  |«      dœz  }	dd|	iz  }
t        t        j                  |
«      «      ‚dx}x}}|d   }d}||k(  }|slt        j                   d
|fd||f«      t        j                  |«      t        j                  |«      dœz  }	dd|	iz  }
t        t        j                  |
«      «      ‚dx}x}}y# 1 sw Y   �ŒxY w)z.Plugin manifest file exists and is valid JSON.zplugin.jsonúMissing úd
>assert %(py7)s
{%(py7)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.path
}.exists
}(%(py5)s)
}ÚosÚmanifest_path©Úpy0Úpy2Úpy4Úpy5Úpy7NÚnamer   ©ú==©z%(py1)s == %(py4)s©Úpy1r   úassert %(py6)sÚpy6Úentryzsrc/index.ts©r   ÚpathÚjoinÚ
PLUGIN_DIRÚexistsÚ
@pytest_arÚ_format_assertmsgÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚopenÚjsonÚloadÚ_call_reprcompare)r	   Ú@py_assert1Ú@py_assert3Ú@py_assert6Ú@py_format8ÚfÚmanifestÚ@py_assert0Ú@py_assert2Ú@py_format5Ú@py_format7s              úD/home/oem/CyberBrain26-unified/tests/test_kilo_plugin_integration.pyÚtest_plugin_manifest_existsr5      s‹  € ä—G‘G—L‘L¤¨]Ó;€MÜ�7‰7ÐDˆ7�>‰>ÐD‰>˜-Ó(ÐDÒ(×DÖD¨H°]°OÐ*D×D×D×D×D×DÓDŒ2×D×DÓDŒ2×D×DÔDˆ7×D×DÒDˆ>×D×D×D×D×DÐD˜-×D×DÓD˜-×D×DÔDÐ(×D×D×D×D×DÔDÜ	ˆmÓ	ð   Ü—9‘9˜Q“<ˆ÷ à�FÑÐ6Ð6Ð6ÐÐ6Ñ6×6×6Õ6ÐÐ6×6×6Ó6Ð×6×6Ò6Ð6×6×6×6×6×6×6Ó6Ø�GÑÐ. Ð.Ð Ñ.×.×.Õ.Ð ×.×.Ó.Ð×.×.Ò. ×.×.×.×.×.×.Ô.÷ ñ  ús   Å I?É?J	c                  ón  — t         j                  j                  t        d«      } t         j                  }|j                  } || «      }|�st        j                  d| › �«      dz   dt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      t        j                  |«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      dœz  }t        t        j                  |«      «      ‚dx}x}}t        | «      5 }t        j                  |«      }ddd«       d}|v }|s™t        j                   d	|fd
||f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      nddœz  }	dd|	iz  }
t        t        j                  |
«      «      ‚dx}}|d   d   }d}||k(  }|slt        j                   d|fd||f«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚dx}x}}|d   d   }d}||k(  }|slt        j                   d|fd||f«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚dx}x}}y# 1 sw Y   �Œ¶xY w)z2Config file exists and has required role mappings.z!cyberbrain26-freeauto.config.jsonr   r   r   Úconfig_pathr
   NÚroles©Úin©z%(py1)s in %(py3)sÚconfig©r   Úpy3úassert %(py5)sr   ÚorchestratorÚfreer   r   r   r   r   ÚcoderÚ	efficientr   )r7   r*   r+   r,   r-   r.   r<   r0   r1   Ú@py_format4Ú@py_format6r2   r3   s                r4   Útest_config_validrF      sé  € ä—'‘'—,‘,œzÐ+NÓO€KÜ�7‰7Ð@ˆ7�>‰>Ð@‰>˜+Ó&Ð@Ò&×@Ö@¨(°;°-Ð(@×@×@×@×@×@Ó@Œ2×@×@Ó@Œ2×@×@Ô@ˆ7×@×@Ò@ˆ>×@×@×@×@×@Ð@˜+×@×@Ó@˜+×@×@Ô@Ð&×@×@×@×@×@Ô@Ü	ˆkÓ	ð ˜aÜ—‘˜1“ˆ÷àÐˆ7�fÐ××Õˆ7�f××Óˆ7×××××Ð�f××Ó�f××××××ÓØ�'‰?˜>Ñ*Ð4¨fÐ4Ð*¨fÑ4×4×4Õ4Ð*¨f×4×4Ó4Ð*×4×4Ò4¨f×4×4×4×4×4×4Ó4Ø�'‰?˜7Ñ#Ð2 {Ð2Ð# {Ñ2×2×2Õ2Ð# {×2×2Ó2Ð#×2×2Ò2 {×2×2×2×2×2×2Ô2÷	ñ ús   Å L*Ì*L4c                  ó®	  — t        j                  t        j                  dddgdddd¬«      } | j                  }d}||k(  }|sÐt        j                  d	|fd
||f«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }t        j                  d| j                  › �«      dz   d|iz  }t        t        j                  |«      «      ‚dx}x}}t        j                   | j"                  j%                  «       «      }t'        |t(        «      }|�sddt        j                  «       v st        j                  t&        «      rt        j                  t&        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      nddt        j                  «       v st        j                  t(        «      rt        j                  t(        «      ndt        j                  |«      dœz  }t        t        j                  |«      «      ‚d}t+        |«      }d}	||	k\  }|söt        j                  d|fd||	f«      dt        j                  «       v st        j                  t*        «      rt        j                  t*        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚dx}x}}	|D �ch c]  }|d   ’Œ	 }}d}||v }|s™t        j                  d|fd ||f«      t        j                  |«      d!t        j                  «       v st        j                  |«      rt        j                  |«      nd!d"œz  }d#d$|iz  }t        t        j                  |«      «      ‚dx}}d%}||v }|s™t        j                  d|fd ||f«      t        j                  |«      d!t        j                  «       v st        j                  |«      rt        j                  |«      nd!d"œz  }d#d$|iz  }t        t        j                  |«      «      ‚dx}}yc c}w )&z$Python CLI returns valid model list.z-mzcyberbrain26.model_layer.clizlist-modelsTú/home/oem/CyberBrain26-v4é   ©Úcapture_outputÚtextÚcwdÚtimeoutr   r   ©z2%(py2)s
{%(py2)s = %(py0)s.returncode
} == %(py5)sÚresult©r   r   r   zCLI failed: ú
>assert %(py7)sr   Nz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}Ú
isinstanceÚmodelsÚlist)r   r   r   r   é   )ú>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sÚlen)r   r   r>   r   zassert %(py8)sÚpy8Úmodel_idrA   r9   r;   Ú	model_idsr=   r?   r   rC   )Ú
subprocessÚrunÚsysÚ
executableÚ
returncoder   r)   r    r!   r"   r#   r   Ústderrr$   r%   r'   ÚloadsÚstdoutÚstriprS   rU   rX   )rP   r*   Ú@py_assert4r+   rE   r-   rT   r2   r1   Ú@py_assert5r3   Ú@py_format9Úmr[   r0   rD   s                   r4   Útest_cli_list_modelsri      s³  € ä�^‰^Ü	�‰˜Ð=¸}ÐMØ $Ð,GØô€Fð
 ×ÑÐA ÐAÐ Ñ!×A×AÕAÐ ×A×A×A×A×AÑAˆ6×A×AÓAˆ6×A×AÔAÐ×A×AÒA ×A×A×A \°&·-±-°Ð#A×A×A×A×A×A×AÐAÜ�Z‰Z˜Ÿ™×+Ñ+Ó-Ó.€FÜ�fœdÓ#Ð#Ò#×#×#×#×#Õ#Œ:×#×#Ó#Œ:×#×#×#×#×#Ò#�f×#×#Ó#�f×#×#×#×#×#Ò#œd×#×#Ó#œd×#×#Ô#Ð#×#×#×#×#×#Ð#Üˆv‹;Ð˜!Ðˆ;˜!Ñ××Õˆ;˜!×××××ÑŒ3××ÓŒ3×××××Òˆv××Óˆv××Ôˆ;××Ò˜!××××××ÓØ(.Ö/ 1��:“Ð/€IÐ/ØÐˆ6�YÐ××Õˆ6�Y××Óˆ6×××××Ð�Y××Ó�Y××××××ÓØÐ#ˆ;˜)Ð#×#×#Õ#ˆ;˜)×#×#Ó#ˆ;×#×#×#×#×#Ð#˜)×#×#Ó#˜)×#×#×#×#×#×#Ô#ùò 0s   Í9Sc                  óJ  — t        j                  d«      } | €t        j                  d«       	 t	        j
                  | ddgddt        d¬«      }j                  |j                  z   }|j                  d
k7  rd|v sd|v rt        j                  d«       |j                  }d
}||k(  }|sÐt        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                   |«      ndt        j                   |«      t        j                   |«      dœz  }t        j"                  d|j                  › �«      dz   d|iz  }t%        t        j&                  |«      «      ‚dx}x}}y# t        $ r t        j                  d	«       Y �ŒRw xY w)z#TypeScript compiles without errors.ÚnpxNznpx not availableÚtscz--noEmitTrI   rJ   z'TypeScript compiler (npx) not availabler   zcommand not foundznot the tsc commandz!TypeScript compiler not availabler   rO   rP   rQ   zTS compile failed: rR   r   )ÚshutilÚwhichÚpytestÚskipr\   r]   r   ÚFileNotFoundErrorrc   ra   r`   r   r)   r    r!   r"   r#   r   r$   r%   )rk   rP   Úoutputr*   re   r+   rE   r-   s           r4   Útest_bridge_typescript_compilesrs   -   s0  € ä
�,‰,�uÓ
€CØ
€{Ü�‰Ð'Ô(ð?Ü—‘Ø�%˜Ð$Ø d´
Øô
ˆð �]‰]˜VŸ]™]Ñ*€FØ×Ñ˜AÒÐ#6¸&Ñ#@ÐDYÐ]cÑDcÜ�‰Ð7Ô8Ø×ÑÐH ÐHÐ Ñ!×H×HÕHÐ ×H×H×H×H×HÑHˆ6×H×HÓHˆ6×H×HÔHÐ×H×HÒH ×H×H×HÐ%8¸¿¹¸Ð#H×H×H×H×H×H×HÑHøô ò ?Ü�‰Ð=×>ð?ús   ®!F  Æ F"Æ!F"c                  óî  — ddl } ddddddd	d
œ}t        j                  |«      }|}| j                  dd|«      }| j                  dd|«      }| j                  dd|«      }| j                  dd|«      }| j                  dd|«      }| j                  dd|«      }d}||v }|s™t	        j
                  d|fd||f«      t	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      nddœz  }dd|iz  }t        t	        j                  |«      «      ‚dx}}d}||v }|s™t	        j
                  d|fd||f«      t	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      nddœz  }dd|iz  }t        t	        j                  |«      «      ‚dx}}d}||v }|s™t	        j
                  d|fd||f«      t	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      nddœz  }dd|iz  }t        t	        j                  |«      «      ‚dx}}d}||v }|s™t	        j
                  d|fd||f«      t	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      nddœz  }dd|iz  }t        t	        j                  |«      «      ‚dx}}d}||v }|s™t	        j
                  d|fd||f«      t	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      nddœz  }dd|iz  }t        t	        j                  |«      «      ‚dx}}d}||v}|s™t	        j
                  d|fd||f«      t	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      nddœz  }dd|iz  }t        t	        j                  |«      «      ‚dx}}y) z<Test anonymization logic directly (Python port of TS logic).r   Nzadmin@example.comz192.168.1.1z123-456-7890z123-45-6789Ú(sk_live_abcdefghijklmnopqrstuvwxyz123456z4532-1234-5678-9012ÚCB26_MARKER_abc123def456)ÚemailÚipÚphoneÚssnÚapi_keyÚccÚmarkerz.[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}z[REDACTED_EMAIL]z&\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\bz[REDACTED_IP]z\b\d{3}-\d{2}-\d{4}\bz[REDACTED_SSN]z\b\d{3}[-.]?\d{3}[-.]?\d{4}\bz[REDACTED_PHONE]z[A-Za-z0-9_-]{32,}z[REDACTED_API_KEY]z\bCB26_MARKER_[A-Za-z0-9_-]+\bÚ r9   r;   Úcleanedr=   r?   r   ÚCB26_MARKER_)únot in)z%(py1)s not in %(py3)s)Úrer'   ÚdumpsÚsubr   r)   r#   r    r!   r"   r$   r%   )r‚   Ú
test_inputÚ	str_inputr   r0   r1   rD   rE   s           r4   Útest_anonymizer_logicr‡   @   sÐ  € ãà$ØØØØ=Ø#Ø,ñ€Jô —
‘
˜:Ó&€IØ€Gà�f‰fÐFÐHZÐ\cÓd€GØ�f‰fÐ>ÀÐQXÓY€GØ�f‰fÐ-Ð/?ÀÓI€GØ�f‰fÐ5Ð7IÈ7ÓS€GØ�f‰fÐ*Ð,@À'ÓJ€GØ�f‰fÐ6¸¸GÓD€GàÐ(Ð Ð(×(×(Õ(Ð ×(×(Ó(Ð×(×(×(×(×(Ð( ×(×(Ó( ×(×(×(×(×(×(Ó(ØÐ%ˆ?˜gÐ%×%×%Õ%ˆ?˜g×%×%Ó%ˆ?×%×%×%×%×%Ð%˜g×%×%Ó%˜g×%×%×%×%×%×%Ó%ØÐ(Ð Ð(×(×(Õ(Ð ×(×(Ó(Ð×(×(×(×(×(Ð( ×(×(Ó( ×(×(×(×(×(×(Ó(ØÐ&Ð˜wÐ&×&×&Õ&Ð˜w×&×&Ó&Ð×&×&×&×&×&Ð&˜w×&×&Ó&˜w×&×&×&×&×&×&Ó&ØÐ*Ð 7Ð*×*×*Õ*Ð 7×*×*Ó*Ð×*×*×*×*×*Ð* 7×*×*Ó* 7×*×*×*×*×*×*Ó*ØÐ(ˆ> Ð(×(×(Õ(ˆ> ×(×(Ó(ˆ>×(×(×(×(×(Ð( ×(×(Ó( ×(×(×(×(×(×(Ô(ó    c                  óò  — t        j                  d«      } | €t        j                  d«       	 t	        j
                  | dgdddd¬«      }g }j                  }d	}||k(  }|}|s'd}|j                  }|j                  }	 |	«       }
||
v }|}|�s¨t        j                  d
|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }|j!                  |«       |sÈt        j                  dfd
f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  «      t        j                  	«      t        j                  |
«      dœz  }dd|iz  }|j!                  |«       t        j"                  |d«      i z  }dd|iz  }t%        t        j&                  |«      «      ‚dx}x}x}x}x}x}x}x}x}	}
y# t        j                  $ r t        j                  d«       Y �Œ+w xY w)z#kilo snapshot command is available.ÚkiloNzkilo CLI not availablez--helpTrH   rI   rJ   r   r   )z2%(py4)s
{%(py4)s = %(py2)s.returncode
} == %(py7)srP   )r   r   r   z%(py9)sÚpy9r9   )zh%(py12)s in %(py20)s
{%(py20)s = %(py18)s
{%(py18)s = %(py16)s
{%(py16)s = %(py14)s.stdout
}.lower
}()
})Úpy12Úpy14Úpy16Úpy18Úpy20z%(py22)sÚpy22é   zassert %(py25)sÚpy25)rm   rn   ro   rp   r\   r]   ÚTimeoutExpiredr`   rc   Úlowerr   r)   r    r!   r"   r#   ÚappendÚ_format_boolopr$   r%   )rŠ   rP   r*   r+   r,   rf   r0   Ú@py_assert11Ú@py_assert15Ú@py_assert17Ú@py_assert19Ú@py_assert13r-   Ú@py_format10Ú@py_format21Ú@py_format23Ú@py_format24Ú@py_format26s                     r4   Ú!test_kilo_snapshot_command_existsr¢   ]   s’  € ä�<‰<˜Ó€DØ€|Ü�‰Ð,Ô-ð.Ü—‘Ø�8ÐØ dÐ0KØô
ˆñ Eˆ6×ÑÐD ÐDÐ Ñ!ÔD VÐD¨v¯}©}ÐD¨}×/BÑ/BÐDÑ/BÓ/DÐD VÐ/DÐ%D×D×D×DÐDÐ ×D×D×D×D×DÑDˆ6×D×DÓDˆ6×D×DÔDÐ×D×DÒD ×D×D×D×D×D×DÕD VÐ/D×D×DÓD V×D×D×D×D×DÐD¨v×D×DÓD¨v×D×DÔD¨}×D×DÒDÐ/B×D×DÒDÐ/D×D×D×D×D×D×D×D×D×D×D×D×D×D×DÓDøô ×$Ñ$ò .Ü�‰Ð,×-ð.ús   ®I
 É
(I6É5I6)Úbuiltinsr    Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r'   r   rm   r\   r^   ro   r   r   ÚdirnameÚ__file__r   r5   rF   ri   rs   r‡   r¢   © rˆ   r4   ú<module>rª      sc   ðß  „ ƒÛ 	Û Û Û 
ã à�W‰W�\‰\˜"Ÿ'™'Ÿ/™/¨(Ó3°T¸7ÀHÐNeÓf€
ò/ò3ò$òIò&)ó:Erˆ   