chengyongru and GitHub
3c61fef7e8
refactor(memory): decouple archival from provider state ( #5565 )
...
* refactor(memory): decouple archival from provider state
* test(memory): remove obsolete consolidation offset coverage
2026-08-27 21:21:15 +08:00
chengyongru and GitHub
b9e7c7f6fe
fix: queue concurrent subagents ( #5566 )
...
* fix: queue concurrent subagents
* chore: keep spawn schema concise
2026-08-27 17:53:28 +08:00
chengyongru and GitHub
39de4594d7
refactor(agent): decouple loop from message tool state ( #5559 )
...
* refactor(agent): decouple loop from message tool state
* refactor(agent): scope message delivery tracking per run
* refactor(agent): clarify message delivery scope name
2026-08-27 17:23:16 +08:00
chengyongru and chengyongru
d6c112ab74
refactor(agent): load MyTool through tool loader
2026-08-27 14:05:21 +08:00
chengyongru and chengyongru
91f5a85db0
fix(agent): complete native reasoning lifecycle
2026-08-27 13:20:04 +08:00
chengyongru and GitHub
3a62b0b744
fix(tui): surface chat connection failures ( #5543 )
...
* fix(tui): surface chat connection failures
* fix(tui): keep connection copy implementation-agnostic
* test(tui): avoid millisecond timing boundary
* fix(tui): use gateway health for connection status
* fix(tui): use product-level readiness copy
2026-08-27 11:37:30 +08:00
chengyongru and chengyongru
55f85b3c1f
refactor(agent): remove duplicate progress streaming path
2026-08-27 10:56:07 +08:00
Xubin Ren
2113870e27
fix(cli): foreground the WebUI browser
2026-08-27 10:45:40 +08:00
chengyongru and GitHub
d8b4f612f2
fix(gateway): recover degraded WebSocket listener ( #5544 )
...
* fix(gateway): recover degraded WebSocket listener
* test(websocket): model listener readiness in startup stub
* fix(tui): keep launcher alive during gateway recovery
* test(websocket): colocate listener lifecycle coverage
2026-08-27 10:23:35 +08:00
chengyongru and GitHub
f9d449ef6c
refactor(webui): isolate websocket application orchestration ( #5548 )
...
* refactor(webui): extract session attach projection
* refactor(webui): isolate websocket application orchestration
* refactor(webui): tighten websocket application boundary
* test(webui): assert module logger for fork failures
2026-08-26 18:04:38 +08:00
chengyongru and chengyongru
a618e80887
refactor(agent): reduce loop runner parameter plumbing
2026-08-26 17:50:52 +08:00
chengyongru and chengyongru
c62aec0175
fix(session): reject read_session match-all patterns
2026-08-26 16:58:29 +08:00
bingqilinweimaotai and chengyongru
23dc344b8d
fix: allow unfiltered read_session calls
2026-08-26 16:58:29 +08:00
chengyongru and chengyongru
56aa7296f3
refactor(agent): make checkpoint recovery ownership explicit
2026-08-26 16:33:59 +08:00
qtds and chengyongru
9f5a56f1ec
fix(gitstore): detect rapid same-size rewrites
2026-08-26 16:19:10 +08:00
chengyongru and GitHub
9d34fc5af2
refactor(agent): remove loop iteration state ( #5549 )
...
* refactor(agent): remove loop iteration state
* docs(my): remove stale iteration guidance
2026-08-26 15:57:47 +08:00
chengyongru and GitHub
4f6c0aedfa
refactor(agent): make run usage explicit ( #5546 )
...
* refactor(agent): make run usage explicit
* fix(api): capture usage per run
2026-08-26 15:18:53 +08:00
chengyongru and GitHub
0c84725b13
fix(gateway): retry MCP readiness before turns ( #5535 )
2026-08-26 11:29:48 +08:00
zpljd258 and chengyongru
a8ffe0f136
fix(webui): project generated titles onto per-chat sessions under unifiedSession
...
With unifiedSession enabled, all turns are routed to the shared
unified:default session, so title generation, persistence, and change
notifications all happen on that shared session. The WebUI sidebar,
however, renders per-chat websocket:<id> sessions, so generated titles
never reach the session the user sees and every chat stays "Untitled".
Pass the origin chat_id through maybe_generate_webui_title_after_turn and
add a target_session_key to maybe_generate_webui_title so the title is
written to the per-chat session while conversation content still comes
from the shared (routed) session. When the routed session differs from
the per-chat session, the latest user/assistant exchange is used as the
title prompt since the shared session mixes content from every channel.
The shared session's title metadata is no longer read or written, so
stale shared titles can no longer leak into per-chat sessions.
2026-08-26 10:52:56 +08:00
chengyongru and GitHub
42f37dc4c0
fix(provider): stabilize Codex prompt cache routing ( #5540 )
2026-08-26 01:36:00 +08:00
chengyongru and chengyongru
649e3958c5
fix(tools): bound find_files scans
2026-08-25 18:40:49 +08:00
chengyongru and chengyongru
66d9328a00
fix(agent): defer subagent wait until turn exit
2026-08-25 17:56:16 +08:00
chengyongru and GitHub
4b2965c8f3
feat: add demand-driven document retrieval ( #5525 )
2026-08-25 15:34:48 +08:00
chengyongru and GitHub
5cf78540a4
fix(agent): wait for exec sessions without polling ( #5526 )
2026-08-25 14:46:02 +08:00
chengyongru and chengyongru
8332c604da
fix(agent): let subagents recover from tool errors
2026-08-25 11:54:40 +08:00
chengyongru and chengyongru
2e7ebeb1ca
fix(usage): record provider stream timing
2026-08-25 10:39:14 +08:00
Xubin Ren
7fb0811fbb
fix(agent): honor selected project workspace
2026-08-25 02:14:02 +08:00
chengyongru and chengyongru
2ac802b2d5
feat(usage): add unified provider usage backend
2026-08-25 01:22:25 +08:00
chengyongru and chengyongru
8bb3828487
fix(tui): preserve usage telemetry fields
2026-08-25 01:04:25 +08:00
chengyongru and chengyongru
9895c23cb5
refactor(providers): define typed usage contract
2026-08-25 01:04:25 +08:00
chrischen-coder and chengyongru
f5e467626d
fix(agent): time out no-tools model requests
2026-08-25 00:34:01 +08:00
chengyongru and GitHub
04974b7607
fix(webui): preserve causal message order (NAN-29) ( #5503 )
2026-08-24 15:08:22 +08:00
chengyongru and chengyongru
09d3bd76c9
fix(exec): disable command guard in full access
2026-08-24 11:44:00 +08:00
chengyongru and chengyongru
b1cadf53c5
fix(codex): reuse TLS contexts across requests
2026-08-24 11:25:02 +08:00
Xubin Ren
baa0233377
fix(tui): preserve draft scope until first message
2026-08-24 10:40:16 +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 and 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
chengyongru and chengyongru
9807e9cf37
test: remove stale Mattermost config input
2026-08-23 19:08:00 +08:00
chengyongru and chengyongru
961b1fdd7d
refactor: remove remaining dead code
2026-08-23 19:08:00 +08:00
Xubin Ren
48eea29313
feat(webui): unify turn observability
2026-08-22 20:51:24 +08:00
chengyongru and chengyongru
dbc1801d3c
fix(cron): report reconciled startup job count
2026-08-22 02:38:47 +08:00
aiguozhi123456 and chengyongru
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 and chengyongru
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 and chengyongru
1fe36d5dec
fix(dream): gate cursor on run completion
2026-08-22 02:05:40 +08:00