Commit Graph
200 Commits
Author SHA1 Message Date
chengyongru 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 0c84725b13 fix(gateway): retry MCP readiness before turns (#5535) 2026-08-26 11:29:48 +08:00
chengyongru 9895c23cb5 refactor(providers): define typed usage contract 2026-08-25 01:04:25 +08:00
Xubin Ren 2cdfba38b2 fix(runtime): preserve interrupted turns on gateway exit 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
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 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 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 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 2e9c9781e6 fix(webui): detach without waiting for gateway shutdown 2026-08-19 16:34:07 +08:00
chengyongru df14259717 perf(tui): reduce cold-start latency 2026-08-18 16:28:46 +08:00
Xubin Ren b17f227eb9 fix(release): package TUI compliance materials 2026-08-17 20:56:10 +08:00
Xubin Ren dc3e3c1a2a fix(gateway): prevent lifecycle races 2026-08-17 20:56:10 +08:00
Xubin Ren c671acd6a8 fix(gateway): preserve shared runtime identity 2026-08-17 20:56:10 +08:00
Xubin Ren eafc0bc6eb fix(gateway): serialize shared runtime lifecycle 2026-08-17 20:56:10 +08:00
Xubin Ren 7384fbfffc fix(packaging): keep source clients in lockstep 2026-08-17 20:56:10 +08:00
Xubin Ren ddd3b78ed1 test(ci): isolate cross-platform gateway lifecycle 2026-08-17 20:56:10 +08:00
Xubin Ren 55f0423336 test(cli): tolerate wrapped launcher output 2026-08-17 20:56:10 +08:00
Xubin Ren e84aa07bcc test(cli): isolate WebUI interrupt polling 2026-08-17 20:56:10 +08:00
Xubin Ren cd6a11b3c5 fix(gateway): harden shared client lifecycle 2026-08-17 20:56:10 +08:00
Xubin Ren 014eab5f6a fix(gateway): register foreground instances 2026-08-17 20:56:10 +08:00
Xubin Ren a700697583 fix(cli): canonicalize default gateway identity 2026-08-17 20:56:10 +08:00
Xubin Ren b8333a2d7e fix(cli): make gateway persistence explicit 2026-08-17 20:56:10 +08:00
Xubin Ren 74c11e5d28 fix(cli): share on-demand gateway lifecycle 2026-08-17 20:56:10 +08:00
Xubin Ren ed796332fe refactor(tui): retire the direct session default 2026-08-17 20:56:10 +08:00
Xubin Ren 9e47d8106c fix(tui): synchronize shared session clients 2026-08-17 20:56:10 +08:00
Xubin Ren e77eed76c9 fix(tui): track canonical model presets 2026-08-17 20:56:10 +08:00
Xubin Ren 9514b9b909 fix(tui): require the native interactive client 2026-08-17 20:56:10 +08:00
Xubin Ren 6301c0ab57 feat(tui): unify session history and context 2026-08-17 20:56:10 +08:00
Xubin Ren 14c5607e5e fix(tui): enforce supported platform boundaries 2026-08-17 20:56:10 +08:00
Xubin Ren 35f2d086b0 fix(tui): harden themes and platform coverage 2026-08-17 20:56:10 +08:00
Xubin RenandBingxi Zhao 347583d3f7 fix(tui): preserve gateway and cache boundaries
Only reuse the exact managed config/workspace instance so CLI overrides cannot silently attach to another gateway. Revalidate cached release sidecars before execution and recover from corrupted cache entries.

Co-authored-by: Bingxi Zhao <150592536+pancacake@users.noreply.github.com>
2026-08-17 20:56:10 +08:00
ce070c832d feat(cli): add native TypeScript terminal UI
Rebuild the terminal client on OpenTUI while keeping the Python gateway as the single agent, session, tool, and memory runtime. Preserve a classic prompt fallback and publish version-matched native sidecars for supported platforms.

Co-authored-by: Bingxi Zhao <150592536+pancacake@users.noreply.github.com>
Co-authored-by: chengyongru <2755839590@qq.com>
2026-08-17 20:56:10 +08:00
Xubin Renandlmzopq cd7480945b fix(session): preserve history across storage relocation
Co-authored-by: lmzopq <1646888+lmzopq@users.noreply.github.com>
2026-08-13 01:41:10 +09:00
chengyongru 19997d20bb refactor: move MCP lifecycle out of AgentLoop (#5343) 2026-08-12 17:51:04 +08:00
chengyongru d45c893f68 fix(webui): surface MCP runtime connection failures (#5331) 2026-08-11 23:52:02 +08:00
chengyongru 55ecda275d test: strengthen user-path coverage and CI gates (#5308) 2026-08-09 21:37:06 +08:00
chengyongru ff6deda178 fix: modernize dependency recovery guidance (#5282) 2026-08-07 13:58:13 +08:00
chengyongru 2fe135db3e feat(webui): add integrated Vite dev mode (#5239) 2026-08-04 16:14:32 +08:00
arcdrake22 c6bd5f0075 test(gateway): align runtime-tasks gather tests with bounded retrieval
The helper never waits on the runtime-tasks gather after cancelling it
(its children are bounded individually), so the finished-gather test must
hand the helper an already-complete gather to exercise the bounded
retrieval path, and the cancelled-gather test must settle the gather
itself instead of expecting the helper to await a still-pending future.

Use a pre-completed child for the finished case and suppress(await) for
the cancelled case; both now assert done() and a single close.
2026-08-03 16:00:39 +08:00
Xubin Ren 39e1533c3b fix(gateway): make resource teardown cancellation-safe 2026-08-03 16:00:39 +08:00
arcdrake22 a91ce900ef test(gateway): add shutdown teardown regression coverage
Covers the lifecycle contract of _close_gateway_runtime: runtime tasks are
cancelled before shared resources close, pending background work is drained
before the close returns, cancellation-swallowing tasks and hanging cleanup
are bounded by their timeouts, a failing close is logged without blocking the
stop, duplicate cleanup is idempotent, and the runtime_tasks gather await path
is exercised for both completed and cancelled gathers.
2026-08-03 16:00:39 +08:00
Xubin Ren e1894d6f0b fix(providers): respect explicit cloud namespaces 2026-08-01 20:25:58 +08:00
NearlCrewsandClaude Opus 4.7 5eb818e800 fix(providers): require api_base before local provider wins on keyword match
Ollama's spec keeps "nemotron" as a keyword so bare `nemotron-3-nano`
auto-routes to a configured Ollama install (PR #1863). NVIDIA NIM was
later registered with the same "nemotron" keyword (commit 046d0831),
creating the only keyword collision in the registry.

In `_match_provider`, the keyword loop accepted any local provider on
`spec.is_local` alone — no api_base check. Models like
`nvidia/nemotron-3-super-120b-a12b` (intended for OpenRouter or NVIDIA
NIM) were therefore hijacked to http://localhost:11434/v1 even when the
user had never configured Ollama, causing silent connection errors at
runtime.

Add the same api_base gate the local-fallback loop already uses: a local
provider only wins by keyword when the user has actually set its
api_base. Preserves PR #1863's intent for users who configured Ollama;
fixes the silent hijack for everyone else.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-08-01 20:25:58 +08:00
chengyongru e2563e2e74 refactor(cli): split commands into focused modules (#5175) 2026-07-30 15:01:35 +08:00