ó
    ùÚ j55  ã                  ó  • S r SSKJr  SSKrSSKJrJrJr  SSKJ	r	  SSK
JrJrJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJrJr  \" 1 Sk5      r " S S5      r          SS jrSSS jjrSS jrSS jrSS jr g)uH   Salesforce Developer skill â€” SFDX metadata stubs from approved design.é    )ÚannotationsN)ÚDictÚListÚOptional)ÚUUID)ÚDesignArtifactÚMetadataPlanItemÚenforce_allowlist)ÚImplementationArtifact)ÚRequirementsArtifact)ÚReviewArtifact)ÚArtifactStore)Ú	LLMClientÚget_llm_client>   ÚFlowÚ	ApexClassÚApexTriggerÚCustomFieldÚPermissionSetÚValidationRuleÚLightningComponentBundlec                  ól   • \ rS rSr  S     SS jjr        S	S jr            S
S jrSrg)ÚSalesforceDeveloperé   Nc                ód   • U=(       d
    [        5       U l        U=(       d
    [        5       U l        g )N)r   Ú	artifactsr   Úllm)Úselfr   r   s      Ú</var/www/html/gaurav/packages/agents/salesforce_developer.pyÚ__init__ÚSalesforceDeveloper.__init__   s!   € ð
 #×5¤m£oˆŒØ×*œ.Ó*ˆ�ó    c              ƒ  óò  #   • [        U5      nUR                  (       d  [        S5      e0 n/ n/ nUR                   H‘  nUR                  [        ;   aG  [        U5       H6  u  pšU R                  R                  X9U
5        X¥U	'   UR                  U	5        M8     M^  UR                   SUR                   3nX¶;  d  M€  UR                  U5        M“     SUR                   3SSUR                   3SS/nU(       a  U H  nUR                  SU S35        M     OUR                  S	5        U(       a0  UR                  / S
Q5        U H  nUR                  SU 35        M     U(       aK  UR                  (       a:  UR                  / SQ5        UR                   H  nUR                  SU 35        M     SR                  U5      nU R                  R                  USU5        UR                  S5        UUS'   SUR                   SUR                  S S  3n[        UR                  UUS[!        U Vs/ sH  nUR#                  S5      (       d  M  UPM     sn5       SUR                   3USS9nUU4$ s  snf 7f)Nz6Design metadata plan empty after allowlist enforcementÚ:u   # Implementation summary â€” Ú z**Design:** z## Files writtenz- `Ú`z- (none))r%   z'## Deferred (unsupported metadata type)r%   ú- )r%   z## Acceptance criteriar%   Ú
zimplementation-summary.mdzAgent Nova: u    â€” éP   z
Generated ú
force-app/z metadata stub file(s) for u>   Phase 3b â€” stubs + lower-org deploy validate before draft PR©Újira_keyÚcommit_messageÚfiles_writtenÚsummaryÚdeferred_typesÚnotes)r
   Úmetadata_planÚ
ValueErrorÚmetadata_typeÚ_STUB_TYPESÚ_render_stubr   Ú
write_textÚappendÚapi_namer,   r/   ÚextendÚacceptance_criteriaÚjoinr   ÚlenÚ
startswith)r   ÚdesignÚrequirementsÚrun_idÚcleanedÚfilesÚdeferredÚwrittenÚitemÚrel_pathÚcontentÚkeyÚsummary_linesÚpÚdÚacÚ
summary_mdr-   ÚwÚartifacts                       r   Ú	implementÚSalesforceDeveloper.implement&   sn  é € ô $ FÓ+ˆØ×$×$ÜÐUÓVÐVà "ˆØ ˆØˆà×)Ô)ˆDØ×!Ñ!¤[Ó0Ü)5°dÖ);Ñ%�HØ—N‘N×-Ñ-¨fÀÔHØ&-˜(‘OØ—N‘N 8Ö,ó *<ð
 ×+Ñ+Ð,¨A¨d¯m©m¨_Ð=�ØÕ&Ø—O‘O CÖ(ñ *ð ,¨G×,<Ñ,<Ð+=Ð>ØØ˜7Ÿ?™?Ð+Ð,ØØð
ˆö Û�Ø×$Ñ$ s¨1¨#¨Q ZÖ0ò ð × Ñ  Ô,ÞØ× Ñ Ò!TÔUÛ�Ø×$Ñ$ r¨!¨ XÖ.ñ æ˜L×<×<Ø× Ñ Ò!CÔDØ"×6Ô6�Ø×$Ñ$ r¨"¨ YÖ/ñ 7ð —Y‘Y˜}Ó-ˆ
Ø�‰×!Ñ! &Ð*EÀzÔRØ�‰Ð2Ô3Ø-7ˆÐ)Ñ*à'¨×(8Ñ(8Ð'9¸¸w¿¹ÈsÐPRÐ?SÐ>TÐUˆÜ)Ø×%Ñ%Ø)Ø!Ø ¤±Ó%W±¨A¸A¿L¹LÈ×<V§a±Ñ%WÓ!XÐ YÐYtÐu|÷  vFñ  vFð  uGð  HØ#ØRñ
ˆð ˜ˆÐùò	 &Xùs   ‚B6I7Â<E5I7È1I2ÉI2É#I7c             ƒ  ó  #   • UR                    Vs/ sH  ofR                  (       d  M  UPM     nnU(       d  [        S5      eUR                  5        VV	s0 sH  u  p‰UR	                  S5      (       d  M  X‰_M!     n
nn	[        UUUU
S9nU R                  R                  U5      I S h  v•N n[        U5      n/ nUR                  5        HV  u  nnUR	                  S5      (       d  M  U R                  R                  XOU5        UXß'   Xþ;  d  ME  UR                  U5        MX     U R                  R                  US5      n[        R                  " U5      n[        [        R!                  UR"                  U-   5      5      nUR$                  n[        UR&                  UUSUR(                   S[+        U5       S3UR,                  SUR(                   3S	9nU R                  R/                  USU5        UU4$ s  snf s  sn	nf  GNZ7f)
Nz#No fixable review findings to applyr*   )Úreviewr?   r@   Úfile_mapzimplementation.jsonzApplied review fixes (cycle z): z file(s) updatedzPhase 4 fix cycle r+   )ÚfindingsÚfixabler3   Úitemsr>   Úbuild_fix_promptr   Úfix_codeÚdictr   r7   r8   Ú	read_jsonr   Úmodel_validateÚlistÚfromkeysr.   r-   r,   Úcycler=   r0   Ú
write_json)r   rT   r?   r@   rA   rU   ÚfrW   rK   ÚcÚforce_app_filesÚpromptÚpatchesÚupdated_filesrE   ÚpathrH   Úimpl_rawÚpriorÚall_writtenr-   rP   s                         r   Úapply_fixesÚSalesforceDeveloper.apply_fixesd   sË  é € ð %ŸošoÓ;™o˜·µ—1™oˆÐ;ÞÜÐBÓCÐCð &Ÿ^™^Ô-ô
Ù-‘T�Q°·±¸l×1K‹DˆAŠDÑ-ð 	ñ 
ô "ØØØ%Ø$ñ	
ˆð Ÿ™×)Ñ)¨&Ó1×1ˆä˜X›ˆØˆØ$Ÿ]™]ž_‰MˆD�'Ø—?‘? <×0Ñ0ÙØ�N‰N×%Ñ% f°GÔ<Ø")ˆMÑØÕ"Ø—‘˜tÖ$ñ -ð —>‘>×+Ñ+¨FÐ4IÓJˆÜ&×5Ò5°hÓ?ˆÜœ4Ÿ=™=¨×)<Ñ)<¸wÑ)FÓGÓHˆØ×-Ñ-ˆÜ)Ø—_‘_Ø)Ø%Ø2°6·<±<°.ÀÄCÈÃLÀ>ÐQaÐbØ ×/Ñ/Ø& v§|¡| nÐ5ñ
ˆð 	�‰×!Ñ! &Ð*?ÀÔJØ˜Ð&Ð&ùòM <ùó
ò 2ùs:   ‚H‘G6¨G6®'HÁG;Á4G;Á:-HÂ'HÂ(A"HÄC4H)r   r   )NN)r   zOptional[ArtifactStore]r   zOptional[LLMClient]ÚreturnÚNone)r?   r   r@   úOptional[RequirementsArtifact]rA   r   rn   ú-tuple[ImplementationArtifact, Dict[str, str]])rT   r   r?   r   r@   rp   rA   r   rU   úDict[str, str]rn   rq   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r    rQ   rl   Ú__static_attributes__© r"   r   r   r      s˜   † ð .2Ø#'ð+à*ð+ð !ð+ð 
õ	+ð<àð<ð 5ð<ð ð	<ð
 
7ô<ð|/'ð ð/'ð ð	/'ð
 5ð/'ð ð/'ð !ð/'ð 
7÷/'r"   r   c                óz  • SR                  S U R                   5       5      =(       d    SnSR                  S U(       a  UR                  O/  5       5      =(       d    Sn[        U5      nSUR                   SUR
                   SU SU S	[        S
5      R                  S UR                   5       5       SU S3$ )Nr(   c           	   3  óÄ   #   • U HW  nUR                   (       d  M  S UR                   SUR                   SUR                  =(       d    S SUR                   3v •  MY     g7f)z- [Ú/z] Úgeneralz: N)rW   ÚseverityÚcategoryÚfileÚmessage)Ú.0rb   s     r   Ú	<genexpr>Ú#build_fix_prompt.<locals>.<genexpr>�   sP   é € ð á ˆAØ�9�9ó 	Lˆ#ˆa�j‰jˆ\˜˜1Ÿ:™:˜, b¨¯©×)<°9Ð(=¸RÀÇ	Á	¸{ÕKÚ ùs   ‚A šAA ú(none)c              3  ó*   #   • U H
  nS U 3v •  M     g7f)r'   Nrx   )r�   Úas     r   r‚   rƒ   ¢   s   é € Ð`Ñ&^ �R˜�s•8Ò&^ùs   ‚z¨You are the Salesforce Developer fixing code review findings for Agent Nova.
Apply minimal fixes only. Do not add metadata outside the approved design plan.

Jira key: z
Design summary: z

Acceptance criteria:
z

Findings to address:
z!

Metadata plan (do not exceed):
é
   c              3  óX   #   • U H!  nS UR                    SUR                   3v •  M#     g7f)r'   Ú N)r4   r9   )r�   Úis     r   r‚   rƒ   ²   s(   é € ÐPÑ;O°a��1—?‘?Ð# 1 Q§Z¡Z LÕ1Ò;Oùs   ‚(*z

Files to fix:
zJ

Return updated file paths and full file contents under force-app/ only.
)r<   rV   r;   Ú_format_fix_filesr,   r/   Úchrr2   )rT   r?   r@   rU   rV   rM   Úfiles_sections          r   rY   rY   –   sÞ   € ð �y‰yñ à—’óó ÷ ð 
ð	 ð
 
