Ë
    âß²jë  ã            	       ó\  — U d 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d	e› �d
œZdedz  defd„Z eddh«      Zee   ed<   dedz  defd„Zdedz  defd„Z G d„ de«      Z G d„ de«      Z edddd ee«      d¬«      Z eddd d! ee«      d"d#¬$«      Z e
e«        e
e«       y)%z¸OpenCode provider profiles (Zen + Go).

Both route api_mode per model in core; these profiles carry the
chat_completions reasoning translations (GLM-5.2, Kimi K2, DeepSeek, Ox Alpha).
é    )ÚAny)Úreasoning_effort)Ú__version__)Úregister_provider)ÚProviderProfilez%https://hermes-agent.nousresearch.comzHermes AgentzHermesAgent/)zHTTP-RefererzX-Titlez
User-AgentÚmodelNÚreturnc                 ól   — | xs dj                  «       j                  dd«      d   j                  «       S )z7Bare OpenCode model ID, tolerating aggregator prefixes.Ú ú/é   éÿÿÿÿ)ÚstripÚrsplitÚlower)r   s    úR/home/ubuntu/.hermes/hermes-agent/plugins/model-providers/opencode-zen/__init__.pyÚ_flat_model_namer      s0   € àŠK�R×ÑÓ ×'Ñ'¨¨QÓ/°Ñ3×9Ñ9Ó;Ð;ó    zdeepseek-reasonerzdeepseek-flashÚ_THINKING_CAPABLE_IDSc                 óv   — t        | «      }|j                  d«      xr |j                  d«       xs |t        v S )Nz
deepseek-vzdeepseek-v3)r   Ú
startswithr   ©r   Úms     r   Ú_is_deepseek_thinking_modelr   "   s7   € Ü˜Ó€AØ�L‰L˜Ó&ÒJ¨q¯|©|¸MÓ/JÐ+JÒiÈqÔTiÐOiÐir   c                 óB   ‡— t        | «      Št        ˆfd„dD «       «      S )z=GLM-5.2 across alias spellings (glm-5.2 / glm-5-2 / glm-5p2).c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w©N© )Ú.0Útokenr   s     €r   ú	<genexpr>z$_is_glm_5_2_model.<locals>.<genexpr>*   s   øè ø€ ÒI˜eˆu˜ŒzÑIùs   ƒ)zglm-5.2zglm-5-2zglm-5p2)r   Úanyr   s    @r   Ú_is_glm_5_2_modelr#   '   s   ø€ ä˜Ó€AÜÓIÐ'HÔIÓIÐIr   c                   ó´   — e Zd ZU dZddiZeeef   ed<   dedz  dedz  fd„Z	ddd	œd
edz  dedz  fd„Z
dddœdedz  dedz  deeeef   eeef   f   fd„Zy)ÚOpenCodeGoProfilez0OpenCode Go - model-specific reasoning controls.zmimo-v2.5-proi   Ú_MODEL_MAX_TOKENSr   Nr	   c                 ój   — | j                   j                  t        |«      «      }|€| j                  S |S r   )r&   Úgetr   Údefault_max_tokens)Úselfr   Úcaps      r   Úget_max_tokensz OpenCodeGoProfile.get_max_tokens4   s3   € Ø×$Ñ$×(Ñ(Ô)9¸%Ó)@ÓAˆØ*-¨+ˆt×&Ñ&Ð>¸3Ð>r   )Úbase_urlÚapi_keyr-   r.   c          
      óX  — ddl m }m} ddl}ddlm}m} ddlm}  || j                  ||¬«      }	t        |	j                  dd«      xs d«      j                  «       }
