Zhou
5a28a6165c
fix(shell): preserve UTF-8 native input on PowerShell 5 ( #5160 )
...
Windows PowerShell 5.1 defaults $OutputEncoding to US-ASCII, corrupting non-ASCII strings piped to native commands. Set it from the console encoding only on legacy versions so PowerShell 7 keeps its defaults.
2026-07-29 21:47:01 +08:00
chengyongru
757ad9c764
refactor: enforce BasedPyright strict type checking ( #5158 )
2026-07-29 21:37:11 +08:00
chengyongru
393d429e0a
fix(ci): stabilize and speed up CI ( #5145 )
2026-07-28 22:55:59 +08:00
chengyongru
12f828ea3d
fix(agent): read document attachments on demand ( #5122 )
2026-07-28 13:33:06 +08:00
chengyongru
ef9e687f19
refactor(core): remove redundant runtime scaffolding ( #5127 )
2026-07-28 11:07:58 +08:00
chengyongru
39348dfafe
refactor(agent): remove dead lifecycle scaffolding
2026-07-27 12:00:06 +08:00
Xubin Ren
c1899e2cb4
fix(mcp): decode URI-encoded schema refs
2026-07-27 01:14:41 +08:00
amplifierplus
9aae7485d6
fix(mcp): normalize local schema refs
2026-07-27 01:14:41 +08:00
Xubin Ren
cf6ca13b6d
fix(exec): preserve bwrap workspace masking
2026-07-27 00:31:00 +08:00
yu-xin-c
22e61003f9
test(exec): make bwrap bind tests portable
2026-07-27 00:31:00 +08:00
yu-xin-c
01a11b3980
feat(exec): allow extra bwrap bind roots
2026-07-27 00:31:00 +08:00
AxelRay
78f4c132d9
fix(exec): extract absolute paths after equals sign in shell guard ( #4594 )
2026-07-23 23:58:01 +08:00
KDB
648fc92673
fix(exec): retain stale sessions after cleanup failure
...
Only remove idle exec sessions after process termination succeeds so later cleanup and shutdown paths can retry failed kills.
2026-07-23 23:55:00 +08:00
chengyongru
b189a37648
fix(agent): preserve agent-owned state in project workspaces ( #4945 )
2026-07-22 17:25:22 +08:00
chengyongru
80085085d9
fix(exec): retain failed owner session cleanup
2026-07-22 15:28:34 +08:00
yorkhellen
ebf1ef5cab
test(subagent): verify cascade exec termination on /stop
...
- terminate_by_owner kills matching sessions, skips others, handles
empty owner case
- cancel_by_session calls terminate_by_owner on the session key
2026-07-22 15:28:34 +08:00
amplifierplus
cdb2df4982
fix(files): reject oversized reads before loading
2026-07-21 15:02:27 +08:00
chengyongru
d5658dbc91
fix: preserve background operator in allowlist segments
...
Maintainer edit: keep a top-level trailing '&' in the segment being matched so background execution cannot be checked as if the ampersand were absent. Redirection forms like 2>&1 and &> remain untouched.
2026-07-21 13:50:24 +08:00
chengyongru
12c52c11d3
fix: treat single ampersand as shell segment
...
Maintainer edit: single '&' backgrounds the preceding command and starts another top-level shell segment, so allowPatterns must split it the same way as ';', '|', '&&', and '||'. Keep fd redirections such as 2>&1 and &> intact.
2026-07-21 13:50:24 +08:00
michaelxer
bbca32fea9
fix(security): validate each shell segment against exec.allowPatterns
...
Guard against shell-chain bypass where an attacker appends '&& malicious'
after an allowlisted prefix. The allowlist check now splits the command
on top-level chaining operators (&&, ||, ;, |) and requires every segment
to match at least one allowPattern independently.
Fixes #4521
2026-07-21 13:50:24 +08:00
KDB
8981995474
fix(exec): clean up sessions on shutdown
2026-07-21 13:48:51 +08:00
chengyongru
462a0dfb0f
refactor(channels): make built-in channels self-contained ( #4908 )
...
* refactor(channels): own setup and instance contracts
* refactor(channels): isolate management contracts
* refactor(channels): normalize activation contracts
* fix(channels): enforce management contracts
* refactor(channels): finish setup ownership migration
* fix(channels): harden management contracts
* fix(channels): enforce lazy loading and runtime ownership
* fix(feishu): make multi-instance startup idempotent
* fix(webui): render channel setup contracts cleanly
* fix(feishu): stop websocket clients cleanly
* fix(channels): enforce persistence and activation gates
* fix(channels): preserve global feature action scope
* fix(channels): apply defaults for single plugins
* fix(channels): enforce management contract boundaries
* refactor(feishu): remove identity helper indirection
* fix(channels): preserve management setup contracts
* refactor(channels): generalize instance settings UI
* refactor(channels): package channel plugins with web UI metadata
* refactor(channels): make built-ins self-contained packages
* test(channels): colocate tests with channel packages
* fix(dingtalk): use official brand icon
* feat(channels): colocate webui translations
* docs(channels): clarify plugin ownership
* test(exec): remove output wait race
* refactor(channels): unify plugin descriptors
* fix(channels): enforce descriptor-owned contracts
* refactor(channels): finish package-owned plugin setup
* refactor(channels): use repository-owned packages only
* fix(channels): self-describe dependencies and runtime state
* fix(channels): warn about legacy entry points
2026-07-19 23:30:49 +08:00
adabarbulescu
d4f5abe004
fix: preserve real cancellation in MCP paths
2026-07-18 17:36:35 +08:00
yu-xin-c
07ad0bafa8
test(exec): relax wait-for timing on Windows
2026-07-18 17:35:56 +08:00
yu-xin-c
995cc44e89
fix(exec): isolate exec session managers
2026-07-18 17:35:56 +08:00
chengyongru
681edfa6f3
fix(providers): honor Codex proxy config consistently
2026-07-15 20:01:48 +08:00
chengyongru
2116e32013
test: speed up CI and harden the suite
2026-07-15 00:18:37 +08:00
chengyongru
1643aa7ef5
fix(shell): narrow PowerShell UTF-8 configuration
...
Avoid changing native pipeline input encoding and consolidate real PowerShell checks to reduce Windows runner startup flakiness.
2026-07-14 13:50:02 +08:00
chengyongru
9f8c2cb1bf
test(shell): wait for Windows PowerShell sessions
2026-07-14 13:50:02 +08:00
chengyongru
61afbffc89
fix(shell): configure PowerShell UTF-8 output
2026-07-14 13:50:02 +08:00
adabarbulescu
9cdf17f5d5
Fix Windows exec UTF-16 output decoding
2026-07-14 13:50:02 +08:00
Xubin Ren
fe0717b385
feat(webui): add guided setup flows
...
* feat(channels): add guided setup flows
* test(channels): preserve setup config values
* fix(channels): reflect saved setup state
* refactor(channels): simplify setup state metadata
* fix(channels): harden setup lifecycle
* refactor(channels): centralize setup contracts
* fix(channels): route setup actions through webui shim
* fix(channels): adapt settings for compact screens
* fix(models): preserve default preset display
* feat(models): add curated Codex catalog
* fix(webui): stop attached gateway on interrupt
* fix(webui): simplify apps catalog
* docs(webui): clarify apps and runtime features
* feat(settings): add guided capability setup
* fix(webui): harden setup and managed services
* test: keep managed runtime checks portable
* test: scope POSIX runtime coverage
* fix(webui): simplify file settings
* feat(files): bundle document reading
* fix(webui): harden setup request boundaries
* fix(webui): prevent channel setup status squeeze
* fix(settings): group provider compatibility aliases
* refactor(settings): remove redundant setup surfaces
* fix(webui): harden guided setup lifecycle
* fix(webui): preserve channel setup compatibility
2026-07-13 13:11:46 +08:00
chengyongru
7f8c3453e1
refactor(agent): gate sustained goals behind explicit /goal
...
Replace the legacy long-goal skill contract with command-scoped goal tools and runtime guidance. Keep goal state durable across continuations while restricting create and replace mutations to explicit user /goal turns.
2026-07-12 00:35:17 +08:00
chengyongru
7675364eae
fix(tools): enforce edit_file line hints
2026-07-11 01:14:50 +08:00
chengyongru
052fdc132d
feat(tools): guard edit_file target lines
2026-07-11 01:14:50 +08:00
Eric Yang
9a1d1e64c7
fix(shell): harden kill path and add zombie reap tests
...
Skip process.kill() when returncode is already set so generic exception
handlers after a successful communicate() cannot raise ProcessLookupError.
Suppress race kill failures and still run the safety-net reap.
Add unit and integration coverage for owned-PID reaping on normal exit,
timeout, exception, and exec-session kill/poll paths.
2026-07-10 20:19:44 +08:00
chengyongru
af85c356b8
refactor(agent): capture subagent runtime before spawn
2026-07-10 17:54:34 +08:00
chengyongru
198fd9f869
refactor(agent): capture runtime at turn admission
2026-07-10 17:54:34 +08:00
chengyongru
42d7ad34a4
refactor(agent): unify request context routing
2026-07-10 17:54:34 +08:00
chengyongru
c5e053f83b
fix: pin validated DNS for SSRF-safe fetches
...
maintainer edit: keep MCP HTTP SSRF checks strict, pin validated DNS for direct web_fetch and HTTP/SSE MCP requests, preserve explicit and environment proxy compatibility, and cover the proxy/redirect/rebinding cases with tests.
2026-07-07 15:40:53 +08:00
hamb1y
b68ae4f9bc
fix: reject proxied pinned web fetches
2026-07-07 15:40:53 +08:00
hamb1y
97e3b360c2
fix: serialize pinned dns web fetches
2026-07-07 15:40:53 +08:00
hamb1y
4353f4680b
fix: allow local mcp urls with pinned dns
2026-07-07 15:40:53 +08:00
hamb1y
73bf299a59
fix: pin validated dns for ssrf checks
2026-07-07 15:40:53 +08:00
Xubin Ren
b1d29ede7d
test(mcp): cover limited enabledTools names
2026-07-06 12:11:37 +08:00
ThomasZP Yang
800d51ecac
fix: align MCP tool matching with limited names
2026-07-06 12:11:37 +08:00
ThomasZP Yang
3f9fb63d4c
fix: limit long MCP-derived tool names
2026-07-06 12:11:37 +08:00
Xubin Ren
1cfa48ad4a
fix(web-search): return structured Serper errors
2026-07-06 12:11:31 +08:00
franciscomaestre
8a42a9c73a
feat(web-search): add Serper.dev (Google Search API) provider
...
Add 'serper' as a web search backend, following the existing provider
pattern (keenable/exa): POST to https://google.serper.dev/search with the
X-API-KEY header, map the 'organic' results into the shared result format,
and fall back to DuckDuckGo when no key is configured.
- key resolved from config.api_key or SERPER_API_KEY env var
- 429 handled with a rate-limit message; other HTTP errors surfaced
- tests cover success, env-key, no-key fallback, HTTP error and rate limit
- docs: add Serper config example and list it in tools.web.search providers
2026-07-06 12:11:31 +08:00
chengyongru
122cf4213b
fix: harden Windows exec shell edge cases
...
Maintainer edit: preserve raw cmd.exe quoting for shell='cmd', propagate native exit codes through the default PowerShell path, and keep quoted Windows executable paths invokable under PowerShell.
2026-07-06 12:11:25 +08:00