§
    øžyjWO  ã                  ó  — d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	m
Z
 ddl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mZ ddlmZ dZdZd*d„Zd+d„Zd+d„Zd+d„Z d+d„Z!d+d„Z"d+d„Z#d+d„Z$d,d „Z%d-d#„Z&d$d%œd.d)„Z'dS )/u©  CLI handlers for ``hermes secrets onepassword ...``.

Subcommands:
    setup    â€” verify the op CLI, set account / token env var, enable
    status   â€” show config + op binary + auth + configured references
    set      â€” map an env var to an ``op://â€¦`` reference
    remove   â€” drop a mapping
    sync     â€” resolve references now and show what would be applied (dry-run)
    disable  â€” flip ``secrets.onepassword.enabled`` to False

Unlike Bitwarden, the ``op`` binary is NOT auto-installed: 1Password publishes
the CLI through OS package managers and signed installers, so Hermes expects
an already-installed, already-authenticated ``op`` and never downloads one.
é    )ÚannotationsN)ÚPath)ÚOptional)ÚConsole)ÚPanel)ÚTable)Úonepassword)Úget_env_pathÚload_configÚsave_configÚsave_env_value)Úmasked_secret_promptÚOP_SERVICE_ACCOUNT_TOKENz5https://developer.1password.com/docs/cli/get-started/Úparent_parserúargparse.ArgumentParserÚreturnÚNonec                óÐ  — |                       d¬¦  «        }|                     dd¬¦  «        }|                     dd¬¦  «         |                     dd	t          › d
�¬¦  «         |                     dd¬¦  «         |                     dd¬¦  «         |                     t
          ¬¦  «         |                     dd¬¦  «        }|                     t          ¬¦  «         |                     dd¬¦  «        }|                     dd¬¦  «         |                     ddd¬¦  «         |                     t          ¬¦  «         |                     dd¬¦  «        }|                     dd¬¦  «         |                     dd¬¦  «         |                     t          ¬¦  «         |                     dd ¬¦  «        }|                     dd!¬¦  «         |                     t          ¬¦  «         |                     d"d#¬¦  «        }|                     d$dd%¬¦  «         |                     t          ¬¦  «         |                     d&d'¬¦  «        }|                     t          ¬¦  «         d(S ))z>Attach the ``onepassword`` subcommand tree to a parent parser.Úsecrets_op_command)ÚdestÚsetupz:Verify the op CLI, set account / token env var, and enable)Úhelpú	--accountz=1Password account shorthand or sign-in address (op --account)z--token-envz1Env var holding a service-account token (default ú)z--tokenz8Service-account token to store in .env non-interactivelyz--binary-pathz2Absolute path to the op binary (skips PATH lookup))ÚfuncÚstatusz$Show config + op binary + referencesÚtokenz?Rotate the service-account token: validate and store it in .envz@Provide the new token non-interactively (default: masked prompt)z--no-verifyÚ