|
sy|j                  d	¬
«      5 }|j                  dd|
› �ddœ¬«      }|j                  «        ddd«       j                  «       xs i j                  d«      xs i }g }dD ]•  \  }}|j                  |«      xs i }|j                  d«      €Œ-t        |j                  d«      xs d«      j                  dd«      }|r|j!                  |«      nd}|j#                   ||t%        |d   «      |¬«      «       Œ—  || j                  d|j'                  |j(                  «      t+        |«      ¬«      S # 1 sw Y   �ŒxY w)a^  Go subscription windows for /usage via ``/zen/go/v1/usage`` (anomalyco/opencode#16513).

        Percent-based payload ``{"usage": {"rolling"|"weekly"|"monthly": {"percent", "resetsAt"}}}``.
        Literal endpoint, NOT the runtime base_url: that one loses its /v1 suffix in
        anthropic_messages mode and /usage only exists under /v1.
        r   )ÚdatetimeÚtimezoneN)ÚAccountUsageSnapshotÚAccountUsageWindow)Úresolve_runtime_provider)Ú	requestedÚexplicit_base_urlÚexplicit_api_keyr.   r   g      $@)Útimeoutz#https://opencode.ai/zen/go/v1/usagezBearer zapplication/json)ÚAuthorizationÚAccept)ÚheadersÚusage))ÚrollingzRolling window)ÚweeklyÚWeekly)ÚmonthlyÚMonthlyÚpercentÚresetsAtÚZz+00:00)ÚlabelÚused_percentÚreset_atÚgo_usage_api)ÚproviderÚsourceÚ
fetched_atÚwindows)r0   r1   ÚhttpxÚagent.account_usager2   r3   Úhermes_cli.runtime_providerr4   ÚnameÚstrr(   r   ÚClientÚraise_for_statusÚjsonÚreplaceÚfromisoformatÚappendÚfloatÚnowÚutcÚtuple)r*   r-   r.   r0   r1   rM   r2   r3   r4   Úruntimer    ÚclientÚresponser<   rL   ÚkeyrE   ÚwindowÚ	reset_rawrG   s                       r   Úfetch_account_usagez%OpenCodeGoProfile.fetch_account_usage8   s’  € ÷ 	0ãçPÝHá*°T·Y±YÐRZÐmtÔuˆÜ�G—K‘K 	¨2Ó.Ò4°"Ó5×;Ñ;Ó=ˆÙØØ�\‰\ $ˆ\Ó'ð 	(¨6Ø—z‘zÐ"GØ>EÀeÀWÐ<MÐYkÑ*lð "ó nˆHà×%Ñ%Ô'÷	(ð —‘“Ò& B×+Ñ+¨GÓ4Ò:¸ˆØˆØgò 	v‰JˆC�Ø—Y‘Y˜s“^Ò) rˆFØ�z‰z˜)Ó$Ð,ØÜ˜FŸJ™J zÓ2Ò8°bÓ9×AÑAÀ#ÀxÓPˆIÙ<E�x×-Ñ-¨iÔ8È4ˆHØ�N‰NÑ-°EÌÈfÐU^ÑN_ÓH`ÐksÔtÕuð	vñ $¨T¯Y©Y¸~Ø/7¯|©|¸H¿L¹LÓ/IÔSXÐY`ÓSaôcð 	c÷	(ñ 	(ús   Á2*FÆF)©Úreasoning_configr   rd   c                ó  — t        |«      rot        j                  |«      }|�|dk(  ri i fS t        j                  |t        j                  t        j
                  «      }i d|t        j                  v r|ifS difS t        |«      j                  d«      r8t        |t        «      si i fS t        j                  |t        j                  «      S t        |«      r3t        j                  |t        j                  t        j                  «      S i i fS )NÚnoner   Úhighzkimi-k2)r#   Úre_Úrequested_effortÚclamp_effortÚGLM52_EFFORTSÚGLM52_OVERRIDESr   r   Ú
