ó
    dî¨jo,  ã                  ór  • S r SSKJr  SSKrSSKrSSKrSSKJrJrJ	r	  SSK
r
SSKJrJrJrJrJr  SSKJr  SSKJr  SSKJrJr  SS	KJrJrJrJr  SS
KJrJr  SSK J!r!  SSK"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  SSK-J.r.  SSK/J0r0J1r1  \
Rd                  " \35      r4\" SSS9r5\5Rm                  S5      SS j5       r7\5Rq                  S5      SS j5       r9\5Rq                  S5      \" \5      4S S jj5       r:\5Rw                  S5      \" \5      \" SSS9\" SSS94         S!S jj5       r<          S"S jr=g)#zFastAPI application module.é    )ÚannotationsN)ÚAnyÚDictÚOptional)ÚDependsÚFastAPIÚHeaderÚHTTPExceptionÚRequest)Úselect)ÚAsyncSession)ÚSettingsÚget_settings)Ú
AuditEventÚProcessedWebhookÚRunÚWorkflowState)Úget_db_sessionÚinit_db)Úget_jira_client)
Údesign_review_decisionÚdoc_review_decisionÚduplicate_review_decisionÚnormalize_jira_webhookÚshould_resume_clarificationÚshould_resume_design_reviewÚshould_resume_doc_reviewÚshould_resume_duplicate_reviewÚshould_start_runÚvalidate_webhook_signature)Úenqueue_process_run)Ú
create_runÚfind_active_runz
Agent Novaz0.1.0)ÚtitleÚversionÚstartupc               ƒ  ó°   #   • [        5       n [        R                  SU R                  U R                  U R
                  S9  [        5       I S h  v•N   g  N7f)NÚapi_started)Újira_providerÚllm_providerÚapp_env)r   ÚloggerÚinfor)   r*   r+   r   )Úsettingss    Ú$/var/www/html/gaurav/apps/api/app.pyÚ