store_truez7Store without probing 1Password first (not recommended))Úactionr   Úsetz$Map an env var to an op:// referenceÚenv_varz.Environment variable name, e.g. OPENAI_API_KEYÚ	referencez51Password reference, e.g. op://Private/OpenAI/api keyÚremoveu'   Remove an env-var â†’ reference mappingz"Environment variable name to unmapÚsyncz.Resolve references now and report what changedz--applyzIActually export resolved values into the current shell (default: dry-run)Údisablez"Turn off the 1Password integrationN)Úadd_subparsersÚ
add_parserÚadd_argumentÚ_DEFAULT_TOKEN_ENVÚset_defaultsÚ	cmd_setupÚ
cmd_statusÚ	cmd_tokenÚcmd_setÚ
cmd_removeÚcmd_syncÚcmd_disable)	r   Úsubr   r   r   Úset_pr#   r$   r%   s	            úH/home/ragecks/.hermes/hermes-agent/hermes_cli/onepassword_secrets_cli.pyÚregister_clir5   /   sÑ  € à
×
&Ò
&Ð,@Ð
&Ñ
AÔ
A€Cà�NŠNØØIð ñ ô €Eð 
×ÒØØLð ñ ô ð ð 
×ÒØØVÕASÐVÐVÐVð ñ ô ð ð 
×ÒØØGð ñ ô ð ð 
×ÒØØAð ñ ô ð ð 
×Ò�IÐÑ&Ô&Ð&à�^Š^˜HÐ+Qˆ^ÑRÔR€FØ
×Ò�ZÐÑ(Ô(Ð(à�NŠNØØNð ñ ô €Eð 
×ÒØØOð ñ ô ð ð 
×ÒØØØFð ñ ô ð ð
 
×Ò�IÐÑ&Ô&Ð&à�NŠN˜5Ð'MˆNÑNÔN€EØ	×Ò�yÐ'WÐÑXÔXÐXØ	×Ò�{Ð)`ÐÑaÔaÐaØ	×Ò�GÐÑ$Ô$Ð$à�^Š^˜HÐ+Tˆ^ÑUÔU€FØ
×Ò˜	Ð(LÐÑMÔMÐMØ
×Ò�ZÐÑ(Ô(Ð(à�>Š>˜&Ð'Wˆ>ÑXÔX€DØ×ÒØØØXð ñ ô ð ð
 	×Ò�8ÐÑ$Ô$Ð$à�nŠn˜YÐ-QˆnÑRÔR€GØ×Ò�kÐÑ*Ô*Ð*Ð*Ð*ó    Úargsúargparse.NamespaceÚintc                ód  — t          ¦   «         }|                     t          j        dt          › d�d¬¦  «        ¦  «         t          ¦   «         }|                     di ¦  «                             di ¦  «        }|                     ¦   «          |                     d¦  «         | j        p|                     dd	¦  «        pd	 	                    ¦   «         }t          j        |¦  «        }|€P|r|                     d
|› d�¦  «         n|                     d¦  «         |                     dt          › �¦  «         dS |                     d|› dt          |¦  «        › d�¦  «         |r||d<   | j        rT| j         	                    ¦   «         r;| j         	                    ¦   «         |d<   |                     d|d         › d�¦  «         |                     ¦   «          |                     d¦  «         | j        p|                     d¦  «        pt           	                    ¦   «         }||d<   | j        pd	 	                    ¦   «         }|rGt#          ||¦  «         |t$          j        |<   |                     dt)          ¦   «         › d|› �¦  «         n‘t$          j                             |¦  «        r|                     d|› �¦  «         nYt+          ||                     dd	¦  «        ¦  «        }|r|                     d|› d�¦  «         n|                     d|› d�¦  «         d|d<   |                     di ¦  «         |                     dd ¦  «         |                     d!d¦  «         t-          |¦  «         |                     ¦   «          |                     d"¦  «         |                     d#¦  «         d$S )%Nzã[bold]1Password secret source setup[/bold]

Hermes resolves [cyan]op://vault/item/field[/cyan] references through your
already-installed, already-authenticated 1Password CLI (`op`).

Don't have it yet? Install + sign in: [cyan]ú[/cyan]Úcyan)Úborder_styleÚsecretsr	   z&[bold]Step 1[/bold]  Locate the op CLIÚbinary_pathÚ u     [red]âœ— z& is not an executable op binary.[/red]u&     [red]âœ— op not found on PATH.[/red]z  Install the 1Password CLI: é   u     [green]âœ“[/green] z  (r   Úaccountz  Account: [cyan]z#[bold]Step 2[/bold]  AuthenticationÚservice_account_token_envu5     [green]âœ“[/green] service-account token stored in ú as u6     [green]âœ“[/green] using service-account token from u0     [green]âœ“[/green] using existing op session (z«  [yellow]No service-account token and no active op session detected.[/yellow]
  Either run [cyan]op signin[/cyan] (desktop/interactive) or set a service-account token in z, then re-run status.TÚenabledÚenvÚcache_ttl_secondsé,  Úoverride_existingu6   [green]âœ“ 1Password secret source is enabled.[/green]zð  Map credentials:  [cyan]hermes secrets onepassword set OPENAI_API_KEY "op://Private/OpenAI/api key"[/cyan]
  Preview:          [cyan]hermes secrets onepassword sync[/cyan]
  Status:           [cyan]hermes secrets onepassword status[/cyan]r   )r   Úprintr   ÚfitÚ	_DOCS_URLr   Ú
setdefaultr?   ÚgetÚstripÚop_srcÚfind_opÚ_op_versionrB   Ú	token_envr)   r   r   ÚosÚenvironr
   Ú
_op_whoamir   )	r7   ÚconsoleÚcfgÚop_cfgr?   ÚbinaryrS   r   Úwhos	            r4   r+   r+   u   s  € Ý‰iŒi€GØ‡M‚MÝŒ	ðNõ <EðNð Nð Nð  ð	
ñ 	
ô 	
ñô ð õ ‰-Œ-€CØ�^Š^˜I rÑ*Ô*×5Ò5°mÀRÑHÔH€Fð ‡M‚M�O„O€OØ‡M‚MÐ:Ñ;Ô;Ð;ØÔ#ÐJ v§z¢z°-ÀÑ'DÔ'DÐJÈ×QÒQÑSÔS€KÝŒ^˜KÑ(Ô(€FØ€~Øð 	DØ�MŠMÐ[¨Ð[Ð[Ð[Ñ\Ô\Ð\Ð\à�MŠMÐBÑCÔCÐCØ�ŠÐAµiÐAÐAÑBÔBÐBØˆqØ‡M‚MÐK¨&ÐKÐKµ[ÀÑ5HÔ5HÐKÐKÐKÑLÔLÐLØð ,Ø +ˆˆ}Ñð „|ð F˜œ×*Ò*Ñ,Ô,ð FØ œL×.Ò.Ñ0Ô0ˆˆyÑØ�ŠÐD¨&°Ô*;ÐDÐDÐDÑEÔEÐEð ‡M‚M�O„O€OØ‡M‚MÐ7Ñ8Ô8Ð8Ø”ð ' 6§:¢:Ð.IÑ#JÔ#Jð 'Ý&¯ª©¬ð à*3€FÐ&Ñ'àŒZÐ˜2×$Ò$Ñ&Ô&€EØð Ý�y %Ñ(Ô(Ð(Ø %�Œ
�9ÑØ�Šð 9Ý%™œð9ð 9Ø-6ð9ð 9ñ 	:ô 	:ð 	:ð 	:å	Œ�Š˜	Ñ	"Ô	"ð Ø�ŠÐZÈyÐZÐZÑ[Ô[Ð[Ð[å˜ §¢¨I°rÑ!:Ô!:Ñ;Ô;ˆØð 	Ø�MŠMÐSÈSÐSÐSÐSÑTÔTÐTÐTà�MŠMðMð -6ðMð Mð Mñô ð ð €Fˆ9ÑØ
×Ò�e˜RÑ Ô Ð Ø
×ÒÐ)¨3Ñ/Ô/Ð/Ø
×ÒÐ)¨4Ñ0Ô0Ð0Ý�ÑÔÐà‡M‚M�O„O€OØ‡M‚MÐJÑKÔKÐKØ‡M‚Mð	Mñô ð ð ˆ1r6   c                ó€  — t          ¦   «         }t          ¦   «         }|                     d¦  «        pi                      d¦  «        pi }t          |                     d¦  «        ¦  «        }t	          |                     dd¦  «        pd¦  «                             ¦   «         }|                     dt          ¦  «        }t	          |                     dd¦  «        pd¦  «                             ¦   «         }t          |                     d¦  «        t          ¦  «        r|                     d¦  «        ni }t          t          j
                             |¦  «        ¦  «        }	t          j        |¦  «        }
t          d	d d
¬¦  «        }|                     dd¬¦  «         |                     d¦  «         |                     dt!          |¦  «        ¦  «         |                     d|pd¦  «         |                     d|¦  «         |                     dt!          |	¦  «        ¦  «         |                     dt!          t          |                     dd¦  «        ¦  «        ¦  «        ¦  «         |                     dt	          |                     dd¦  «        ¦  «        ¦  «         |
r*|                     d|
› dt#          |
¦  «        › d�¦  «         n|                     dd¦  «         |                     dt	          t%          |¦  «        ¦  «        ¦  «         |                     t)          |dd¬ ¦  «        ¦  «         |r�t          dd¬!¦  «        }|                     d"d¬¦  «         |                     d#¦  «         t+          |¦  «        D ]+}|                     |t	          ||         ¦  «        ¦  «         Œ,|                     |¦  «         |s|                     d$¦  «         d%S |
rF|	sDt-          |
|¦  «        }|r|                     d&|› �¦  «         n|                     d'|› d(�¦  «         |s|                     d)¦  «         d%S )*Nr>   r	   rE   rB   r@   rC   r?   rF   F)r   é   )Úshow_headerÚboxÚpaddingÚbold©ÚstyleÚEnabledÚAccountz[dim]default[/dim]zToken env varzToken in envzOverride existingrI   TzCache TTL (s)rG   rH   z	op binaryz (r   z[yellow]not found[/yellow]Ú
Referencesz1Password secret sourcer<   )Útitler=   ©r^   Úheader_styleúEnv varÚ	Referencez?
  Run [cyan]hermes secrets onepassword setup[/cyan] to enable.r   z%
  [green]Active op session:[/green] z$
  [yellow]No active op session and uK    is unset â€” Hermes will warn and skip 1Password on next startup.[/yellow]uv   
  [yellow]No references mapped yet.[/yellow]  Add one: [cyan]hermes secrets onepassword set ENV_VAR "op://â€¦"[/cyan])r   r   rN   ÚboolÚstrrO   r)   Ú
isinstanceÚdictrT   rU   rP   rQ   r   Ú
add_columnÚadd_rowÚ_ynrR   ÚlenrJ   r   ÚsortedrV   )r7   rW   rX   rY   rE   rB   rS   r?   Ú
referencesÚ	token_setrZ   ÚtableÚ	ref_tableÚnamer[   s                  r4   r,   r,   Æ   s
  € Ý‰iŒi€GÝ
‰-Œ-€CØ�gŠg�iÑ Ô Ð& B×+Ò+¨MÑ:Ô:Ð@¸b€Få�6—:’:˜iÑ(Ô(Ñ)Ô)€GÝ�&—*’*˜Y¨Ñ+Ô+Ð1¨rÑ2Ô2×8Ò8Ñ:Ô:€GØ—
’
Ð6Õ8JÑKÔK€IÝ�f—j’j °Ñ3Ô3Ð9°rÑ:Ô:×@Ò@ÑBÔB€KÝ&0°·²¸EÑ1BÔ1BÅDÑ&IÔ&IÐQ�—’˜EÑ"Ô"Ð"Èr€JÝ•R”Z—^’^ IÑ.Ô.Ñ/Ô/€IåŒ^˜KÑ(Ô(€Få˜e¨°vÐ>Ñ>Ô>€EØ	×Ò�R˜vÐÑ&Ô&Ð&Ø	×Ò�RÑÔÐØ	‡M‚M�)�S ™\œ\Ñ*Ô*Ð*Ø	‡M‚M�)˜WÐ<Ð(<Ñ=Ô=Ð=Ø	‡M‚M�/ 9Ñ-Ô-Ð-Ø	‡M‚M�.¥# i¡.¤.Ñ1Ô1Ð1Ø	‡M‚MÐ%¥s­4°·
²
Ð;NÐPTÑ0UÔ0UÑ+VÔ+VÑ'WÔ'WÑXÔXÐXØ	‡M‚M�/¥3 v§z¢zÐ2EÀsÑ'KÔ'KÑ#LÔ#LÑMÔMÐMØð AØ�Š�k fÐ#FÐ#Fµ¸FÑ0CÔ0CÐ#FÐ#FÐ#FÑGÔGÐGÐGà�Š�kÐ#?Ñ@Ô@Ð@Ø	‡M‚M�,¥¥C¨
¡O¤OÑ 4Ô 4Ñ5Ô5Ð5à‡M‚M•%˜Ð%>ÈVÐTÑTÔTÑUÔUÐUàð !Ý d¸Ð@Ñ@Ô@ˆ	Ø×Ò˜Y¨fÐÑ5Ô5Ð5Ø×Ò˜[Ñ)Ô)Ð)Ý˜:Ñ&Ô&ð 	;ð 	;ˆDØ×Ò˜d¥C¨
°4Ô(8Ñ$9Ô$9Ñ:Ô:Ð:Ð:Ø�Š�iÑ Ô Ð àð Ø�ŠÐXÑYÔYÐYØˆqØð �ið Ý˜ Ñ)Ô)ˆØð 	Ø�MŠMÐHÀ3ÐHÐHÑIÔIÐIÐIà�MŠMðP¸	ð Pð Pð Pñô ð ð ð 
Ø�ŠðOñ	
ô 	
ð 	
ð ˆ1r6   c                ó~  — t          ¦   «         }t          j        | j        | j        i¦  «        \  }}| j        |vr |D ]}|                     d|› d�¦  «         ŒdS t          ¦   «         }|                     di ¦  «                             di ¦  «        }|                     d¦  «        }t          |t          ¦  «        si }||d<   || j                 || j        <   t          |¦  «         |                     d| j        › d|| j                 › �¦  «         |                     d	¦  «        s|                     d
¦  «         dS )Nú[red]ú[/red]rA   r>   r	   rF   u    [green]âœ“[/green] mapped [cyan]u   [/cyan] â†’ rE   uy     [yellow]Note: the integration is disabled â€” run [cyan]hermes secrets onepassword setup[/cyan] to turn it on.[/yellow]r   )r   rP   Ú_validate_referencesr!   r"   rJ   r   rM   rN   rn   ro   r   )r7   rW   ÚvalidÚwarningsÚwrX   rY   Úenv_maps           r4   r.   r.     s`  € Ý‰iŒi€Gõ Ô1°4´<ÀÄÐ2PÑQÔQ�O€Eˆ8Ø„|˜5Ð Ð Øð 	-ð 	-ˆAØ�MŠMÐ+ !Ð+Ð+Ð+Ñ,Ô,Ð,Ð,Øˆqå
‰-Œ-€CØ�^Š^˜I rÑ*Ô*×5Ò5°mÀRÑHÔH€FØ�jŠj˜ÑÔ€GÝ�g�tÑ$Ô$ð  ØˆØˆˆu‰Ø! $¤,Ô/€GˆDŒLÑÝ�ÑÔÐØ‡M‚Mð	!¨4¬<ð 	!ð 	!Ø�”Ôð	!ð 	!ñô ð ð �:Š:�iÑ Ô ð 
Ø�ŠðTñ	
ô 	
ð 	
ð ˆ1r6   c                ó¢  — t          ¦   «         }t          ¦   «         }|                     di ¦  «                             di ¦  «        }|                     d¦  «        }t	          |t
          ¦  «        r	| j        |vr |                     d| j        › d�¦  «         dS || j        = t          |¦  «         |                     d| j        › d�¦  «         d	S )
