Update CLI chat session bridge (#697)

* feat: add CLI chat sessions with Python agent bridge

Introduce a new CLI chat mode that connects Web UI directly to Hermes
Agent's AIAgent via a Python bridge subprocess and Socket.IO, bypassing
the API Server /v1/responses path. Supports streaming, slash commands
(/new, /undo, /retry, /branch, /compress, /save, /title), interrupt,
and steer.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat: update CLI chat session bridge

* fix: extend agent bridge startup timeouts

* docs: update bridge chat session design

* feat: align bridge compression and provider registry

* chore: bump version to 0.5.20

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-05-14 09:03:57 +08:00
committed by GitHub
parent e0fcc0040b
commit eae7195ba8
31 changed files with 3906 additions and 1040 deletions
+56 -34
View File
@@ -62,13 +62,9 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
base_url: 'https://generativelanguage.googleapis.com/v1beta/openai',
models: [
'gemini-3.1-pro-preview',
'gemini-3-pro-preview',
'gemini-3-flash-preview',
'gemini-3.1-flash-lite-preview',
'gemini-2.5-pro',
'gemini-2.5-flash',
'gemini-2.5-flash-lite',
'gemma-4-31b-it',
'gemma-4-26b-it',
],
},
{
@@ -76,7 +72,7 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
value: 'deepseek',
builtin: true,
base_url: 'https://api.deepseek.com',
models: ['deepseek-v4-flash', 'deepseek-v4-pro'],
models: ['deepseek-v4-pro', 'deepseek-v4-flash', 'deepseek-chat', 'deepseek-reasoner'],
},
{
label: 'Z.AI / GLM',
@@ -98,7 +94,6 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
builtin: true,
base_url: 'https://api.kimi.com/coding/v1',
models: [
'kimi-for-coding',
'kimi-k2.6',
'kimi-k2.5',
'kimi-k2-thinking',
@@ -124,7 +119,17 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
value: 'xai',
builtin: true,
base_url: 'https://api.x.ai/v1',
models: ['grok-4.20-reasoning', 'grok-4-1-fast-reasoning'],
models: [
'grok-4.20-0309-reasoning',
'grok-4.20-0309-non-reasoning',
'grok-4.20-multi-agent-0309',
'grok-4-1-fast',
'grok-4-1-fast-non-reasoning',
'grok-4-fast',
'grok-4-fast-non-reasoning',
'grok-4',
'grok-code-fast-1',
],
},
{
label: 'MiniMax',
@@ -146,12 +151,13 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
builtin: true,
base_url: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
models: [
'qwen3.6-plus',
'kimi-k2.5',
'qwen3.5-plus',
'qwen3-coder-plus',
'qwen3-coder-next',
'glm-5',
'glm-4.7',
'kimi-k2.5',
'MiniMax-M2.5',
],
},
@@ -166,13 +172,13 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
// returns HTTP 401 for those keys.
base_url: 'https://coding-intl.dashscope.aliyuncs.com/v1',
models: [
'qwen3.6-plus',
'qwen3.5-plus',
'qwen3-max-2026-01-23',
'qwen3-coder-next',
'qwen3-coder-plus',
'qwen3-coder-next',
'kimi-k2.5',
'glm-5',
'glm-4.7',
'kimi-k2.5',
'MiniMax-M2.5',
],
},
@@ -182,14 +188,15 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
builtin: true,
base_url: 'https://router.huggingface.co/v1',
models: [
'moonshotai/Kimi-K2.5',
'Qwen/Qwen3.5-397B-A17B',
'Qwen/Qwen3.5-35B-A3B',
'deepseek-ai/DeepSeek-V3.2',
'moonshotai/Kimi-K2.5',
'MiniMaxAI/MiniMax-M2.5',
'zai-org/GLM-5',
'XiaomiMiMo/MiMo-V2-Flash',
'moonshotai/Kimi-K2-Thinking',
'moonshotai/Kimi-K2.6',
],
},
{
@@ -214,14 +221,11 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
builtin: true,
base_url: 'https://api.xiaomimimo.com/v1',
models: [
'mimo-v2-omni',
'mimo-v2-pro',
'mimo-v2-tts',
'mimo-v2.5',
'mimo-v2.5-pro',
'mimo-v2.5-tts',
'mimo-v2.5-tts-voiceclone',
'mimo-v2.5-tts-voicedesign',
'mimo-v2.5',
'mimo-v2-pro',
'mimo-v2-omni',
'mimo-v2-flash',
],
},
{
@@ -243,18 +247,21 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
builtin: true,
base_url: 'https://ai-gateway.vercel.sh/v1',
models: [
'anthropic/claude-opus-4.6',
'moonshotai/kimi-k2.6',
'alibaba/qwen3.6-plus',
'zai/glm-5.1',
'minimax/minimax-m2.7',
'anthropic/claude-sonnet-4.6',
'anthropic/claude-sonnet-4.5',
'anthropic/claude-opus-4.7',
'anthropic/claude-opus-4.6',
'anthropic/claude-haiku-4.5',
'openai/gpt-5',
'openai/gpt-4.1',
'openai/gpt-4.1-mini',
'google/gemini-3-pro-preview',
'openai/gpt-5.4',
'openai/gpt-5.4-mini',
'openai/gpt-5.3-codex',
'google/gemini-3.1-pro-preview',
'google/gemini-3-flash',
'google/gemini-2.5-pro',
'google/gemini-2.5-flash',
'deepseek/deepseek-v3.2',
'google/gemini-3.1-flash-lite-preview',
'xai/grok-4.20-reasoning',
],
},
{
@@ -277,10 +284,10 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
builtin: true,
base_url: 'https://opencode.ai/zen/v1',
models: [
'kimi-k2.5',
'gpt-5.4-pro',
'gpt-5.4',
'gpt-5.3-codex',
'gpt-5.3-codex-spark',
'gpt-5.2',
'gpt-5.2-codex',
'gpt-5.1',
@@ -308,7 +315,6 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
'glm-5',
'glm-4.7',
'glm-4.6',
'kimi-k2.5',
'kimi-k2-thinking',
'kimi-k2',
'qwen3-coder',
@@ -320,7 +326,20 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
value: 'opencode-go',
builtin: true,
base_url: 'https://opencode.ai/zen/go/v1',
models: ['glm-5.1', 'glm-5', 'kimi-k2.5', 'mimo-v2-pro', 'mimo-v2-omni', 'minimax-m2.7', 'minimax-m2.5'],
models: [
'kimi-k2.6',
'kimi-k2.5',
'glm-5.1',
'glm-5',
'mimo-v2.5-pro',
'mimo-v2.5',
'mimo-v2-pro',
'mimo-v2-omni',
'minimax-m2.7',
'minimax-m2.5',
'qwen3.6-plus',
'qwen3.5-plus',
],
},
{
label: 'LongCat',
@@ -352,12 +371,13 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
'moonshotai/kimi-k2.6',
'xiaomi/mimo-v2.5-pro',
'xiaomi/mimo-v2.5',
'tencent/hy3-preview',
'anthropic/claude-opus-4.7',
'anthropic/claude-opus-4.6',
'anthropic/claude-sonnet-4.6',
'anthropic/claude-sonnet-4.5',
'anthropic/claude-haiku-4.5',
'openai/gpt-5.4',
'openai/gpt-5.5',
'openai/gpt-5.4-mini',
'openai/gpt-5.3-codex',
'google/gemini-3-pro-preview',
@@ -374,10 +394,12 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
'z-ai/glm-5v-turbo',
'z-ai/glm-5-turbo',
'x-ai/grok-4.20-beta',
'x-ai/grok-4.3',
'nvidia/nemotron-3-super-120b-a12b',
'arcee-ai/trinity-large-thinking',
'openai/gpt-5.4-pro',
'openai/gpt-5.5-pro',
'openai/gpt-5.4-nano',
'deepseek/deepseek-v4-pro',
],
},
{