on_startupr0   '   sF   é € ä‹~€HÜ
‡K�KØØ×,Ñ,Ø×*Ñ*Ø× Ñ ð	 ñ ô ‹)‡OƒOùs   ‚AAÁAÁAz/healthc               ƒ  ó   #   • SS0$ 7f)NÚstatusÚok© r4   ó    r/   Úhealthr6   3   s   é € à�dÐÐùs   ‚z/runs/{run_id}c           
   ƒ  óV  #   • UR                  [        U 5      I S h  v•N nUc
  [        SSS9e[        UR                  5      UR
                  UR                  R                  UR                  UR                  UR                  UR                  UR                  UR                  S.	$  NŠ7f)Ni”  zRun not found©Ústatus_codeÚdetail)	ÚidÚjira_keyÚstateÚretry_countÚbranch_nameÚpr_urlÚerrorÚartifact_dirÚ	artifacts)Úgetr   r
   Ústrr;   r<   r=   Úvaluer>   r?   r@   rA   rB   rC   )Úrun_idÚsessionÚruns      r/   Úget_runrJ   8   s‚   é € à—‘œC Ó(×
(€CØ
�{Ü¨°OÑDÐDä�#—&‘&‹kØ—L‘LØ—‘—‘Ø—‘Ø—‘Ø—*‘*Ø—‘Ø×(Ñ(Ø—]‘]ñ
ð 
ñ )ùs   ‚B)œB'�BB)z/webhooks/jirazX-Hub-Signature)ÚdefaultÚaliaszX-Atlassian-Webhook-Identifierc              ƒ  ó,  #   • [        5       nU R                  5       I S h  v•N n[        XRUR                  5      (       d
  [	        SSS9e [
        R                  " UR                  S5      =(       d    S5      nU=(       dF    U R                  R                  S5      =(       d$    [        R                  " U5      R                  5       nUR                  [        [         5      R#                  [         R$                  U:H  5      5      I S h  v•N n	U	R'                  5       (       a  S	US
.$ [)        Xh5      n
UR+                  [!        UU
R,                  =(       d    S U
R.                  S95        UR1                  5       I S h  v•N   U
R,                  (       d  SSS.$ [3        XR,                  5      I S h  v•N n[5        X«(       a  UR6                  OS U5      (       a€  Uc   e[8        R;                  SU
R,                  [=        UR>                  5      S9   [A        [=        UR>                  5      SS9I S h  v•N   S[=        UR>                  5      U
R,                  S.$ [M        X«(       a  UR6                  OS U5      (       aå  Uc   e[O        U
5      =(       d    Sn[Q        URR                  =(       d    0 5      nXïS'   U
RT                  US'   Xûl)        UR1                  5       I S h  v•N   [8        R;                  SU
R,                  [=        UR>                  5      US9   [A        [=        UR>                  5      SS9I S h  v•N   S[=        UR>                  5      U
R,                  US.$ [W        X«(       a  UR6                  OS U5      (       aå  Uc   e[Y        U
5      =(       d    Sn[Q        URR                  =(       d    0 5      nXïS'   U
RT                  US '   Xûl)        UR1                  5       I S h  v•N   [8        R;                  S!U
R,                  [=        UR>                  5      US9   [A        [=        UR>                  5      SS9I S h  v•N   S[=        UR>                  5      U
R,                  US.$ [[        X«(       a  UR6                  OS U5      (       aÜ  Uc   e[]        U
5      n[Q        URR                  =(       d    0 5      nXïS"'   U
RT                  US#'   Xûl)        UR1                  5       I S h  v•N   [8        R;                  S$U
R,                  [=        UR>                  5      US9   [A        [=        UR>                  5      SS9I S h  v•N   S[=        UR>                  5      U
R,                  US.$ U
R^                  (       aO  UbL  UR6                  [`        Rb                  :w  a.  SS%[=        UR>                  5      UR6                  Rd                  S&.$ Ub.  SS'[=        UR>                  5      UR6                  Rd                  S&.$ U
R^                  (       a  SS(U
R,                  S)S*.$ [g        X¤5      (       d  SS+S.$ [i        XR,                  S,U 3S-9I S h  v•N n[k        UUR>                  U
R,                  U5      I S h  v•N    [A        [=        UR>                  5      S.S9I S h  v•N   S/[=        UR>                  5      U
R,                  S.$  GN¥! [
        R                   a  n[	        SSS9UeS nAff = f GNæ GNu GNE GNÇ! [B         aY  n[8        RE                  S[=        U5      S9  SSK#J$n  U" U5      nURK                  UR>                  SS9I S h  v•N     S nAGN#S nAff = f GN� GN+! [B         aY  n[8        RE                  S[=        U5      S9  SSK#J$n  U" U5      nURK                  UR>                  SS9I S h  v•N     S nAGN‡S nAff = f GNä GNŽ! [B         aY  n[8        RE                  S[=        U5      S9  SSK#J$n  U" U5      nURK                  UR>                  SS9I S h  v•N     S nAGNêS nAff = f GNP GNú! [B         aY  n[8        RE                  S[=        U5      S9  SSK#J$n  U" U5      nURK                  UR>                  SS9I S h  v•N     S nAGNVS nAff = f GNX GN1 GN! [B         aY  n[8        RE                  S[=        U5      S9  SSK#J$n  U" U5      nURK                  UR>                  S.S9I S h  v•N     S nAGNjS nAff = f7f)0Ni‘  zInvalid webhook signaturer8   zutf-8z{}i�  zInvalid JSONzX-Delivery-IdÚ	duplicate)r2   Údelivery_id)rO   r<   Ú
event_typeÚignoredÚmissing_jira_key)r2   ÚreasonÚresume_clarification)r<   rG   T)ÚresumeÚenqueue_failed_inline_fallback)rA   r   )ÚOrchestratorÚresumed)r2   rG   r<   ÚcontinueÚduplicate_decisionÚduplicate_resume_commentÚresume_duplicate_review)r<   rG   Údecision)r2   rG   r<   r]   Údoc_decisionÚdoc_resume_commentÚresume_doc_reviewÚdesign_decisionÚdesign_resume_commentÚresume_design_reviewÚalready_in_progress)r2   rS   rG   r=   Úactive_run_existsÚno_resumable_runzcNo active run in NEEDS_CLARIFICATION, DUPLICATE_REVIEW, DOC_REVIEW, or DESIGN_REVIEW for this issue)r2   rS   r<   ÚhintÚnot_agent_readyzstart:)Úidempotency_keyFÚqueued)6r   Úbodyr    Újira_webhook_secretr
   ÚjsonÚloadsÚdecodeÚJSONDecodeErrorÚheadersrD   ÚhashlibÚsha256Ú	hexdigestÚexecuter   r   ÚwhererO   Úscalar_one_or_noner   Úaddr<   rP   Úcommitr#   r   r=   r,   r-   rE   r;   r!   Ú	ExceptionÚwarningÚpackages.orchestrator.graphrW   rI   r   r   ÚdictrC   Úcomment_bodyr   r   r   r   Ú
is_commentr   ÚNEEDS_CLARIFICATIONrF   r   r"   Ú_transition_jira_to_in_progress)ÚrequestrH   Úx_hub_signatureÚx_atlassian_webhook_identifierr.   rk   ÚpayloadÚexcrO   ÚexistingÚeventÚactiverW   Úorchr]   ÚartsrI   s                    r/   Újira_webhookrŒ   J   s�  é € ô ‹~€HØ—‘“×€DÜ% d¸X×=YÑ=Y×ZÑZÜ¨Ð4OÑPÐPðMÜ—*’*˜TŸ[™[¨Ó1×9°TÓ:ˆð
 	'÷ 	,Ø�?‰?×Ñ˜Ó/÷	,ä�>Š>˜$Ó×)Ñ)Ó+ð ð —_‘_ÜÔÓ ×&Ñ&Ô'7×'CÑ'CÀ{Ñ'RÓSó÷ €Hð ×"Ñ"×$Ñ$Ø%°kÑBÐBä" 7Ó8€EØ‡K�KÜØ#Ø—^‘^×+ tØ×'Ñ'ñ	
ôð �.‰.Ó
×Ðà�>�>Ø#Ð/AÑBÐBä" 7¯N©NÓ;×;€Fä" 5½&¨&¯,ª,ÀdÈH×UÑUØÑ!Ð!Ð!Ü�‰Ð*°U·^±^ÌCÐPV×PYÑPYËNˆÑ[ð	3Ü%¤c¨&¯)©)£n¸TÑB×BÐBð  Ü˜&Ÿ)™)“nØŸ™ñ
ð 	
ô & e½V¨V¯\ª\ÈÈx×XÑXØÑ!Ð!Ð!Ü,¨UÓ3×A°zˆÜ�F×$Ñ$×*¨Ó+ˆØ%-Ð!Ñ"Ø+0×+=Ñ+=ˆÐ'Ñ(ØÔØ�n‰nÓ×ÐÜ�‰Ø%Ø—^‘^Ü�v—y‘y“>Øð	 	ñ 	
ð	3Ü%¤c¨&¯)©)£n¸TÑB×BÐBð  Ü˜&Ÿ)™)“nØŸ™Ø ñ	
ð 	
ô   µv v§|¢|À4È×RÑRØÑ!Ð!Ð!Ü& uÓ-×;°ˆÜ�F×$Ñ$×*¨Ó+ˆØ'ˆ^ÑØ%*×%7Ñ%7ˆÐ!Ñ"ØÔØ�n‰nÓ×ÐÜ�‰ØØ—^‘^Ü�v—y‘y“>Øð	 	ñ 	
ð	3Ü%¤c¨&¯)©)£n¸TÑB×BÐBð  Ü˜&Ÿ)™)“nØŸ™Ø ñ	
ð 	
ô # 5½&¨&¯,ª,ÀdÈH×UÑUØÑ!Ð!Ð!Ü)¨%Ó0ˆÜ�F×$Ñ$×*¨Ó+ˆØ"*ÐÑØ(-×(:Ñ(:ˆÐ$Ñ%ØÔØ�n‰nÓ×ÐÜ�‰Ø"Ø—^‘^Ü�v—y‘y“>Øð	 	ñ 	
ð	3Ü%¤c¨&¯)©)£n¸TÑB×BÐBð  Ü˜&Ÿ)™)“nØŸ™Ø ñ	
ð 	
ð ××˜FÑ.°6·<±<Ä=×CdÑCdÓ3dàØ+Ü˜&Ÿ)™)“nØ—\‘\×'Ñ'ñ	
ð 	
ð ÑàØ)Ü˜&Ÿ)™)“nØ—\‘\×'Ñ'ñ	
ð 	
ð ××àØ(ØŸ™Øyñ	
ð 	
ô ˜E×,Ñ,Ø#Ð/@ÑAÐAä˜7§N¡NÀfÈ[ÈMÐDZÑ[×
[€CÜ
)¨'°3·6±6¸5¿>¹>È8Ó
T×TÐTð-Ü!¤# c§f¡f£+°eÑ<×<Ð<ð ¬#¨c¯f©f«+À5Ç>Á>ÑRÐRòg  øô ×Ñó MÜ¨°NÑCÈÐLûðMúòò ò
 <ò CøÜó 	3Ü�N‰NÐ;Ä3ÀsÃ8ˆNÑLÝ@á Ó(ˆDØ—(‘(˜6Ÿ9™9¨T�(Ð2×2×2ûð	3úò& 	ò CøÜó 	3Ü�N‰NÐ;Ä3ÀsÃ8ˆNÑLÝ@á Ó(ˆDØ—(‘(˜6Ÿ9™9¨T�(Ð2×2×2ûð	3úò( 	ò CøÜó 	3Ü�N‰NÐ;Ä3ÀsÃ8ˆNÑLÝ@á Ó(ˆDØ—(‘(˜6Ÿ9™9¨T�(Ð2×2×2ûð	3úò( 	ò CøÜó 	3Ü�N‰NÐ;Ä3ÀsÃ8ˆNÑLÝ@á Ó(ˆDØ—(‘(˜6Ÿ9™9¨T�(Ð2×2×2ûð	3úòR \ÚTâ<øÜó -ä�‰Ð7¼sÀ3»xˆÑHÝ<á˜GÓ$ˆØ�h‰h�s—v‘v eˆhÐ,×,×,ûð-üs  ‚d [¡)dÁ.[ Á9BdÄ	[/Ä
A3dÅ=[2Å>2dÆ0[5Æ1AdÈ [; È1[8È2[; È6B*dË ]!Ë!7dÌ ]' Ì9]$Ì:]' Ì>B+dÏ)_Ï*7dÐ" _ Ñ_Ñ_ ÑB"dÓ)`9Ó*7dÔ" `? Õ`<Õ`? ÕDdÙb%Ù)dÙ7b(Ù8dÙ= b. Úb+Úb. Ú"$dÛ[,Û['Û'[,Û,dÛ2dÛ5dÛ8[; Û;
]ÜA]Ý]Ý]ÝdÝ]ÝdÝ$]' Ý'
_
Ý1A_Þ9^<Þ:_Þ?dß_
ß
dß_ ß
`6ßA`1à%`(à&`1à+dà1`6à6dà<`? à?
b"á	Abâbâbâdâb"â"dâ(dâ+b. â.
dâ8Adä dädädädädc              ƒ  óæ  #   • UR                   n[        U5      n UR                  X$5      I Sh  v•N nU(       a8  U R                  [	        USSU SU 3X$S.S95        [
        R                  SX$S9  O9U R                  [	        USS	U S
U 3X$SS.S95        [
        R                  SUUS9  U R                  5       I Sh  v•N   g N• N! [         a›  n[
        R                  SUU[        U5      S9   U R                  [	        USSU SU SU 3X$[        U5      S.S95        U R                  5       I Sh  v•N     SnAg! [         a    [
        R                  SUS9    SnAgf = fSnAff = f7f)zABest-effort board move to In Progress after a new run is created.Nzjira.transitionzTransitioned z to )r<   r2   )rG   rP   Úmessager…   Újira_transitionedzjira.transition_failedzNo transition to z available for Úunavailable)r<   r2   rS   Újira_transition_unavailableÚjira_transition_failed)r<   r2   rA   zFailed to transition z: Újira_transition_audit_failed)r<   )Újira_in_progress_statusr   Útransition_issuerx   r   r,   r-   r{   ry   rz   rE   Ú	exception)rH   rG   r<   r.   ÚtargetÚjiraÚmovedr†   s           r/   r�   r�   
  s�  é € ð ×-Ñ-€FÜ˜8Ó$€Dð-PØ×+Ñ+¨HÓ=×=ˆÞØ�K‰KÜØ!Ø0Ø+¨H¨:°T¸&¸ÐBØ)1ÑDñ	ôô �K‰KÐ+°hˆKÒNà�K‰KÜØ!Ø7Ø/°¨x°ÀxÀjÐQØ)1È}Ñ]ñ	ôô �N‰NØ-Ø!Øð ñ ð
 �n‰nÓ×Ññ3 >ñ2 	øÜó PÜ�‰Ø$ØØÜ�c“(ð	 	ñ 	
ð	PØ�K‰KÜØ!Ø7Ø3°H°:¸TÀ&ÀÈÈCÈ5ÐQØ)1ÌcÐRUËhÑWñ	ôð —.‘.Ó"×"Ö"øÜó 	PÜ×ÑÐ;ÀhÐ×Oð	Pþð#Püs‚   ‚E1›C	 ¯C°BC	 Â?CÃ C	 ÃE1ÃC	 ÃC	 Ã	
E.ÃE)Ã3AEÄ6D9Ä7EÄ<E1ÅE&ÅE)Å E1Å%E&Å&E)Å)E.Å.E1)ÚreturnÚNone)rš   zDict[str, str])rG   ú	uuid.UUIDrH   r   rš   úDict[str, Any])
r‚   r   rH   r   rƒ   úOptional[str]r„   rž   rš   r�   )
rH   r   rG   rœ   r<   rE   r.   r   rš   r›   )>Ú__doc__Ú
__future__r   rr   rm   ÚuuidÚtypingr   r   r   Ú	structlogÚfastapir   r   r	   r
   r   Ú
sqlalchemyr   Úsqlalchemy.ext.asyncior   Úpackages.configr   r   Úpackages.db.modelsr   r   r   r   Úpackages.db.sessionr   r   Úpackages.integrations.jirar   Ú"packages.integrations.jira_webhookr   r   r   r   r   r   r   r   r   r    Úpackages.integrations.queuer!   r|   r"   r#   Ú
get_loggerÚ__name__r,   ÚappÚon_eventr0   rD   r6   rJ   ÚpostrŒ   r�   r4   r5   r/   Ú<module>r²      s‚  ðÙ !å "ã Û Û ß &Ñ &ã ß DÕ DÝ Ý /ç 2ß OÓ Oß 7Ý 6÷÷ ÷ õ <ß Cà	×	Ò	˜hÓ	'€á�L¨'Ñ2€ð ‡�ˆiÓóó ðð ‡�ˆÓóó ðð ‡�Ð	ÓÙ=DÀ^Ó=Tõ ó ðð" ‡�Ð
Óñ $ NÓ3Ù%+°DÐ@QÑ%RÙ4:ØÐ<ñ5ð	|SØð|Sàð|Sð #ð|Sð %2ð	|Sð ô|Só ð|Sð~6PØð6Pàð6Pð ð6Pð ð	6Pð
 
õ6Pr5   