Nr>   r	   rF   z[yellow]z is not mapped.[/yellow]rA   u-   [green]âœ“[/green] removed mapping for [cyan]r;   r   )	r   r   rM   rN   rn   ro   r!   rJ   r   )r7   rW   rX   rY   r�   s        r4   r/   r/      sÈ   € Ý‰iŒi€GÝ
‰-Œ-€CØ�^Š^˜I rÑ*Ô*×5Ò5°mÀRÑHÔH€FØ�jŠj˜ÑÔ€GÝ�g�tÑ$Ô$ð ¨¬¸GÐ(CÐ(CØ�ŠÐG ¤ÐGÐGÐGÑHÔHÐHØˆqØ�”ÐÝ�ÑÔÐØ‡M‚MÐWÀ$Ä,ÐWÐWÐWÑXÔXÐXØˆ1r6   c                ó&  — t          ¦   «         }t          ¦   «         }|                     d¦  «        pi                      d¦  «        pi }|                     dt          ¦  «        }t	          |                     dd¦  «        pd¦  «                             ¦   «         }t	          |                     dd¦  «        pd¦  «                             ¦   «         }| j        pd                     ¦   «         }|sot          j         	                    ¦   «         s| 
                    d¦  «         dS | 
                    d	¦  «         t          d
|› d�¦  «                             ¦   «         }|s| 
                    d¦  «         dS | j        s�t          j        |¦  «        }|€ | 
                    dt          › d�¦  «         dS | 
                    d¦  «         t!          |||¬¦  «        }	|	€| 
                    d¦  «         dS | 
                    d|	› d�¦  «         t#          ||¦  «         |t$          j        |<   t          j        ¦   «          | 
                    dt+          ¦   «         › d|› d�¦  «         |                     d¦  «        s| 
                    d¦  «         dS )u-  Rotate the 1Password service-account token without the full setup flow.

    Prompts for (or accepts via ``--token``) a new service-account token,
    verifies it with ``op whoami`` (unless ``--no-verify``), and only then
    persists it to .env â€” so a bad paste never bricks the working token.
    r>   r	   rC   rB   r@   r?   u2   [red]No TTY â€” pass the token with --token.[/red]rA   uc   Create a new service-account token at https://my.1password.com â†’ Developer â†’ Service Accounts.
