Commit Graph
1862 Commits
Author SHA1 Message Date
chengyongru 04974b7607 fix(webui): preserve causal message order (NAN-29) (#5503) 2026-08-24 15:08:22 +08:00
chengyongru 09d3bd76c9 fix(exec): disable command guard in full access 2026-08-24 11:44:00 +08:00
chengyongru b1cadf53c5 fix(codex): reuse TLS contexts across requests 2026-08-24 11:25:02 +08:00
Xubin Ren d50a2fab32 fix(tui): avoid saving empty sessions 2026-08-24 10:40:16 +08:00
Xubin Ren 2cdfba38b2 fix(runtime): preserve interrupted turns on gateway exit 2026-08-24 00:58:04 +08:00
Xubin Ren c7e2a474a0 fix(runtime): normalize recovery session routing 2026-08-24 00:58:04 +08:00
Xubin Ren 12029f8812 feat(runtime): add user-controlled turn recovery 2026-08-24 00:58:04 +08:00
chengyongru ffa58aa5ef fix(webui): keep answer text outside reasoning shell 2026-08-23 21:29:42 +08:00
Xubin Ren 1e9d46fb36 fix(cli): name roles through legacy launchers 2026-08-23 21:13:14 +08:00
Xubin Ren cfc872fb52 fix(cli): harden process identity portability 2026-08-23 21:13:14 +08:00
Xubin Ren cfc1fae8b5 feat(cli): expose nanobot process identities 2026-08-23 21:13:14 +08:00
Xubin Ren 48eea29313 feat(webui): unify turn observability 2026-08-22 20:51:24 +08:00
chengyongru dbc1801d3c fix(cron): report reconciled startup job count 2026-08-22 02:38:47 +08:00
aiguozhi123456 20488a585d fix(cron): review follow-ups for system job retirement
- advance the disabled-dream cursor before touching the cron store so
  the #4242 fix still applies when jobs.json is corrupt
- pin the gateway wiring: the disabled-path test now asserts both
  dream and heartbeat are retired, not just unregistered
- cover remove_system_job on a fresh install with no store file
2026-08-22 02:38:47 +08:00
aiguozhi123456 e5718d4de6 fix(cron): retire persisted heartbeat/dream jobs when disabled
Disabling gateway.heartbeat (or agents.defaults.dream) only skipped
job registration on startup; the previously persisted system job in
<workspace>/cron/jobs.json kept firing, and remove_job refuses to
touch protected system jobs. Add CronService.remove_system_job for
startup reconciliation and call it from the gateway disabled branches
so the config toggle takes effect after restart.
2026-08-22 02:38:47 +08:00
chengyongru 1fe36d5dec fix(dream): gate cursor on run completion 2026-08-22 02:05:40 +08:00
flobo3 d853ac239f fix(dream): advance cursor when tool errors were recovered, and report why a run did not complete 2026-08-22 02:05:40 +08:00
chengyongru 9ae3ae17da feat(providers): support DeepSeek V4 vision 2026-08-21 23:18:09 +08:00
chengyongru 953d2ed217 refactor(webui): infer fallback from active model 2026-08-21 16:49:30 +08:00
chengyongru 7f97373490 fix(webui): only highlight actual model fallbacks 2026-08-21 16:49:30 +08:00
chengyongru 761e95b659 refactor(providers): simplify retry fallback routing 2026-08-21 16:46:38 +08:00
chengyongru 9a6dc371b3 refactor: pass retry exhaustion callbacks explicitly 2026-08-21 16:46:38 +08:00
chengyongru f93d4c3ae4 fix(providers): retry before falling back 2026-08-21 16:46:38 +08:00
chengyongru 26764f2423 feat(tui): add /detach command (#5461)
* feat(tui): add detach command

* fix(tui): print exact detached gateway stop command
2026-08-21 15:50:07 +08:00
chengyongru 5b44ebdfd7 fix(providers): report Responses cached tokens 2026-08-21 14:01:00 +08:00
chengyongru 8ca4bd9121 fix(agent): keep default prompt paths relative 2026-08-21 11:45:05 +08:00
akinolur c7710238a8 fix(provider): retry Codex server_error
Mid-stream response.failed events from OpenAI carry
'server_error' (underscore), but the transient-error marker
list only had 'server error' (space). is_transient_response
missed it, so the retry loop gave up on the first attempt
instead of using its normal 1s/2s/4s backoff.
2026-08-21 10:52:34 +08:00
chengyongru c5ae958bc3 fix(tui): avoid blocking local gateway startup 2026-08-20 14:48:31 +08:00
chengyongru c615aee2ca feat(tui): start fresh chats in launch workspace 2026-08-20 11:16:09 +08:00
chengyongru ac13ad65cd fix(memory): preserve replay prefix on session reset 2026-08-19 18:40:20 +08:00
chengyongru 9ef1e292ea fix(session): preserve complete transcripts 2026-08-19 18:40:20 +08:00
chengyongru 3c41d5e7f3 refactor(skills): own explicit runtime context loading 2026-08-19 18:40:20 +08:00
chengyongru cc07ac1e12 fix(memory): avoid re-archiving recent history 2026-08-19 18:40:20 +08:00
chengyongru f13abe0806 refactor(memory): require archive count in prompt 2026-08-19 18:40:20 +08:00
chengyongru f63001828f refactor(memory): guard empty summaries only on write 2026-08-19 18:40:20 +08:00
chengyongru 6bb3b33aac fix(memory): ignore empty consolidation summaries 2026-08-19 18:40:20 +08:00
chengyongru 8a2aa0821b fix(agent): keep explicit skills out of system prompt 2026-08-19 18:40:20 +08:00
chengyongru ff674144d6 fix(memory): reject truncated consolidation output 2026-08-19 18:40:20 +08:00
chengyongru 16be6b0f36 refactor(memory): unify structured consolidation flow 2026-08-19 18:40:20 +08:00
chengyongru d4de0e4e3d test(memory): sharpen compaction coverage 2026-08-19 18:40:20 +08:00
chengyongru 87fb090d22 style(memory): minimize summary diff churn 2026-08-19 18:40:20 +08:00
chengyongru b162019271 refactor(memory): keep session summaries structured 2026-08-19 18:40:20 +08:00
chengyongru fa0605abd0 refactor(memory): simplify idle consolidation flow 2026-08-19 18:40:20 +08:00
chengyongru 960425b3aa fix(memory): remove idle archive request fallback 2026-08-19 18:40:20 +08:00
chengyongru 82e50e2c91 fix(memory): avoid duplicate summary injection 2026-08-19 18:40:20 +08:00
chengyongru 93f71b61a0 fix(memory): reject tool-call-only consolidation 2026-08-19 18:40:20 +08:00
chengyongru 12a4a8c04c fix(memory): preserve idle consolidation boundaries 2026-08-19 18:40:20 +08:00
chengyongru 7335f71c5a perf(memory): reuse session context for idle compaction 2026-08-19 18:40:20 +08:00
chengyongru 2e9c9781e6 fix(webui): detach without waiting for gateway shutdown 2026-08-19 16:34:07 +08:00
chengyongru d7b3abe589 test(exec): wait deterministically for truncation output 2026-08-19 01:34:48 +08:00