feat(officialmcp): reconnecting session via ClientSession anti-corruption interface (#889)
- feat(components): upgrade officialmcp with tool name mapping, session management, and result policies
Add ToolNameMapper, MetadataMode, ListToolsMode, ResultPolicy, DescriptionPolicy, and ToolCallResultHandler/V2 to officialmcp Config. Introduce session sub-package for streamable HTTP and stdio transport lifecycle management.
Change-Id: Ie23aee61a185672106680f73998a4093d7bfb40f
- fix(adk): respect explicit execute mode precedence
Change-Id: I46254284516e09606572fb5da57f108446270db7
- feat(adk): route auto/background+wait streaming through rich path
ExecuteStreaming now bridges to executeRich via a single-frame stream when Mode=auto or Mode=background with WaitMS>0, ensuring symmetric exit-code propagation and timer-based backgrounding semantics with the non-streaming Execute path. Adds attack regression tests covering default wait, non-zero exit, context cancellation, timer backgrounding, background+wait completion, and early receiver close.
Change-Id: Idbca60aae9827e4139f618bd54d779202a67a7ea
- feat(officialmcp): reconnecting session via ClientSession anti-corruption interface
Bump go-sdk to v1.6.1 and make Config.Cli a ClientSession interface (ListTools/CallTool/Ping/Close) that *mcp.ClientSession satisfies directly. Classify connection-level failures (ErrConnectionClosed/ErrSessionMissing) as ErrorKindConnection, distinct from protocol-level rejections, so bad-args tool calls cannot cause reconnect churn. The session package’s Session implements the interface and transparently rebuilds the underlying go-sdk session on connection-level errors (single reconnect under concurrent failures).
Co-Authored-By: Claude Opus 4 noreply@anthropic.com
feat(mcp): update eino
feat(mcp): add http.Client
fix(officialmcp): correct reconnect close ordering and truncation meta
- session: dial before discarding the stale session so a failed reconnect no longer leaves a closed session installed as current (which made every retry re-close the same session).
- mcp: report the actual payload rune count in _meta.returnedChars instead of the maxChars budget, which overstated the returned size.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
- revert(adk): restore local backend to main
Change-Id: I0a3de8e3dbabf45cc963d058592500afd4105f0f
- fix(officialmcp): classify reconnect failure as connection error
Address PR review feedback:
- reconnect() now wraps a failed dial as officialmcp.Error{Kind: ErrorKindConnection} (StartupError preserved as cause), so an unreachable server is recognized by IsConnectionError instead of being misclassified as a call/list protocol error by the default branch.
- Clarify the Session/reconnect docs: only a successful reconnect is shared across a burst of concurrent connection errors; a failed reconnect leaves the stale session installed and each waiting caller redials until one succeeds.
Add tests for the reconnect-failure classification and the nil-client guard.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Co-authored-by: shentong.martin shentong.martin@bytedance.com Co-authored-by: Claude Opus 4 noreply@anthropic.com
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
Eino Extension
English | 中文
Overview
The EinoExt project hosts various extensions for the Eino framework. Eino framework is a powerful and flexible framework for building LLM applications. The extensions include:
For more details about component types, please refer to the Eino component documentation.
For more details about component implementations, please refer to the Eino ecosystem documentation.
Security
If you discover a potential security issue in this project, or think you may have discovered a security issue, we ask that you notify Bytedance Security via our security center or vulnerability reporting email.
Please do not create a public GitHub issue.
License
This project is licensed under the Apache-2.0 License.