zPaste new token (z): z![red]Empty token, aborting.[/red]Nu&   [red]op CLI not found â€” install it (z3) or re-run with --no-verify to store anyway.[/red]u   Verifying with `op whoami`â€¦©Útoken_valueuD   [red]âœ— New token was rejected by op â€” nothing was changed.[/red]u#   [green]âœ“ Token accepted[/green] (z).u   [green]âœ“[/green] stored in rD   z..  Takes effect on the next Hermes invocation.rE   u€   [yellow]Note: the 1Password integration is currently disabled â€” run `hermes secrets onepassword setup` to turn it on.[/yellow]r   )r   r   rN   r)   rm   rO   r   ÚsysÚstdinÚisattyrJ   r   Ú	no_verifyrP   rQ   rL   rV   r   rT   rU   Úclear_cachesr
   )
r7   rW   rX   rY   rS   rB   r?   r   rZ   r[   s
             r4   r-   r-   .  sÀ  € õ ‰iŒi€GÝ
‰-Œ-€CØ�gŠg�iÑ Ô Ð& B×+Ò+¨MÑ:Ô:Ð@¸b€FØ—
’
Ð6Õ8JÑKÔK€IÝ�&—*’*˜Y¨Ñ+Ô+Ð1¨rÑ2Ô2×8Ò8Ñ:Ô:€GÝ�f—j’j °Ñ3Ô3Ð9°rÑ:Ô:×@Ò@ÑBÔB€KàŒZÐ˜2×$Ò$Ñ&Ô&€EØð QÝŒy×ÒÑ!Ô!ð 	Ø�MŠMÐNÑOÔOÐOØ�1Ø�ŠðMñ	
ô 	
ð 	
õ %Ð%G¸Ð%GÐ%GÐ%GÑHÔH×NÒNÑPÔPˆØð Ø�ŠÐ9Ñ:Ô:Ð:ØˆqàŒ>ð EÝ” Ñ,Ô,ˆØˆ>Ø�MŠMðA½ð Að Að Añô ð ð �1Ø�ŠÐ5Ñ6Ô6Ð6Ý˜ °eÐ<Ñ<Ô<ˆØˆ;Ø�MŠMØVñô ð ð �1Ø�ŠÐC¸CÐCÐCÐCÑDÔDÐDå�9˜eÑ$Ô$Ð$Ø!…B„JˆyÑõ ÔÑÔÐØ‡M‚Mð	6­©¬ð 	6ð 	6¸Ið 	6ð 	6ð 	6ñô ð ð �:Š:�iÑ Ô ð 
Ø�ŠðMñ	
ô 	
ð 	
ð ˆ1r6   c                óþ  — t          ¦   «         }t          ¦   «         }|                     d¦  «        pi                      d¦  «        pi }|                     d¦  «        s|                     d¦  «         dS t	          |                     d¦  «        t
          ¦  «        r|                     d¦  «        ni }|s|                     d¦  «         dS t          |                     d	d
