Ë
    ùÚ j�  ã                  ó6  — d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	 ddl
Z
ddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZmZ ddlmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)  e
jT                  e+«      Z, edd¬«      Z-e-j]                  d«      dd„«       Z/e-ja                  d«      dd„«       Z1e-ja                  d«       ee«      fdd„«       Z2e-jg                  d«       ee«       edd¬«       edd¬«      f	 	 	 	 	 	 	 	 	 dd„«       Z4y) zFastAPI application module.é    )ÚannotationsN)ÚAnyÚDictÚOptional)ÚDependsÚFastAPIÚHeaderÚHTTPExceptionÚRequest)Úselect)ÚAsyncSession)Úget_settings)ÚProcessedWebhookÚRunÚWorkflowState)Úget_db_sessionÚinit_db)Údesign_review_decisionÚnormalize_jira_webhookÚshould_resume_clarificationÚshould_resume_design_reviewÚshould_start_runÚvalidate_webhook_signature)Úenqueue_process_run)Ú
create_runÚfind_active_runz
Agent Novaz0.1.0)ÚtitleÚversionÚstartupc               ƒ  ó¶   K  — t        «       } t        j                  d| j                  | j                  | j
                  ¬«       t        «       ƒ d {  –—†  y 7 Œ­w)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_startupr)   "   sG   è ø€ ä‹~€HÜ
‡K�KØØ×,Ñ,Ø×*Ñ*Ø× Ñ ð	 ô ô ‹)‡O‚Oús   ‚AAÁAÁAz/healthc               ƒ  ó   K  — ddiS ­w)NÚstatusÚok© r-   ó    r(   Úhealthr/   .   s   è ø€ à�dÐÐùs   ‚z/runs/{run_id}c           
   ƒ  óZ  K  — |j                  t        | «      ƒ d {  –—† }|€t        dd¬«      ‚t        |j                  «      |j
                  |j                  j                  |j                  |j                  |j                  |j                  |j                  |j                  dœ	S 7 ŒŒ­w)Ni”  zRun not found©Ústatus_codeÚdetail)	ÚidÚjira_keyÚstateÚretry_countÚbranch_nameÚpr_urlÚerrorÚartifact_dirÚ	artifacts)Úgetr   r
   Ústrr4   r5   r6   Úvaluer7   r8   r9   r:   r;   r<   )Úrun_idÚsessionÚruns      r(   Úget_runrC   3   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              ƒ  ó¾  K  — t        «       }| j                  «       ƒ d {  –—† }t        |||j                  «      st	        dd¬«      ‚	 t        j                  |j                  d«      xs d«      }|xs@ | j                  j                  d«      xs# t        j                  |«      j                  «       }|j                  t        t         «      j#                  t         j$                  |k(  «      «      ƒ d {  –—† }	|	j'                  «       rd	|d