isinstanceÚdictÚthinking_toggle_extrasÚKIMI_K2_EFFORTSr   ÚDEEPSEEK_V4_EFFORTSÚDEEPSEEK_V4_OVERRIDES)r*   rd   r   ÚcontextÚeffortÚclampeds         r   Úbuild_api_kwargs_extrasz)OpenCodeGoProfile.build_api_kwargs_extrasZ   sñ   € ô ˜UÔ#ä×)Ñ)Ð*:Ó;ˆFØˆ~ ¨6Ò!1Ø˜2�v�Ü×&Ñ& v¬s×/@Ñ/@Ä#×BUÑBUÓVˆGØÐ*°wÄ#×BSÑBSÑ7S¨GÐ`Ð`Ð`ÐY_Ð`Ð`Ð`Ü˜EÓ"×-Ñ-¨iÔ8ÜÐ.´Ô5Ø˜2�v�Ü×-Ñ-Ð.>Ä×@SÑ@SÓTÐTÜ& uÔ-Ü×-Ñ-Ð.>Ä×@WÑ@WÔY\×YrÑYrÓsÐsØ�2ˆvˆr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r&   rn   rQ   ÚintÚ__annotations__r,   rb   r[   r   rv   r   r   r   r%   r%   -   s©   … Ù:ð *9¸&Ð(AÐ�t˜C ˜H‘~ÓAð? C¨$¡Jð ?°3¸±:ó ?ð =AÐX\ò  c¨s°T©zð  cÈ3ÐQUÉ:ó  cðF 26È4òØ#'¨$¡;ðØ>AÀD¹jðà	ˆt�C˜�H‰~˜t C¨ H™~Ð-Ñ	.ôr   r%   c                   óV   — e Zd ZdZdddœdedz  dedz  deeeef   eeef   f   fd„Zy)ÚOpenCodeZenProfilez1OpenCode Zen - model-specific reasoning controls.Nrc   rd   r   r	   c                ó.   — t        j                  ||«      S r   )rh   Úox_alpha_reasoning_extras)r*   rd   r   rs   s       r   rv   z*OpenCodeZenProfile.build_api_kwargs_extrasp   s   € ô ×,Ñ,Ð-=¸uÓEÐEr   )	rw   rx   ry   rz   rn   rQ   r[   r   rv   r   r   r   r~   r~   m   sO   „ Ù;ð 26È4òFØ#'¨$¡;ðFØ>AÀD¹jðFà	ˆt�C˜�H‰~˜t C¨ H™~Ð-Ñ	.ôFr   r~   zopencode-zen)ÚopencodeÚopencode_zenÚzen)ÚOPENCODE_ZEN_API_KEYzhttps://opencode.ai/zen/v1zgemini-3-flash)rP   ÚaliasesÚenv_varsr-   Údefault_headersÚdefault_aux_modelzopencode-go)Úopencode_goÚgozopencode-go-sub)ÚOPENCODE_GO_API_KEYzhttps://opencode.ai/zen/go/v1zglm-5F)rP   r…   r†   r-   r‡   rˆ   Úsupports_vision_tool_messages)rz   Útypingr   Úagentr   rh   Ú
hermes_clir   Ú_HERMES_VERSIONÚ	providersr   Úproviders.baser   Ú_ATTRIBUTION_HEADERSrQ   r   Ú	frozensetr   r|   Úboolr   r#   r%   r~   rn   r‚   r‰   r   r   r   ú<module>r–      s  ðòõ å )Ý 5Ý 'Ý *ð
 <ØØ  Ð 1Ð2ñÐ ð<˜C $™Jð <¨3ó <ñ )2Ð3FÐHXÐ2YÓ(ZÐ �y ‘~Ó Zðj s¨T¡zð j°dó jð
J˜S 4™Zð J¨Dó Jô=˜ô =ô@F˜ô Fñ "Ø	Ð!DÐOhØ)¹4Ð@TÓ;UØ&ô€ñ  Ø	Ð HÐSkØ,¹dÐCWÓ>XØð #(ô
€ñ �,Ô Ù �+Õ r   