¦  «        pd
¦  «                             ¦   «         }|                     dt          ¦  «        }t          |                     dd
¦  «        pd
¦  «                             ¦   «         }| j	        �r^t          j        d||||t          |                     dd¦  «        ¦  «        d¬¦  «        }|j        r |                     d|j        › d�¦  «         dS t          dd¬¦  «        }	|	                     dd¬¦  «         |	                     d¦  «         t!          |j        ¦  «        D ]}
|	                     |
d¦  «         Œt!          |j        ¦  «        D ]}
|	                     |
d¦  «         Œ|                     |	¦  «         |j        D ]}|                     d|› �¦  «         Œ|                     dt+          |j        ¦  «        › d�¦  «         dS 	 t          j        ||||d¬¦  «        \  }}n1# t.          $ r$}|                     d|› d�¦  «         Y d }~dS d }~ww xY wt          |                     dd¦  «        ¦  «        }t          dd¬¦  «        }	|	                     dd¬¦  «         |	                     d¦  «         t!          |¦  «        D ]»}
|
|k    r|	                     |
d¦  «         Œ|
|vr|	                     |
d ¦  «         Œ:t0          j                             |
¦  «        r|s|	                     |
d!¦  «         Œrt          t0          j                             |
¦  «        ¦  «        }|	                     |
d"|rd#nd
z   ¦  «         Œ¼|                     |	¦  «         |D ]}|                     d|› �¦  «         Œ|                     d$¦  «         dS )%Nr>   r	   rE   zb[yellow]1Password integration is disabled.  Run `hermes secrets onepassword setup` first.[/yellow]rA   rF   us   [yellow]No op:// references configured.  Add one with `hermes secrets onepassword set ENV_VAR "op://â€¦"`.[/yellow]r   rB   r@   rC   r?   TrI   )rE   rF   rB   rC   r?   rI   rG   r{   r|   ra   rh   rj   r<   rb   ÚActionz[green]exported[/green]z,[dim]skipped (already set / token var)[/dim]z[yellow]warning:[/yellow] z
  [green]Exported z( secret(s) into current process.[/green]F)ru   rB   rS   r?   Ú	use_cachez[dim]skip (token var)[/dim]z$[red]unresolved (see warnings)[/red]z[dim]skip (already set)[/dim]z[green]would export[/green]z (overrides)u²   
  This was a dry-run â€” references resolve automatically on the next [cyan]hermes[/cyan] invocation.  Re-run with [cyan]--apply[/cyan] to export into the current shell instead.)r   r   rN   rJ   rn   ro   rm   rO   r)   ÚapplyrP   Úapply_onepassword_secretsrl   Úerrorr   rp   rt   Úappliedrq   Úskippedr   rs   Úfetch_onepassword_secretsÚRuntimeErrorrT   rU   )r7   rW   rX   rY   ru   rB   rS   r?   Úresultrw   ry   r€   r>   r   ÚexcÚoverrideÚalreadys                    r4   r0   r0   l  sù  € Ý‰iŒi€GÝ