�‰Ñ`Î, l×&FÒ&FÐ\^Ð&^Ó`Ó	`×	lÐdl€BÜ% hÓ/€Mðð �?‰?Ð
ð Ø—‘Ð ð !ð €ð ð 
€
ð ô €Rƒ‡�ÑP¸6×;OÒ;OÓPÓPÐ Qð Rð €ð ð!ð r"   c                óÞ   • U (       d  g/ n[        U R                  5       5       H6  u  p4[        U5      U::  a  UOUS U S-   nUR                  SU SU S35        M8     SR	                  U5      $ )Nr„   z
... truncatedz### z
```
z
```z

)ÚsortedrX   r=   r8   r<   )rU   Ú	max_charsÚpartsrh   rH   Úsnippets         r   r‹   r‹   »   sp   € ÞØØ€EÜ §¡Ó 0Ö1‰ˆÜ  ›\¨YÓ6‘'¸GÀJÀYÐ<OÐRcÑ<cˆØ�‰�t˜D˜6 ¨¨	°Ð7Ö8ñ 2ð �;‰;�uÓÐr"   c           	     ó*  • U R                   =(       d    SnU R                  S:X  aj  SU SU R                   S3nSU R                   SU R                  R                  SS	5      R                  S
S5       SU R                  =(       d    S S3nX#4/$ U R                  S:X  a=  SU SU R                   S3nSU R                   SU R                  =(       d    S S3nX#4/$ U R                  S:X  aJ  SU R                   S3nSU R                  R                  S
S5       SU R                  =(       d    S S3nX#4/$ U R                  S:X  a&  U R                  nSU S3nSU S3nSU S 3nS!nXW4Xh4/$ U R                  S":X  a)  U R                  nS#U S$3n	S#U S%3nS&U S'U S(3n
S)nXš4Xh4/$ U R                  S*:X  aH  U R                  nS+U S,3nS-U R                  =(       d    S. S/U S0UR                  S
S5       S1U S23	nX#4/$ U R                  S3:X  ao  [        U R                  5      nS4U 3nS5U R                   S63nS7[        U5       S83nS9U R                  =(       d    S: S;3nU S<U S=3U4U S<U S>3U4U S<U S?3U4/$ [        S@U R                   35      e)ANÚAccountr   zforce-app/main/default/objects/z/fields/z.field-meta.xmlzs<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
    <fullName>z</fullName>
    <label>Ú__cr%   Ú_r‰   aœ  </label>
    <type>Picklist</type>
    <valueSet>
        <valueSetDefinition>
            <sorted>false</sorted>
            <value><fullName>Bronze</fullName><default>false</default></value>
            <value><fullName>Silver</fullName><default>false</default></value>
            <value><fullName>Gold</fullName><default>false</default></value>
        </valueSetDefinition>
    </valueSet>
    <description>zAgent Nova stubz</description>
</CustomField>
r   z/validationRules/z.validationRule-meta.xmlzv<?xml version="1.0" encoding="UTF-8"?>
<ValidationRule xmlns="http://soap.sforce.com/2006/04/metadata">
    <fullName>a  </fullName>
    <active>true</active>
    <errorConditionFormula>AND(
        ISPICKVAL(Customer_Tier__c, "Gold"),
        AnnualRevenue &lt; 100000
    )</errorConditionFormula>
    <errorMessage>Gold tier requires Annual Revenue of at least 100,000.</errorMessage>
    <description>z!</description>
</ValidationRule>
r   z&force-app/main/default/permissionsets/z.permissionset-meta.xmlzr<?xml version="1.0" encoding="UTF-8"?>
<PermissionSet xmlns="http://soap.sforce.com/2006/04/metadata">
    <label>z</label>
    <description>zY</description>
    <hasActivationRequired>false</hasActivationRequired>
</PermissionSet>
r   zforce-app/main/default/classes/z.clsz.cls-meta.xmlzpublic without sharing class ub    {
    public static void run() {
        // Agent Nova stub â€” implement business logic
    }
}
z®<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>59.0</apiVersion>
    <status>Active</status>
</ApexClass>
r   z force-app/main/default/triggers/z.triggerz.trigger-meta.xmlztrigger z on u]    (before insert, before update) {
    // Agent Nova stub â€” bulk-safe handler recommended
}
z²<?xml version="1.0" encoding="UTF-8"?>
<ApexTrigger xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>59.0</apiVersion>
    <status>Active</status>
</ApexTrigger>
r   zforce-app/main/default/flows/z.flow-meta.xmlz‘<?xml version="1.0" encoding="UTF-8"?>
<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>59.0</apiVersion>
    <description>z%Agent Nova record-triggered Flow stubz#</description>
    <interviewLabel>z6 {!$Flow.CurrentDateTime}</interviewLabel>
    <label>a·  </label>
    <processMetadataValues>
        <name>BuilderType</name>
        <value>
            <stringValue>LightningFlowBuilder</stringValue>
        </value>
    </processMetadataValues>
    <processType>AutoLaunchedFlow</processType>
    <start>
        <locationX>50</locationX>
        <locationY>0</locationY>
        <connector>
            <targetReference>Stub_Assignment</targetReference>
        </connector>
        <object>a}  </object>
        <recordTriggerType>CreateAndUpdate</recordTriggerType>
        <triggerType>RecordAfterSave</triggerType>
    </start>
    <status>Draft</status>
    <assignments>
        <name>Stub_Assignment</name>
        <label>Stub Assignment</label>
        <locationX>176</locationX>
        <locationY>134</locationY>
        <assignmentItems>
            <assignToReference>$Flow.CurrentDateTime</assignToReference>
            <operator>Assign</operator>
            <value>
                <elementReference>$Flow.CurrentDateTime</elementReference>
            </value>
        </assignmentItems>
    </assignments>
</Flow>
r   zforce-app/main/default/lwc/z=<template>
    <div class="slds-m-around_medium">
        <p>z2 (Agent Nova LWC stub)</p>
    </div>
</template>
z>import { LightningElement } from 'lwc';

export default class z extends LightningElement {}
zÆ<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>59.0</apiVersion>
    <isExposed>false</isExposed>
    <description>zAgent Nova LWC stubz+</description>
</LightningComponentBundle>
r{   z.htmlz.jsz.js-meta.xmlzUnsupported stub type: )Úobjectr4   r9   Úreplacer1   Ú_to_lwc_folder_nameÚ_to_js_class_namer3   )rF   Úobjrh   rH   ÚnameÚcls_pathÚ	meta_pathÚcls_bodyÚ	meta_bodyÚ	trig_pathÚ	trig_bodyÚcamelÚbaseÚhtmlÚjsÚmetas                   r   r6   r6   Å   s£  € Ø
�+‰+×
"˜€CØ×Ñ˜]Ó*Ø0°°°X¸d¿m¹m¸_ÈOÐ\ˆðà�}‰}ˆoð Ø�M‰M×!Ñ! %¨Ó,×4Ñ4°S¸#Ó>Ð?ð 
@ð —*‘*×1Ð 1Ð2ð 3ðˆð  �Ð Ð à×ÑÐ-Ó-Ø0°°Ð5FÀtÇ}Á}ÀoÐUmÐnˆðà�}‰}ˆoð ð —*‘*×1Ð 1Ð2ð 3ðˆð �Ð Ð à×Ñ˜_Ó,Ø7¸¿¹°ÐF]Ð^ˆðà�M‰M×!Ñ! # sÓ+Ð,ð -Ø—*‘*×1Ð 1Ð2ð 3ðˆð �Ð Ð à×Ñ˜[Ó(Ø�}‰}ˆØ4°T°F¸$Ð?ˆØ5°d°V¸=ÐIˆ	Ø4°T°Fð ;ð ˆðˆ	ð Ð$ yÐ&<Ð=Ð=à×Ñ˜]Ó*Ø�}‰}ˆØ6°t°f¸HÐEˆ	Ø6°t°fÐ<MÐNˆ	Ø    d¨3¨%ð 0ð ˆ	ðˆ	ð Ð&¨Ð(>Ð?Ð?à×Ñ˜VÓ#Ø�}‰}ˆØ.¨t¨f°NÐCˆðð —*‘*×GÐ GÐHð IØ�Fð Ø�L‰L˜˜cÓ"Ð#ð $ð �ð ð'&ˆðN �Ð Ð à×ÑÐ7Ó7Ü# D§M¡MÓ2ˆØ,¨U¨GÐ4ˆðà�M‰Mˆ?ð ðˆðä'¨Ó.Ð/ð 0ðˆðð —*‘*×5Ð 5Ð6ð 7ð	ˆð ˆv�Q�u�g˜UÐ# TÐ*Øˆv�Q�u�g˜SÐ! 2Ð&Øˆv�Q�u�g˜\Ð*¨DÐ1ð
ð 	
ô Ð.¨t×/AÑ/AÐ.BÐCÓ
DÐDr"   c                ó¼  • [         R                  " SSU =(       d    S5      nU(       d  SnSU;   aX  UR                  S5       Vs/ sH  o"(       d  M  UPM     nnUS   R                  5       SR	                  S USS  5       5      -   nO1US   R                  5       (       a  US   R                  5       USS -   nUS   R                  5       (       d  S	U-   nU$ s  snf )
z@LWC folder names are camelCase starting with a lowercase letter.z[^A-Za-z0-9_]r%   ÚagentNovaStubr–   r   c              3  óP   #   • U H  oS S R                  5       USS  -   v •  M     g 7f)Né   ©Úupper)r�   rK   s     r   r‚   Ú&_to_lwc_folder_name.<locals>.<genexpr>i  s%   é € Ð)SÉÀA¨B¨Q¨%¯+©+«-¸!¸A¸B¸%Ö*?Êùs   ‚$&r«   Nrc   )ÚreÚsubÚsplitÚlowerr<   ÚisupperÚislower)r9   rœ   rK   r‘   s       r   r™   r™   a  sÀ   € ä�6Š6Ð" B¨×(C°OÓD€DÞØˆà
ˆdƒ{Ø ŸJ™J sœOÓ1™O�q«q—™OˆÐ1Ø�Q‰x�~‰~Ó "§'¡'Ñ)SÈÈqÈrÉÓ)SÓ"SÑS‰Ø	ˆa‰�‰×	Ñ	Ø�A‰w�}‰}‹  a b Ñ)ˆØ�‰7�?‰?×ÑØ�T‰zˆØ€Kùò 2s   Á	CÁCc                óF   • U (       a  U S S R                  5       U SS  -   $ S$ )Nr«   ÚAgentNovaStubr¬   )Úfolders    r   rš   rš   q  s)   € Þ.4ˆ6�"�1ˆ:×ÑÓ  q r 
Ñ*ÐI¸/ÐIr"   )
rT   r   r?   r   r@   rp   rU   rr   rn   Ústr)i   )rU   rr   r�   Úintrn   r¸   )rF   r	   rn   zList[tuple[str, str]])r9   r¸   rn   r¸   )r·   r¸   rn   r¸   )!Ú__doc__Ú
__future__r   r¯   Útypingr   r   r   Úuuidr   Úpackages.artifacts.designr   r	   r
   Ú!packages.artifacts.implementationr   Úpackages.artifacts.requirementsr   Úpackages.artifacts.reviewr   Úpackages.db.artifactsr   Úpackages.integrations.llmr   r   Ú	frozensetr5   r   rY   r‹   r6   r™   rš   rx   r"   r   Ú<module>rÅ      s–   ðÙ Nå "ã 	ß 'Ñ 'Ý ç YÑ YÝ DÝ @Ý 4Ý /ß ?áòó
€÷v'ñ v'ðr"àð"ð ð"ð 1ð	"ð
 ð"ð 	ô"öJôYEôxõ Jr"   