Releases: trpc-group/trpc-agent-go
Releases · trpc-group/trpc-agent-go
Release v1.8.0
What's Changed
- {agent, telemetry}: add agent name and id attribute for trace and metric by @liuzengh in #1410
- memory: make preload adapt to memory volume by @Rememorio in #1450
- memory/sqlitevec: migrate legacy schema on startup by @WineChord in #1453
- model/openai: infer deepseek variant for text-only chat by @WineChord in #1455
- graphagent: record invoke metrics and default stream to true by @liuzengh in #1464
- chore: add owner review policy check by @Flash-LHR in #1466
- {server, examples, docs}: support A2UI by @Flash-LHR in #1454
- .github: keep co-owners after removing author by @Flash-LHR in #1470
- openclaw: align official skill dependency metadata support by @WineChord in #1459
- .github: narrow review triggers by @Flash-LHR in #1471
- {graph, a2a}: standardize execution error handling by @WineChord in #1442
- {agent, internal, runner}: support run-scoped structured output by @Flash-LHR in #1461
- session/mysql: serialize session state updates by @bytethm in #1449
- {benchmark, docs, ci}: remove benchmark and guard large files by @Flash-LHR in #1468
- {memory/tool, docs}: clarify memory tool guidance by @Rememorio in #1467
- skill: track recent touches for max loaded skills by @WineChord in #1458
- {runner, docs}: clarify ToolSet lifecycle and cleanup by @WineChord in #1478
- .github: revert owner review policy changes by @Flash-LHR in #1480
- {agent, telemetry, openclaw}: add langfuse admin trace links by @WineChord in #1479
- tool/skill: add pluggable skill stager by @WineChord in #1452
- {evaluation, docs}: add llm rubric critic evaluator by @Flash-LHR in #1463
- lsc: support invocation-scoped graph event controls by @Flash-LHR in #1365
- lsc: add static structure export by @Flash-LHR in #1485
- a2a: support custom runner, support build a2a message hook by @hyprh in #1445
- model: fix race condition in chatRequestCallback invocation by @Rememorio in #1481
- session: add user session index by @hyprh in #1457
- memory: refine lexical and vector search ranking by @Rememorio in #1473
- {memory, docs}: support hybrid tool exposure in auto mode by @Rememorio in #1484
- openclaw: add file-backed memory support by @Rememorio in #1486
- memory/extractor: append trailing user message to fix prefill rejection by @Rememorio in #1488
- model/openai: narrow deepseek variant inference by @Rememorio in #1491
- {llmflow, model/ollama}: normalize missing response ids by @Flash-LHR in #1492
- openclaw: stream reasoning as thought events by @WineChord in #1489
- lsc: add execution trace by @Flash-LHR in #1493
- {tool, internal}: support result-aware skip summarization by @Rememorio in #1474
- skill: add refresh support and real skillfind example by @WineChord in #1497
- .github: enhance example module checks and build scripts by @Rememorio in #1499
- feat(agent): add weknora agent platform integration by @chengjoey in #1490
- testing: add langfuse telemetry package by @liuzengh in #1411
- {llmagent, tool/workspaceexec}: add executor workspace exec tools by @bytethm in #1462
- Revert "testing: add langfuse telemetry package" by @sandyskies in #1501
- memory/extractor: enhance automatical extraction logic by @Rememorio in #1500
- model/openai: restrict deepseek variant inference by @Rememorio in #1504
- openclaw: improve shared conversation and cron handling by @WineChord in #1506
- evaluation: add optional run details to evaluation results by @Flash-LHR in #1508
- {plugin, examples, docs}: add guardrail approval capability by @Flash-LHR in #1505
- {evaluation, examples, docs}: support usersimulation scenarios by @Flash-LHR in #1498
- codeexecutor/local: increase interactive test timeouts for CI stability by @bytethm in #1502
- openclaw: normalize wecom cron delivery targets by @WineChord in #1510
- {graph,processor}: fix agent node message replay ownership by @bytethm in #1513
- processor: refactor content request assembly by @bytethm in #1515
- openclaw: resolve actor labels in shared history by @WineChord in #1519
- memory/extractor: refine memory prompt generation by @Rememorio in #1512
- openclaw: infer auto OpenAI variant from base URL by @Rememorio in #1516
- examples: add session persona demo by @Rememorio in #1511
- {plugin, examples, docs}: add guardrail content capabilities by @Flash-LHR in #1520
- openclaw: add native browser provider runtime by @WineChord in #1409
- a2a: skip runner.completion events in non-streaming process by @hyprh in #1451
- {agent, graph, team, docs}: support runtime node surface patches by @Flash-LHR in #1518
- Revert "{graph,processor}: fix agent node message replay ownership (#1513)" by @bytethm in #1524
- memory: support run-scoped user overrides by @Rememorio in #1523
- openclaw: tighten octool command safety policy by @Rememorio in #1525
- agent/n8n: add n8n agent with webhook integration by @voidkey in #1530
- codeexecutor/local: isolate script files in temp subdirectory to prevent concurrent collisions by @sks in #1527
- runner: support safe-boundary user steering by @WineChord in #1517
- coderabbit: require bilingual review output by @Flash-LHR in #1534
- skill: support per-run visibility filtering by @bytethm in #1522
- processor: project structured event metadata by @WineChord in #1537
- graphagent: add terminal-only message filtering by @WineChord in #1535
- knowledge: impl sqlite vec vectorstore by @hyprh in #1496
- session: fix session state parallel exec issue by @hyprh in #1503
- model: fix chat stream complete callback timing and recovering by @Rememorio in #1487
- {model, openclaw}: implement model context window lookup functionality by @Rememorio in #1539
- openclaw: add sidebar admin and live skills management by @bytethm in #1541
- evaluation: allow missing final response for evalset recorder by @Flash-LHR in #1543
- claw: add knowledge tool configuration to claw by @hyprh in #1482
- claw: fix code conflict by @hyprh in #1545
- {graph,runner}: prevent runner completion replay in agent-node history by @bytethm in #1533
- server/a2a: dedupe structured task error payloads by @WineChord in #1542
- a2a : fix runner complection event cause agui issue on a...
Release v1.7.0
What's Changed
- processor: add content parts at convertForeignEvent by @liuzengh in #1067
- {log, event, internal/telemetry}: short-circuit disabled trace/metrics and stop timeout timers by @Flash-LHR in #1258
- model/antropic: set antropic default no prompt cache by @sandyskies in #1261
- examples: go mod tidy by @Flash-LHR in #1262
- feat: support MCP tool _meta field with backward compatibility by @srcrs in #1256
- llmagent: propagate ctx to ToolSet discovery by @WineChord in #1259
- model/gemini: normalize tool schemas for function calling by @bytethm in #1257
- {docs, examples}: clarify graph node hooks by @WineChord in #1265
- Development environment setup by @liuzengh in #1248
- docs: add callback for dynamic request body modification by @liuzengh in #1273
- model: optmize token tailor caculate by @sandyskies in #1264
- openclaw: add openclaw-like gateway and telegram demo by @WineChord in #1240
- runner: trigger summary on tool results by @Rememorio in #1275
- {examples, model/openai}: enhance token tracking with cache metrics by @liuzengh in #1271
- graph: add opt-in DAG execution engine by @WineChord in #1266
- benchmark: add toolsearch multi-turn by @liuzengh in #1225
- memory: add sqlite/sqlitevec backends by @WineChord in #1280
- openclaw: make agent prompts configurable by @WineChord in #1281
- internal/flow/processor: include the original user message after mid-turn summary by @Rememorio in #1283
- llmagent: allow disabling post-tool prompt injection by @WineChord in #1286
- skill_run: stage user file inputs into workspace by @WineChord in #1285
- graph: make state clone safe for json serialization by @Rememorio in #1287
- llmagent: cap loaded skills (TopK) by @WineChord in #1288
- session/memory: add sqlite backends by @WineChord in #1272
- openclaw: add gateway runtime by @WineChord in #1290
- model: add missing tokens to accumulateDelta by @liuzengh in #1291
- tool/skill: support forced artifact persistence by @WineChord in #1292
- openclaw: add ralph loop config by @WineChord in #1295
- benchmark: add memory benchmarks with other agent frameworks by @Rememorio in #1297
- internal/flow/processor: annotate attached files by @WineChord in #1298
- openclaw: support multimodal gateway inputs by @WineChord in #1304
- tool/skill: stage artifact-backed user inputs by @WineChord in #1303
- {agent, internal/flow}: support intra-run sync session summary by @Rememorio in #1294
- artifact/cos: store under artifact prefix by @WineChord in #1299
- server/a2a: allow streaming output as message by @WineChord in #1301
- {skill, agui}: attach artifact to state delta, define a custom agui artifact event by @liuzengh in #1305
- benchmark: improve benchmark and update result by @Rememorio in #1309
- langfuse: add observation truncation support by @liuzengh in #1307
- openclaw: enable parallel tool execution by @WineChord in #1308
- openclaw: add Playwright MCP browser use by @WineChord in #1310
- {agent, runner, internal/flow/processor}: support per-run FilterKey scoping by @WineChord in #1311
- {evaluation, docs}: add judge runner by @Flash-LHR in #1296
- knowledge: support rff fusion of pgvector by @hyprh in #1312
- openclaw: align skills config/env with upstream OpenClaw by @WineChord in #1314
- {.github, memory, examples}: add CGO-disabled build check by @Flash-LHR in #1317
- {evaluation, docs}: add ExpectedRunner for dynamic expected outputs by @Flash-LHR in #1300
- skill: require skill_load before skill_run by @WineChord in #1315
- openclaw: make telegram a channel plugin by @WineChord in #1319
- {evaluation, docs}: support per-call options for evaluation by @Flash-LHR in #1276
- Command injection vulnerability by @liuzengh in #1324
- openclaw: add in-process gateway client by @WineChord in #1323
- session/summary: exclude sub-agent events from primary threshold checks by @Rememorio in #1329
- doc: split the session document into multiple files by @hyprh in #1246
- graph: run after-node callbacks on node errors by @WineChord in #1321
- docs: fix kb.Search API, WithTools call, and sync en/zh vectorstore docs by @hyprh in #1331
- docs: add call count limits docs for agents by @Rememorio in #1326
- docs: fix wrong import path for storage.RegisterRedisInstance by @hyprh in #1332
- artifact/cos: use Content-Disposition header to set filename by @liuzengh in #1336
- graph: preserve result on node error by @WineChord in #1334
- {server/agui, docs, examples}: support reasoning events by @Flash-LHR in #1268
- skill: scope loaded state by agent by @WineChord in #1327
- skill: add skill_run preflight+retry guidance and failure-aware OutputSchema by @bytethm in #1333
- {agent, graph}: support node-to-node streaming by @WineChord in #1322
- graph: propagate fatal error codes to events by @WineChord in #1338
- a2a: Define the A2A protocol interaction standard by @hyprh in #1277
- langfuse: using max bytes to leaf value bytes Truncation by @liuzengh in #1313
- codeexecutor: support @ in artifact refs by @WineChord in #1335
- skill: stage inputs/ under work/inputs by @WineChord in #1337
- skill: omit empty output_files on failed runs by @WineChord in #1341
- session: fix update time issue on get session by @hyprh in #1345
- session/summary: handle multiple tool results in choices by @Rememorio in #1342
- runner: propagate fatal error state to completion event by @WineChord in #1348
- checkpoint/redis: atomic Put/PutFull via Lua and hash-tags by @bytethm in #1279
- {docs, evaluation, event, examples}: add evalset recorder plugin by @Flash-LHR in #1343
- openclaw: make model usage codexbar command static by @Rememorio in #1352
- openclaw: support telegram media inputs by @WineChord in #1325
- internal/flow/processor: compact same-turn history after summary by @Rememorio in #1351
- Memory: enhance memory logic by @sandyskies in #1289
- Add all maintainers as CODEOWNERS for /internal/ by @Copilot in #1355
- Add @sandyskies as first code owner to all directories in CODEOWNERS by @Copilot in #1356
- fix: use cmd.Process.Wait() to avoid pipe race in octool exec by @Copilot ...
openclaw-v0.0.2
Full Changelog: openclaw-v0.0.1...openclaw-v0.0.2
openclaw-v0.0.1
What's Changed
- {log, event, internal/telemetry}: short-circuit disabled trace/metrics and stop timeout timers by @Flash-LHR in #1258
- model/antropic: set antropic default no prompt cache by @sandyskies in #1261
- examples: go mod tidy by @Flash-LHR in #1262
- feat: support MCP tool _meta field with backward compatibility by @srcrs in #1256
- llmagent: propagate ctx to ToolSet discovery by @WineChord in #1259
- model/gemini: normalize tool schemas for function calling by @bytethm in #1257
- {docs, examples}: clarify graph node hooks by @WineChord in #1265
- Development environment setup by @liuzengh in #1248
- docs: add callback for dynamic request body modification by @liuzengh in #1273
- model: optmize token tailor caculate by @sandyskies in #1264
- openclaw: add openclaw-like gateway and telegram demo by @WineChord in #1240
- runner: trigger summary on tool results by @Rememorio in #1275
- {examples, model/openai}: enhance token tracking with cache metrics by @liuzengh in #1271
- graph: add opt-in DAG execution engine by @WineChord in #1266
- benchmark: add toolsearch multi-turn by @liuzengh in #1225
- memory: add sqlite/sqlitevec backends by @WineChord in #1280
- openclaw: make agent prompts configurable by @WineChord in #1281
- internal/flow/processor: include the original user message after mid-turn summary by @Rememorio in #1283
- llmagent: allow disabling post-tool prompt injection by @WineChord in #1286
- skill_run: stage user file inputs into workspace by @WineChord in #1285
- graph: make state clone safe for json serialization by @Rememorio in #1287
- llmagent: cap loaded skills (TopK) by @WineChord in #1288
- session/memory: add sqlite backends by @WineChord in #1272
- openclaw: add gateway runtime by @WineChord in #1290
- model: add missing tokens to accumulateDelta by @liuzengh in #1291
- tool/skill: support forced artifact persistence by @WineChord in #1292
- openclaw: add ralph loop config by @WineChord in #1295
- benchmark: add memory benchmarks with other agent frameworks by @Rememorio in #1297
- internal/flow/processor: annotate attached files by @WineChord in #1298
- openclaw: support multimodal gateway inputs by @WineChord in #1304
- tool/skill: stage artifact-backed user inputs by @WineChord in #1303
- {agent, internal/flow}: support intra-run sync session summary by @Rememorio in #1294
- artifact/cos: store under artifact prefix by @WineChord in #1299
- server/a2a: allow streaming output as message by @WineChord in #1301
- {skill, agui}: attach artifact to state delta, define a custom agui artifact event by @liuzengh in #1305
- benchmark: improve benchmark and update result by @Rememorio in #1309
- langfuse: add observation truncation support by @liuzengh in #1307
- openclaw: enable parallel tool execution by @WineChord in #1308
- openclaw: add Playwright MCP browser use by @WineChord in #1310
- {agent, runner, internal/flow/processor}: support per-run FilterKey scoping by @WineChord in #1311
- {evaluation, docs}: add judge runner by @Flash-LHR in #1296
- knowledge: support rff fusion of pgvector by @hyprh in #1312
- openclaw: align skills config/env with upstream OpenClaw by @WineChord in #1314
- {.github, memory, examples}: add CGO-disabled build check by @Flash-LHR in #1317
- {evaluation, docs}: add ExpectedRunner for dynamic expected outputs by @Flash-LHR in #1300
- skill: require skill_load before skill_run by @WineChord in #1315
- openclaw: make telegram a channel plugin by @WineChord in #1319
- {evaluation, docs}: support per-call options for evaluation by @Flash-LHR in #1276
- Command injection vulnerability by @liuzengh in #1324
- openclaw: add in-process gateway client by @WineChord in #1323
- session/summary: exclude sub-agent events from primary threshold checks by @Rememorio in #1329
- doc: split the session document into multiple files by @hyprh in #1246
- graph: run after-node callbacks on node errors by @WineChord in #1321
- docs: fix kb.Search API, WithTools call, and sync en/zh vectorstore docs by @hyprh in #1331
- docs: add call count limits docs for agents by @Rememorio in #1326
- docs: fix wrong import path for storage.RegisterRedisInstance by @hyprh in #1332
- artifact/cos: use Content-Disposition header to set filename by @liuzengh in #1336
- graph: preserve result on node error by @WineChord in #1334
- {server/agui, docs, examples}: support reasoning events by @Flash-LHR in #1268
- skill: scope loaded state by agent by @WineChord in #1327
- skill: add skill_run preflight+retry guidance and failure-aware OutputSchema by @bytethm in #1333
- {agent, graph}: support node-to-node streaming by @WineChord in #1322
- graph: propagate fatal error codes to events by @WineChord in #1338
- a2a: Define the A2A protocol interaction standard by @hyprh in #1277
- langfuse: using max bytes to leaf value bytes Truncation by @liuzengh in #1313
- codeexecutor: support @ in artifact refs by @WineChord in #1335
- skill: stage inputs/ under work/inputs by @WineChord in #1337
- skill: omit empty output_files on failed runs by @WineChord in #1341
- session: fix update time issue on get session by @hyprh in #1345
- session/summary: handle multiple tool results in choices by @Rememorio in #1342
- runner: propagate fatal error state to completion event by @WineChord in #1348
- checkpoint/redis: atomic Put/PutFull via Lua and hash-tags by @bytethm in #1279
- {docs, evaluation, event, examples}: add evalset recorder plugin by @Flash-LHR in #1343
- openclaw: make model usage codexbar command static by @Rememorio in #1352
- openclaw: support telegram media inputs by @WineChord in #1325
- internal/flow/processor: compact same-turn history after summary by @Rememorio in #1351
- Memory: enhance memory logic by @sandyskies in #1289
- Add all maintainers as CODEOWNERS for /internal/ by @Copilot in #1355
- Add @sandyskies as first code owner to all directories in CODEOWNERS by @Copilot in #1356
- fix: use cmd.Process.Wait() to avoid pipe race in octool exec by @Copilot in #1354
- {model, internal, docs}: support iterator-based model by @Flash-LHR in #1249
- {agent, internal/fl...
openclaw-v0.0.3
Full Changelog: openclaw-v0.0.2...openclaw-v0.0.3
Release v1.6.0
What's Changed
- model: add context window for OpenAI GPT-5.2 by @Rememorio in #1177
- {server/agui, examples}: bump agui go sdk version by @Flash-LHR in #1171
- codeexecutor: omit empty file content by @WineChord in #1178
- all: update TraceChat to use params struct by @liuzengh in #1182
- skill: improve skill_run IO demos and artifact pinning by @WineChord in #1180
- server/agui: support stream tool response event by @Flash-LHR in #1179
- docs: refactor evaluation docs by @Flash-LHR in #1154
- .github: add go mod tidy check by @Flash-LHR in #1184
- knowledge/chunking: ensure unique IDs for recursive markdown chunks by @DemonZack in #1173
- session/summary: add task_type for telemetry tracking by @liuzengh in #1175
- fix(gemini): propagate streaming errors and handle nil output schemas for tool calls by @sks in #1189
- docs: fix base path usage by @Flash-LHR in #1191
- internal/flow: filter empty assistant messages by @bytethm in #1186
- runner: support request-scoped agent factories by @WineChord in #1169
- session/summary: add model callbacks to session summarizer by @Rememorio in #1190
- examples: add skill-driven dynamic schema demo by @bytethm in #1192
- {model, session/summary}: add configurable approx runes per token option by @Rememorio in #1174
- evaluation: attach ctxmsg container to evaluation context by @Flash-LHR in #1198
- {evaluation, docs, examples}: support actualConversation in trace mode by @Flash-LHR in #1197
- langfuse: add workflow span transformation by @liuzengh in #1194
- {evaluation, docs}: support parallel evaluation across cases by @Flash-LHR in #1199
- server/agui: support multimodal user messages by @Flash-LHR in #1196
- {agent, evaluation}: ensure invocation context for evaluation by @Flash-LHR in #1200
- memory/extractor: add model callbacks to memory extractor by @Rememorio in #1195
- session/mysql: use prefix indexes for session summaries unique constraint by @Rememorio in #1201
- {evaluation, model/provider, docs}: support judge model variant by @Flash-LHR in #1202
- {evaluation, benchmark, docs, examples}: add rouge criterion for final responses by @Flash-LHR in #1203
- {docs, examples}: add skill evaluation example by @Flash-LHR in #1204
- model/openai: normalize top-level tool schema properties by @bytethm in #1209
- {evaluation, docs}: add onlyTree support to JSONCriterion by @Flash-LHR in #1208
- telemery: track prompt cache tokens in metrics and traces by @liuzengh in #1206
- lsc: support ContentParts-only messages for multimodal by @Flash-LHR in #1207
- {server/agui, docs}: add cancel-on-context-done option by @Flash-LHR in #1218
- tool: support legacy description tag on input schema to align with output schema by @liuzengh in #1217
- skills: optionally materialize loaded skill content into tool results by @WineChord in #1214
- {docs, examples}: use onlyTree for skill evaluation example by @Flash-LHR in #1212
- {graph, internal}: sanitize invalid tool calls to user message by @Flash-LHR in #1213
- a2agent: include message role to A2A event response by @liuzengh in #1113
- telemetry/langfuse: add usage_details KeyGenAIUsageInputTokensCached attribute by @liuzengh in #1215
- tool/skill: improve skill_run restriction guidance by @bytethm in #1216
- knowledge: fix chunking issue on empty title of markdown by @hyprh in #1221
- fix: Anthropic API integration - model name prefix and required max_tokens parameter by @sks in #1219
- {evaluation, docs, examples}: add MySQL-backed managers by @Flash-LHR in #1187
- {agent, docs, examples}: add Claude Code CLI agent by @Flash-LHR in #1193
- skills: avoid duplicate loaded markers by @WineChord in #1222
- docs: enrich SkillLoadMode guidance by @WineChord in #1223
- langfuse: move tools definitions to input by @liuzengh in #1224
- doc: restructure reranker documentation for better content flow by @hyprh in #1226
- fix: skip orphaned tool results after MaxHistoryRuns truncation by @sks in #1228
- meory/redis: add Redis key prefix support and fix hash tag by @Rememorio in #1231
- fix: support for alternative reasoning data e.g. Ollama by @nsainaney in #1233
- memory: add enabled tools configuration for memory extractor by @Rememorio in #1230
- fix: more robust codeblock unmarshalling by @nsainaney in #1234
- fix(model/ollama): upgrade github.com/ollama/ollama to v0.16.3 to remove CVEs by @sks in #1235
- knowledge: add knowledge evaluation by ragas, compare with langchain, agno by @hyprh in #1059
- benchmark/memory: add memory evaluation benchmark by @Rememorio in #1176
- fix(gemini): prevent duplicate output by separating Delta/Message on streaming responses by @sks in #1239
- docs: use English within Chinese-language directories by @Flash-LHR in #1245
- fix:replace spaolacci/murmur3 with hash/fnv to fix checkptr crash on Go 1.22+ by @sks in #1227
- team/swarm: add runtime member update APIs by @WineChord in #1241
- example: suppress false positive B603 warning for subprocess.Popen by @hyprh in #1247
- ci: add cursoragent to CLA allowlist by @liuzengh in #1251
- session: fix list session order issue for redis session by @hyprh in #1250
- {graph, internal/processor}: propagate tool span context to preserve nesting by @liuzengh in #1253
- internal/flow/llmflow: recover panics in Flow.Run by @WineChord in #1242
- skills: skip fallback when session summary is present by @WineChord in #1243
- {docs, examples}: add Claude Code evaluation example by @Flash-LHR in #1244
New Contributors
- @DemonZack made their first contribution in #1173
- @sks made their first contribution in #1189
- @nsainaney made their first contribution in #1233
Full Changelog: v1.5.0...v1.6.0
Release v1.6.0
processor: add content parts at convertForeignEvent (#1067) close #1053
Release memory pgvector v1.6.0
processor: add content parts at convertForeignEvent (#1067) close #1053
Release server/agui/v1.5.1
lsc: support ContentParts-only messages for multimodal (#1207) This change makes multimodal user input carried in Message.ContentParts flow through the runner/session pipeline by treating ContentParts as message payload when selecting and persisting messages, updates response validity checks accordingly, improves AG-UI binary.data handling to accept base64 data URLs, and documents the supported multimodal request formats. ## Summary by Sourcery 在 runner、流程处理和响应校验各环节中支持以 ContentParts 作为主要载荷的多模态用户消息,并补充 AG-UI 多模态请求格式的文档。 增强内容: - 在 runner 和流程内容处理器中,将带有 ContentParts 的消息视为包含载荷,用于选择、追加和持久化用户消息。 - 更新响应有效性检查,使其同时将 Message 和 Delta 的内容部分视为有效载荷。 - 引入共享的 HasPayload 辅助方法,用于判断消息是否包含非空的 content 或 content parts,并在整个处理管线上复用。 - 增强 AG-UI 的多模态处理能力,使其在处理 base64 数据时,除了支持纯 base64 字符串外,也能解码以 base64 data URL 形式提供的 binary.data。 文档: - 在 AG-UI 英文和中文指南中记录多模态用户消息格式,包括图像 URL 和 base64 data URL 的示例,并明确说明用户内容可以是字符串或多模态数组。 测试: - 添加集成测试和处理测试,用于覆盖会话与内容处理器中多模态用户消息的流转;扩展响应有效性测试以覆盖内容部分;并添加多模态解码测试,包括对 base64 data URL 的支持。 <details> <summary>Original summary in English</summary> ## Summary by Sourcery Support multimodal user messages that use ContentParts as the primary payload across runner, flow processing, and response validation, and document the AG-UI multimodal request formats. Enhancements: - Treat messages with ContentParts as having payload when selecting, appending, and persisting user messages in the runner and flow content processor. - Update response validity checks to consider both Message and Delta content parts as valid payload. - Introduce a shared HasPayload helper for determining whether a message has non-empty content or content parts and use it throughout the pipeline. - Enhance AG-UI multimodal handling to decode binary.data provided as base64 data URLs in addition to plain base64 strings. Documentation: - Document multimodal user message formats in the AG-UI English and Chinese guides, including examples for image URLs and base64 data URLs, and clarify that user content may be a string or multimodal array. Tests: - Add integration and processing tests to cover multimodal user messages flowing through sessions and content processors, extend response validity tests to cover content parts, and add multimodal decoding tests including base64 data URLs. </details>
Release v1.5.0
What's Changed
- graph: nested subgraph HITL interrupt resume by @WineChord in #1027
- evaluation: support any JSON values for tool arguments/result by @Flash-LHR in #1055
- tool/codeexec: add tool for LLM to execute code via toolcall by @bytethm in #1046
- evaluation: support trace evaluation mode by @Flash-LHR in #1062
- fix(trace): simplify JSON marshaling for invocation messages by @liuzengh in #1064
- model/openai: stabilize tool call indices for streaming by @Flash-LHR in #1075
- {graph, tool}: preserve tool result on interrupt by @Flash-LHR in #1078
- llmflow: return context from callLLM to help passing context-info from before to after model callback by @liuzengh in #1057
- docs: clarify agent-node data passing by @WineChord in #1060
- {server/agui, agent, docs, examples}: support external tool for AG-UI by @Flash-LHR in #1066
- graph: add call options for generation config by @WineChord in #1065
- {graph, docs}: cap executor task concurrency by @WineChord in #1058
- graph: add static interrupts before/after nodes by @WineChord in #1052
- docs: expand CycleAgent escalation function by @WineChord in #1056
- evaluation: keep report generation when cases fail by @Flash-LHR in #1071
- {docs, session}: update summary job timeout to 60 seconds in session configurations by @Rememorio in #1068
- {.github, graph}: remove only-new-issues for golangci and refactor func by @Rememorio in #1061
- docs: explain graph node custom event payload by @WineChord in #1076
- model/gemini: keep tool calls when part text is empty by @Flash-LHR in #1089
- event: improve context error logging in event emission by @Rememorio in #1086
- examples: implement ConsecutiveUserMessageHook for handling consecutive user messages by @Rememorio in #1085
- {agent, graph, internal}: add tool call arguments JSON repair option by @Flash-LHR in #1082
- graph: fix tool callback not effective in AddToolsNode by @Rememorio in #1077
- graph: add time travel edit-state API by @WineChord in #1063
- tool/skill: harden skill_run outputs and cwd by @WineChord in #1073
- knowledge: add openai embedder retry option, fix issue on DocumentID parallel generation by @hyprh in #1091
- Planner: enhance react planner process logic by @sandyskies in #1079
- benchamrk: add gaia benchmark by @sandyskies in #1081
- session: refactor Close methods to ensure proper resource cleanup by @Rememorio in #1094
- internal/jsonrepair: log tool call arguments JSON repair by @Flash-LHR in #1093
- {server/agui, docs}: add outermost-only graph interrupt activity option by @Flash-LHR in #1095
- memory: impl pgvector memory service by @Rememorio in #1051
- evaluation: add deterministic final response evaluator by @Flash-LHR in #1097
- examples: use GetSessionHook to deal with event persistence instead of AppendEventHook by @Rememorio in #1092
- graph: remove createTask debug logging by @WineChord in #1098
- agent/graphagent: return error on nil invocation by @WineChord in #1099
- docs: align subgraph filterKey examples by @WineChord in #1101
- docs: clarify BSP supersteps and streaming parsing by @WineChord in #1104
- checkpoint/redis: downgrade go-redis to v9.16.0 by @bytethm in #1107
- {graph, internal, tool}: graph agent interrupt/resume from tool call by @gy40308 in #1090
- knowledge: support custom file type of source by @hyprh in #1102
- agent: enhance A2A and Dify agents to support per-run streaming overrides by @liuzengh in #1111
- {.github, examples}: add internal package validation script and refactor skill example by @Rememorio in #1108
- graph: fix channel step marks by @WineChord in #1103
- session/summarizer: enhance summarizer tool call and result formatting options by @Rememorio in #1114
- graph: add WithExecutorOptions to GraphAgent for advanced executor configuration by @bytethm in #1110
- Plugin: add toolsearch Plugin for dynamic tool selection by @liuzengh in #1001
- graph: fix cache key selector handling by @WineChord in #1117
- session: enhance error handling in summarization by @Rememorio in #1119
- session: support remove recent conversation for redis session by @hyprh in #1017
- skill: prefer progressive disclosure by @WineChord in #1120
- agent: update error type handling in A2A and LLM agents by @liuzengh in #1124
- telemetry/errs: add ToResponseError and ToErrorType by @liuzengh in #1129
- processor: optimize system prompt ordering for caching by @WineChord in #1116
- tool/skill: avoid host workspace mutations by @WineChord in #1126
- benchmark: anthropic skills benchmark by @WineChord in #1115
- graph: external interrupt (pause button) by @WineChord in #1127
- model/openai: enable cache optimization by default by @WineChord in #1131
- session: support custom redis key prefix by @hyprh in #1121
- session/redis: fix TrimConversations key helpers by @Flash-LHR in #1133
- tool/codeexec: update code execution input and output structures by @liuzengh in #1083
- graph: reject unknown conditional routing targets by @WineChord in #1122
- {evaluation, docs, examples}: support evaluation callbacks by @Flash-LHR in #1130
- planner/react: prevent premature termination on intent-only responses by @WineChord in #1100
- tool/skill: require runner for workspace cleanup by @WineChord in #1138
- graph: fail resume on checkpoint load errors by @WineChord in #1123
- docs/examples: add A2A multi-path hosting example by @WineChord in #1140
- memory: return defensive copy of precomputed tools by @Rememorio in #1144
- evaluation: add StartTime to after callbacks by @Flash-LHR in #1143
- model: implement message validation and fixing logic by @Rememorio in #1137
- benchmark: add session summary evaluation by @Rememorio in #1125
- docs/examples: document how to cancel a run by @WineChord in #1147
- team/swarm: add cross-request transfer option by @bytethm in #1145
- tool/skill: support metadata-only output_files by @WineChord in #1141
- skill: add SkillLoadMode for automatic offloading by @WineChord in #1136
- knowledge: add chunking strategy example and doc by @hyprh in #1135
- graph: support per-node user input key by @WineChord in #1128
- {server/agui, docs, examples}: add message snapshot continuation by @Flash-LHR in #11...