‰-Œ-€CØ�gŠg�iÑ Ô Ð& B×+Ò+¨MÑ:Ô:Ð@¸b€FØ�:Š:�iÑ Ô ð Ø�ŠðAñ	
ô 	
ð 	
ð ˆqå&0°·²¸EÑ1BÔ1BÅDÑ&IÔ&IÐQ�—’˜EÑ"Ô"Ð"Èr€JØð Ø�ŠðNñ	
ô 	
ð 	
ð ˆqå�&—*’*˜Y¨Ñ+Ô+Ð1¨rÑ2Ô2×8Ò8Ñ:Ô:€GØ—
’
Ð6Õ8JÑKÔK€IÝ�f—j’j °Ñ3Ô3Ð9°rÑ:Ô:×@Ò@ÑBÔB€Kð „zñ ÝÔ1ØØØØ&/Ø#Ý" 6§:¢:Ð.AÀ4Ñ#HÔ#HÑIÔIØð
ñ 
ô 
ˆð Œ<ð 	Ø�MŠMÐ6 &¤,Ð6Ð6Ð6Ñ7Ô7Ð7Ø�1Ý $°VÐ<Ñ<Ô<ˆØ×Ò˜¨&ÐÑ1Ô1Ð1Ø×Ò˜Ñ"Ô"Ð"Ý˜6œ>Ñ*Ô*ð 	;ð 	;ˆDØ�MŠM˜$Ð 9Ñ:Ô:Ð:Ð:Ý˜6œ>Ñ*Ô*ð 	Pð 	PˆDØ�MŠM˜$Ð NÑOÔOÐOÐOØ�Š�eÑÔÐØ”ð 	<ð 	<ˆAØ�MŠMÐ:°qÐ:Ð:Ñ;Ô;Ð;Ð;Ø�Šð¥3 v¤~Ñ#6Ô#6ð ð ð ñ	
ô 	
ð 	
ð ˆqð
Ý"Ô<Ø!ØØØ#Øð
ñ 
ô 
Ñˆ��øõ ð ð ð Ø�ŠÐ)˜cÐ)Ð)Ð)Ñ*Ô*Ð*Øˆqˆqˆqˆqˆqøøøøðøøøõ �F—J’JÐ2°DÑ9Ô9Ñ:Ô:€HÝ˜d°Ð8Ñ8Ô8€EØ	×Ò�Y fÐÑ-Ô-Ð-Ø	×Ò�XÑÔÐÝ�zÑ"Ô"ð ð ˆØ�9ÒÐØ�MŠM˜$Ð =Ñ>Ô>Ð>Ð>Ø˜Ð Ð Ø�MŠM˜$Ð FÑGÔGÐGÐGÝŒZ�^Š^˜DÑ!Ô!ð 	¨(ð 	Ø�MŠM˜$Ð ?Ñ@Ô@Ð@Ð@å�2œ:Ÿ>š>¨$Ñ/Ô/Ñ0Ô0ˆGØ�MŠMØØ-À7Ð1R°°ÐPRÑSñô ð ð ð ‡M‚M�%ÑÔÐØð 8ð 8ˆØ�ŠÐ6°1Ð6Ð6Ñ7Ô7Ð7Ð7Ø‡M‚Mð	*ñô ð ð
 ˆ1s   Ê=K Ë
LË$LÌLc                óä   — t          ¦   «         }t          ¦   «         }|                     di ¦  «                             di ¦  «        }d|d<   t          |¦  «         |                     d¦  «         dS )Nr>   r	   FrE   uü   [green]Disabled.[/green]  1Password references will NOT be resolved on the next Hermes invocation.
  Your reference mappings are left in config.yaml â€” remove them with [cyan]hermes secrets onepassword remove ENV_VAR[/cyan] if you no longer need them.r   )r   r   rM   r   rJ   )r7   rW   rX   rY   s       r4   r1   r1   Ë  sq   € Ý‰iŒi€GÝ