œS t)        ||«      }
|j+                  t!        ||
j,                  xs d |
j.                  ¬«      «       |j1                  «       ƒ d {  –—†  |
j,                  sdddœS t3        ||
j,                  «      ƒ d {  –—† }t5        |
|r|j6                  nd |«      r…|€J ‚t8        j;                  d|
j,                  t=        |j>                  «      ¬«       	 tA        t=        |j>                  «      d¬«      ƒ d {  –—†  dt=        |j>                  «      |
j,                  dœS tM        |
|r|j6                  nd |«      rÞ|€J ‚tO        |
«      }tQ        |jR                  xs i «      }||d<   |
jT                  |d<   ||_)        |j1                  «       ƒ d {  –—†  t8        j;                  d|
j,                  t=        |j>                  «      |¬«       	 tA        t=        |j>                  «      d¬«      ƒ d {  –—†  dt=        |j>                  «      |
j,                  |dœS |
jV                  rM|�K|j6                  tX        jZ                  k7  r.ddt=        |j>                  «      |j6                  j\                  dœS |�.dd t=        |j>                  «      |j6                  j\                  dœS |
jV                  rdd!|
j,                  d"d#œS t_        |
|«      sdd$dœS ta        ||
j,                  d%|› �¬&«      ƒ d {  –—† }	 tA        t=        |j>                  «      d'¬«      ƒ d {  –—†  d(t=        |j>                  «      |
j,                  dœS 7 �Œ8# t
        j                  $ r}t	        dd¬«      |‚d }~ww xY w7 �Œ�7 �Œ"7 �Œö7 �Œ|# tB        $ r_}t8        jE                  dt=        |«      ¬«       ddl#m$}  ||«      }|jK                  |j>                  d¬«      ƒ d {  –—†7   Y d }~�ŒÝd }~ww xY w7 �ŒQ7 �Œõ# tB        $ r_}t8        jE                  dt=        |«      ¬«       ddl#m$}  ||«      }|jK                  |j>                  d¬«      ƒ d {  –—†7   Y d }~�ŒVd }~ww xY w7 �Œe7 �Œ?# tB        $ r_}t8        jE                  dt=        |«      ¬«       ddl#m$}  ||«      }|jK                  |j>                  d'¬«      ƒ d {  –—†7   Y d }~�Œ d }~ww xY w­w))Ni‘  zInvalid webhook signaturer1   zutf-8z{}i�  zInvalid JSONzX-Delivery-IdÚ	duplicate)r+   Údelivery_id)rH   r5   Ú
event_typeÚignoredÚmissing_jira_key)r+   ÚreasonÚresume_clarification)r5   r@   T)ÚresumeÚenqueue_failed_inline_fallback)r:   r   )ÚOrchestratorÚresumed)r+   r@   r5   Údesign_decisionÚdesign_resume_commentÚresume_design_review)r5   r@   Údecision)r+   r@   r5   rU   Úalready_in_progress)r+   rL   r@   r6   Úactive_run_existsÚno_resumable_runzDNo active run in NEEDS_CLARIFICATION or DESIGN_REVIEW for this issue)r+   rL   r5   ÚhintÚnot_agent_readyzstart:)Úidempotency_keyFÚqueued)1r   Úbodyr   Újira_webhook_secretr
   ÚjsonÚloadsÚdecodeÚJSONDecodeErrorÚheadersr=   ÚhashlibÚsha256Ú	hexdigestÚexecuter   r   ÚwhererH   Úscalar_one_or_noner   Úaddr5   rI   Úcommitr   r   r6   r%   r&   r>   r4   r   Ú	ExceptionÚwarningÚpackages.orchestrator.graphrP   rB   r   r   Údictr<   Úcomment_bodyÚ
