Commit Graph
525 Commits
Author SHA1 Message Date
Xubin Ren 8eb2742c9b test(ci): stabilize cross-platform agent checks 2026-08-17 20:56:10 +08:00
Xubin Ren 79d51be71f feat(tui): integrate with Herdr host 2026-08-17 20:56:10 +08:00
Xubin Ren 783d381710 feat(tui): replace footer hints with model telemetry 2026-08-17 20:56:10 +08:00
Xubin Ren 4391bbf4da feat(tui): add agent interaction workflows 2026-08-17 20:56:10 +08:00
Xubin Ren 731b8fc2ed fix(models): synchronize canonical runtime selection 2026-08-16 11:50:56 +08:00
Xubin Ren 3dc38f6396 refactor(models): unify preset names 2026-08-16 11:50:56 +08:00
Xubin Ren 5e84055dbb fix(plugins): verify content at skill read boundary 2026-08-16 00:01:54 +08:00
yu-xin-c e99b1a11aa fix(plugins): revalidate cached skill roots 2026-08-16 00:01:54 +08:00
Xubin Ren 2f19068eb0 fix(session): clear file state at deletion boundary 2026-08-15 23:49:20 +08:00
yu-xin-c 42afebb0cb fix(agent): bound per-session file state 2026-08-15 23:49:20 +08:00
dajiaohuang 057c5e849b fix(session): restore state when file-cap archive fails 2026-08-14 11:22:22 +08:00
chengyongru e226242dfc fix(session): serialize canonical file access (#5383) 2026-08-14 10:32:17 +08:00
arcdrake22andXubin Ren 0c684c5a99 fix(gemini): preserve imported tool history across model switches
Co-authored-by: Xubin Ren <52506698+Re-bin@users.noreply.github.com>
2026-08-13 03:07:37 +09:00
chengyongru 19997d20bb refactor: move MCP lifecycle out of AgentLoop (#5343) 2026-08-12 17:51:04 +08:00
Xubin Ren 72d3ce6b23 fix(skills): make PNG weather example Windows-safe 2026-08-12 02:48:03 +09:00
Kail Tian b14ac4c401 fix(skills): make weather workflow Windows-safe 2026-08-12 02:48:03 +09:00
chengyongru d45c893f68 fix(webui): surface MCP runtime connection failures (#5331) 2026-08-11 23:52:02 +08:00
Xubin Ren 247c474e64 perf(plugins): cache verified skill roots 2026-08-11 20:16:24 +09:00
Xubin Ren a2979c3a4b fix(plugins): harden activation boundaries 2026-08-11 20:16:24 +09:00
Xubin Ren d5e0df6963 feat(plugins): integrate portable Agent Plugins 2026-08-11 20:16:24 +09:00
chengyongru 8e77f3f8a4 feat(mcp): add browser OAuth for remote servers (#5316) 2026-08-10 23:44:37 +08:00
chengyongru 85a452e5c7 refactor(agent): replace reflective runtime state access (#5319) 2026-08-10 16:44:26 +08:00
chengyongru 55ecda275d test: strengthen user-path coverage and CI gates (#5308) 2026-08-09 21:37:06 +08:00
Xubin Ren c410ea444c fix(agent): stop session-owned exec processes 2026-08-08 23:20:59 +08:00
chengyongru a5bc3bfbb9 fix(webui): complete temporary chat mode 2026-08-08 23:20:59 +08:00
Xubin Ren c9a6145878 feat(webui): add temporary chat mode 2026-08-08 23:20:59 +08:00
chengyongru 113e8d67ad refactor: remove verified dead code 2026-08-08 21:10:34 +08:00
chengyongru cdb2a474f9 refactor(webui): remove legacy session messages route 2026-08-07 15:16:57 +08:00
chengyongru ff6deda178 fix: modernize dependency recovery guidance (#5282) 2026-08-07 13:58:13 +08:00
chengyongru 2c7943a133 fix(memory): archive short idle sessions for Dream 2026-08-07 11:45:49 +08:00
chengyongru 8dfce4c162 fix(session): require user anchor for delivery retention 2026-08-07 10:53:55 +08:00
ziuus 60282d1588 fix(session): preserve proactive channel delivery during session retention trimming 2026-08-07 10:53:55 +08:00
chengyongru 6e9ae5bd05 refactor(session): remove request-scoped access grants (#5238) 2026-08-05 10:18:46 +08:00
chengyongru f45436b61d fix(commands): reject invalid slash commands 2026-08-04 17:11:44 +08:00
Xubin Ren d99f589a59 refactor(session): clarify reference boundaries 2026-08-04 12:14:51 +08:00
Xubin Ren d8aeb0eb2c refactor(session): simplify cross-session flow 2026-08-04 12:14:51 +08:00
Xubin Ren 62d34b5eb7 refactor(session): tighten cross-session access 2026-08-04 12:14:51 +08:00
Xubin Ren f15ea84dd1 fix(session): enforce trusted read scope 2026-08-04 12:14:51 +08:00
Xubin Ren 4c07c40b34 feat(session): link agent references 2026-08-04 12:14:51 +08:00
Xubin Ren 5dd3dc5450 fix(session): harden cross-session references 2026-08-04 12:14:51 +08:00
Xubin Ren 9b25da7b92 feat(session): add cross-session references 2026-08-04 12:14:51 +08:00
Xubin Ren 39e1533c3b fix(gateway): make resource teardown cancellation-safe 2026-08-03 16:00:39 +08:00
santhreal 4c387f6633 fix(memory): handle non-string timestamp and missing role in raw_archive 2026-08-01 20:14:28 +08:00
KDB 39bb20c76b fix(session): tolerate malformed persisted session summary
AutoCompact.prepare_session runs on the turn hot path
(AgentLoop._compact_session) and read the persisted _last_summary metadata
with an unguarded meta['text'] and datetime.fromisoformat(meta['last_active']).
A _last_summary dict that was hand-edited or written by another version
(missing text/last_active, or a non-ISO last_active) raised KeyError/ValueError
out of the turn.

Sibling readers already tolerate the same data: estimate_session_prompt_tokens
uses .get('text') and _archive parses inside try/except. Mirror that tolerance:
skip when text is unusable, and fall back to the session's own updated_at (the
value the writer persists) when last_active is missing or unparseable, so the
archived summary is preserved instead of crashing the turn.
2026-08-01 19:29:16 +08:00
chengyongru 6a1a45d07a feat: preserve Responses reasoning state and compact context (#5172) 2026-07-30 22:39:43 +08:00
Solaris-star 511c764f45 fix(agent): route finish_reason='length' with blank content to length recovery
When an LLM response arrives with finish_reason='length' and has_tool_calls
but blank text content (e.g. the model spent its whole output budget on a
tool call whose closing tag was truncated), the runner dropped the tool
calls and then misrouted the blank response into the empty-response retry
branch. Retrying the same prompt cannot recover from output-budget
exhaustion, so every retry hit the same length ceiling and the turn ended
in the generic apology.

The length-recovery branch was gated on 'finish_reason == length and not
is_blank_text(clean)', so a blank-but-truncated turn could never reach it.

- The empty-response retry branch now excludes finish_reason == 'length'
  (in addition to 'error').
- The length-recovery branch no longer requires non-blank content, so a
  blank-but-truncated turn enters recovery and appends
  build_length_recovery_message (which handles a blank tail safely).

Adds a regression test asserting the length-recovery path is taken; it
fails on the unfixed code and passes with the fix.

Fixes #5133
2026-07-30 19:55:19 +08:00
Xubin Ren 0eac82984c test(mcp): stabilize idle reconnect timing 2026-07-30 19:44:09 +08:00
yu-xin-c 9ec4420104 fix(agent): release idle session locks 2026-07-30 19:17:37 +08:00
KDB e633f867e8 fix(session): tolerate invalid idle-compaction timestamps 2026-07-30 18:52:16 +08:00
chengyongru e2563e2e74 refactor(cli): split commands into focused modules (#5175) 2026-07-30 15:01:35 +08:00