‰-Œ-€CØ�^Š^˜I rÑ*Ô*×5Ò5°mÀRÑHÔH€FØ€Fˆ9ÑÝ�ÑÔÐØ‡M‚Mð	ñô ð ð ˆ1r6   Úbrl   rm   c                ó   — | rdndS )Nz[green]yes[/green]z[dim]no[/dim]© )rš   s    r4   rr   rr   à  s   € Ø#$Ð9ÐÐ¨/Ð9r6   rZ   r   c                ó  — 	 t          j        t          | ¦  «        dgddddd¬¦  «        }|j        dk    r8|j        p|j                             ¦   «                              ¦   «         d         S n# t          t           j	        f$ r Y nw xY wdS )	Nz	--versionTúutf-8Úreplaceé   )Úcapture_outputÚtextÚencodingÚerrorsÚtimeoutr   zversion unknown)
Ú
subprocessÚrunrm   Ú
returncodeÚstdoutÚstderrrO   Ú
splitlinesÚOSErrorÚTimeoutExpired)rZ   Úress     r4   rR   rR   ä  s¨   € ðÝŒnÝ�‰[Œ[˜+Ð&ØØØØØð
ñ 
ô 
ˆð Œ>˜QÒÐØ”JÐ, #¤*×3Ò3Ñ5Ô5×@Ò@ÑBÔBÀ1ÔEÐEð øå•ZÔ.Ð/ð ð ð ØˆðøøøàÐs   ‚A+A/ Á/BÂBr@   r„   rB   r…   úOptional[str]c          	     óš  — t          | ¦  «        dg}|r|d|gz  }ddlm}  |dd¬¦  «        }|                     dd¦  «         |r||d	<   	 t	          j        ||d
d
ddd¬¦  «        }n# t          t          j        f$ r Y dS w xY w|j        dk    rdS |j	        pd 
                    ¦   «         }|                     dd¦  «        dd…         pdS )zõReturn a short identity string if op is authenticated, else None.

    ``token_value``, when given, is passed to the child as
    ``OP_SERVICE_ACCOUNT_TOKEN`` so a candidate token can be probed
    without touching the caller's environment.
    Úwhoamir   r   )Úbuild_subprocess_envF)Úscrub_secretsÚinherit_profile_homeÚNO_COLORÚ1r   Trž   rŸ   é
   )rF   r¡   r¢   r£   r¤   r¥   Nr@   Ú
