
    7i              	           d Z ddlZddlZddlmZmZ ddlmZ  ed      Zedz  dz  Zedz  d	z  Z	d
Z
dZg dZg dZddededefdZddededefdZdedededee   fdZdededdfdZy)u  
HERMES — Demo & GTM General
=============================
Fires browser + GTM agents for demos, GHL setup, and outreach.

Usage:
    from core.generals.hermes import spawn_hermes
    results = spawn_hermes("Set up George Bunker GHL workflow", browser_agents=3)
    N)datetimetimezone)Pathz/mnt/e/genesis-systemdataswarm_progresshiveprogressa  You are HERMES, the Demo & GTM agent for Genesis.

Task: {task}
Sub-task {agent_index} of {total_agents}: {sub_task}

You have access to Playwright MCP for browser automation.

Instructions:
1. Use Playwright MCP to complete this task autonomously
2. NEVER ask Kinan to do anything you can do with a browser
3. Log every action taken with timestamp
4. If you hit a 2FA wall on Kinan's personal phone, STOP and report
5. Write a completion report to: {output_file}

Report format:
## HERMES Action Report
- Task: {sub_task}
- Status: COMPLETED / BLOCKED / PARTIAL
- Actions taken: [numbered list]
- Evidence: [URLs, screenshots, confirmation codes]
- Next step: [if blocked]
a  You are HERMES, the GTM outreach agent for Genesis.

Campaign: {task}
Batch {agent_index} of {total_agents}: {sub_task}

Instructions:
1. Generate personalised outreach emails for each target
2. Use real data from KNOWLEDGE_GRAPH/entities/ about the target company
3. Match tone to ReceptionistAI brand (professional, direct, value-first)
4. Output ready-to-send emails to: {output_file}
5. Format: JSON array of {{to, subject, body}} objects
)ghlsetupworkflowlogindemo	configurednsstripegodaddy
cloudflareactivate)	outreachemailcontactagencyprospectcoldsequencepersonalisecampaigntaskbrowser_agentsreturnc                 X   t         j                  dd       t        j                  dd       dt        j                         j
                  dd  }t        |z  }|j                  dd       | j                         t        fdt        D              }|rdnd}t        | ||      }|d	| ||rd
nd|dddt        j                  t        j                        j                         t        |      d}t         | dz  }|rt         nt"        }	t%        |      D ]j  \  }
}|d|
dz   ddz  }|	j'                  | |
dz   ||t        |            }|d|
dz   ddz  j)                  |       t+        d|
dz    d| d|dd         l t-        ||       t+        d| d| d| dd         |S )aG  
    Spawn browser + GTM agents for demos, GHL setup, and outreach.

    Parameters
    ----------
    task : str
        The high-level task (e.g. "Set up George Bunker GHL demo workflow")
    browser_agents : int
        Number of parallel browser agents (default 3)

    Returns
    -------
    dict with swarm metadata
    T)parentsexist_okhermes_N   c              3   &   K   | ]  }|v  
 y w)N ).0kw
task_lowers     -/mnt/e/genesis-system/core/generals/hermes.py	<genexpr>zspawn_hermes.<locals>.<genexpr>Z   s     H2bJ&Hs   zgoogle/gemini-2.5-flashzmoonshot/moonshot-v1-8kHERMESr   browserr   running)swarm_idgeneralmissionmodel	task_typeagent_countstories_completedstories_completed_this_hourstatus
started_at
output_dirz.jsonagent_   02dz
_output.md)r   agent_indextotal_agentssub_taskoutput_filez
_prompt.mdz[HERMES] Agent /z	 queued: <   z[HERMES] Swarm u    — z agents queued for: )SWARM_PROGRESS_DIRmkdirHIVE_PROGRESS_DIRuuiduuid4hexloweranyOUTREACH_TASK_KEYWORDS_decompose_hermes_taskr   nowr   utc	isoformatstrHERMES_OUTREACH_PROMPTHERMES_BROWSER_PROMPT	enumerateformat
write_textprint_save_state)r   r   r0   r:   is_outreachr3   	sub_tasksswarm_state
state_fileprompt_templateir@   rA   promptr*   s                 @r+   spawn_hermesr`   C   s    TD9D48))"1-./H"X-JTD1JH1GHHK)4%:SE&t^[II #.ZI%'(ll8<<0::<*oK $
%&88J0;,AVO + P8 VAaC9J#?? ''A'K( ( 
 
qs3iz2	2>>vF
 	!uAn%5Yx}oNOP  
K(	OH:U>*::NtTWUWyk
Z[    c                     t        | |      S )u:   Alias for spawn_hermes — used by genesis_hive.py router.)r   )r`   )r   r   s     r+   spawnrc      s    ^<<ra   countrY   c           
          |r"t        |      D cg c]  }d|dz    d|   c}S t        |      D cg c]  }d|dz    d|  d|dz     c}S c c}w c c}w )z#Break a HERMES task into sub-tasks.zResearch and personalise batch r<   z: zStep u    — Phase )range)r   rd   rY   r^   s       r+   rM   rM      s}     5\
 .acU"TF;
 	
 u !uBtfK!u- 
s
   AApathstatec                 Z    | j                  t        j                  |dt                     y )N   )indentdefault)rV   jsondumpsrQ   )rg   rh   s     r+   rX   rX      s    OODJJuQ<=ra   )   )__doc__rm   rG   r   r   pathlibr   	REPO_ROOTrD   rF   rS   rR   BROWSER_TASK_KEYWORDSrL   rQ   intdictr`   rc   boollistrM   rX   r'   ra   r+   <module>rx      s      ' ()	'*:: &3  .   @s @C @ @F= =S = =
 S t S	 >d >4 >D >ra   