is_commentr   ÚNEEDS_CLARIFICATIONr?   r   r   )ÚrequestrA   Úx_hub_signatureÚx_atlassian_webhook_identifierr'   r]   ÚpayloadÚexcrH   ÚexistingÚeventÚactiverP   ÚorchrU   ÚartsrB   s                    r(   Újira_webhookr}   E   s  è ø€ ô ‹~€HØ—‘“×€DÜ% d¨O¸X×=YÑ=YÔZÜ¨Ð4OÔPÐPðMÜ—*‘*˜TŸ[™[¨Ó1Ò9°TÓ:ˆð
 	'ò 	,Ø�?‰?×Ñ˜Ó/ò	,ä�>‰>˜$Ó×)Ñ)Ó+ð ð —_‘_ÜÔÓ ×&Ñ&Ô'7×'CÑ'CÀ{Ñ'RÓSó÷ €Hð ×"Ñ"Ô$Ø%°kÑBÐBä" 7¨KÓ8€EØ‡K�KÜØ#Ø—^‘^Ò+ tØ×'Ñ'ô	
ôð �.‰.Ó
×Ðà�>Š>Ø#Ð/AÑBÐBä" 7¨E¯N©NÓ;×;€Fä" 5¹&¨&¯,ª,ÀdÈHÔUØÐ!Ð!Ð!Ü�‰Ð*°U·^±^ÌCÐPV×PYÑPYËNˆÔ[ð	3Ü%¤c¨&¯)©)£n¸TÔB×BÐBð  Ü˜&Ÿ)™)“nØŸ™ñ
ð 	
ô # 5¹&¨&¯,ª,ÀdÈHÔUØÐ!Ð!Ð!Ü)¨%Ó0ˆÜ�F×$Ñ$Ò*¨Ó+ˆØ"*ˆÐÑØ(-×(:Ñ(:ˆÐ$Ñ%ØˆÔØ�n‰nÓ×ÐÜ�‰Ø"Ø—^‘^Ü�v—y‘y“>Øð	 	ô 	
ð	3Ü%¤c¨&¯)©)£n¸TÔB×BÐBð  Ü˜&Ÿ)™)“nØŸ™Ø ñ	
ð 	
ð ×Ò˜FÐ.°6·<±<Ä=×CdÑCdÒ3dàØ+Ü˜&Ÿ)™)“nØ—\‘\×'Ñ'ñ	
ð 	
ð ÐàØ)Ü˜&Ÿ)™)“nØ—\‘\×'Ñ'ñ	
ð 	
ð ×ÒàØ(ØŸ™ØZñ	
ð 	
ô ˜E 8Ô,Ø#Ð/@ÑAÐAä˜7 E§N¡NÀfÈ[ÈMÐDZÔ[×
[€Cð-Ü!¤# c§f¡f£+°eÔ<×<Ð<ð ¬#¨c¯f©f«+À5Ç>Á>ÑRÐRðq  úô ×Ñò 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úðR \ùà<úÜò -ä�‰Ð7¼sÀ3»xˆÔHÝ<á˜GÓ$ˆØ�h‰h�s—v‘v eˆhÓ,×,×,ûð-üs[  ‚W Q¡(WÁ
(Q Á2BWÃ7RÃ8A-WÅ%RÅ&.WÆR
ÆAWÇ.#R ÈRÈR ÈBWÊ*S;Ê+:WË&#T Ì	S>Ì
T ÌC9WÐU,ÐWÐ#U2 Ð0U/Ð1U2 Ð5$WÑRÑ.Q<Ñ<RÒWÒWÒ
WÒR Ò	S8ÒAS3Ó'S*Ó(S3Ó-WÓ3S8Ó8WÓ>T Ô	U)Ô
AU$ÕUÕU$ÕWÕ$U)Õ)WÕ/U2 Õ2	WÕ;AW×	W×
W×W×W×W)ÚreturnÚNone)r~   zDict[str, str])r@   z	uuid.UUIDrA   r   r~   úDict[str, Any])
rs   r   rA   r   rt   úOptional[str]ru   r�   r~   r€   )5Ú__doc__Ú
__future__r   rd   r_   ÚuuidÚtypingr   r   r   Ú	structlogÚfastapir   r   r	   r
   r   Ú
sqlalchemyr   Úsqlalchemy.ext.asyncior   Úpackages.configr   Úpackages.db.modelsr   r   r   Úpackages.db.sessionr   r   Ú"packages.integrations.jira_webhookr   r   r   r   r   r   Úpackages.integrations.queuer   rn   r   r   Ú
get_loggerÚ__name__r%   ÚappÚon_eventr)   r=   r/   rC   Úpostr}   r-   r.   r(   Ú<module>r”      sB  ðÙ !å "ã Û Û ß &Ñ &ã ß DÕ DÝ Ý /å (ß CÑ Cß 7÷÷ õ <ß Cà	ˆ×	Ñ	˜hÓ	'€á�L¨'Ô2€ð ‡�ˆiÓòó ðð ‡�ˆÓòó ðð ‡�Ð	ÓÙ=DÀ^Ó=Tó ó ðð" ‡�Ð
Óñ $ NÓ3Ù%+°DÐ@QÔ%RÙ4:ØÐ<ô5ð	ASØðASàðASð #ðASð %2ð	ASð òASó ñASr.   