Ú éx   Úauthenticated)rm   Útools.environments.localr²   rM   r¦   r§   r¬   r­   r¨   r©   rO   rŸ   )rZ   rB   r…   Úcmdr²   rF   r®   Úouts           r4   rV   rV   õ  s   € õ ˆv‰;Œ;˜Ð
!€CØð &Ø�˜WÐ%Ñ%ˆð >Ð=Ð=Ð=Ð=Ð=Ø
Ð
¨UÈÐ
OÑ
OÔ
O€CØ‡N‚N�:˜sÑ#Ô#Ð#Øð 6Ø*5ˆÐ&Ñ'ðÝŒnØ�S¨°DØ Y¸ð
ñ 
ô 
ˆˆøõ •ZÔ.Ð/ð ð ð Øˆtˆtðøøøà
„~˜ÒÐØˆtØŒ:Ð˜×
"Ò
"Ñ
$Ô
$€CØ�;Š;�t˜SÑ!Ô! $ 3 $Ô'Ð:¨?Ð:s   ÁA( Á(BÂB)r   r   r   r   )r7   r8   r   r9   )rš   rl   r   rm   )rZ   r   r   rm   )rZ   r   rB   rm   r…   rm   r   r¯   )(Ú__doc__Ú
__future__r   ÚargparserT   r¦   r†   Úpathlibr   Útypingr   Úrich.consoler   Ú
rich.panelr   Ú
rich.tabler   Úagent.secret_sourcesr	   rP   Úhermes_cli.configr
   r   r   r   Úhermes_cli.secret_promptr   r)   rL   r5   r+   r,   r.   r/   r-   r0   r1   rr   rR   rV   rœ   r6   r4   ú<module>rÊ      s  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð ð ð :Ð 9Ð 9Ð 9Ð 9Ð 9à/Ð ØC€	ð>+ð >+ð >+ð >+ðLNð Nð Nð Nðb8ð 8ð 8ð 8ðvð ð ð ð>ð ð ð ð;ð ;ð ;ð ;ð|\ð \ð \ð \ð~ð ð ð ð*:ð :ð :ð :ðð ð ð ð$ 79ð;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r6   