Commit graph

1679 commits

Author SHA1 Message Date
PeterChrz
b8bf0ab34f
fix(buzz): restore relay-driven NIP-42 subscription 2026-08-25 00:25:55 -04:00
PeterChrz
02961af54f
fix(buzz): suppress replayed events after restart 2026-08-25 00:25:21 -04:00
PeterChrz
23765f756f
fix(buzz): wait for NIP-42 challenge before calling Auth()
The go-nostr RelayConnect returns immediately after the WebSocket
handshake, but the relay has not yet sent the AUTH challenge. Calling
relay.Auth() right away signs the auth event with an empty challenge
tag, which the Buzz relay rejects permanently ('verification failed'
then 'authentication already failed' on retries).

Add a 2s sleep between RelayConnect and Auth() to give the background
read loop time to receive and store the challenge. The relay typically
delivers it within a few hundred milliseconds.
2026-08-11 21:59:20 -04:00
PeterChrz
9b4df86182
feat(channels): add Buzz (Nostr relay) channel
Implements a Buzz channel backed by a Nostr relay:
- kind:9 events scoped by "h" tag, "p" tags for mentions
- NIP-42 (kind:22242) auth before subscription
- optional threaded replies via "e" tag
- registered as config.ChannelBuzz with BuzzSettings
2026-08-11 21:41:16 -04:00
Yue_chen
9a0efd7bab style(tools): wrap write_file guidance Sprintf for golines 2026-07-07 21:04:16 +08:00
Yue_chen
0132837d22 Merge branch 'main' into fix/writefile-overwrite-guidance 2026-07-07 20:46:53 +08:00
Yue_chen
a680d8fcfa fix(tools): gate write_file overwrite guidance on available tools
#3150 reworded write_file's description, overwrite parameter, and guard
error to prefer append_file/edit_file. But those tools register via their
own enable flags and the per-agent allowlist, so a config exposing only
write_file was steered toward tools it does not have — a dead end in the
most restrictive setups.

WriteFileTool now tracks which non-destructive alternatives are available
and names only the ones present; when none are, the guard still blocks the
overwrite without pointing anywhere. The agent wiring registers the editors
before write_file and resolves availability via registry.HasRegistered,
which reflects both the enable flag and the allowlist.

Tests: conditional copy at the tool level (none/one/both) and agent wiring
across the enable-flag and allowlist dimensions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 20:40:27 +08:00
AayushGupta16
994c0aea11 fix(providers): resolve tool_use name/args from Function on reloaded history
ToolCall.Name and .Arguments are json:"-" (runtime-only), so after chat
history round-trips through the session store only ToolCall.Function
survives. The anthropic-messages and anthropic (SDK) providers emitted
tool_use blocks from tc.Name alone, silently skipping every historical
tool call while still emitting the matching tool_result — orphaned
tool_results 400 at the API ("unexpected tool_use_id found in
tool_result blocks"), killing every turn on agents with tool history.

Fall back to Function.Name / json-parsed Function.Arguments (the same
pattern the bedrock and openai_compat providers already use), and cover
the deserialized-history shape with table tests in both providers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 21:26:34 -07:00
Mauro
b6e6d25d75
Merge pull request #3189 from chengzhichao-xydt/codex/line-body-close
fix(line): explicitly ignore resp.Body.Close() errors in Send and classifySDKError
2026-07-05 09:35:40 +02:00
Yue_chen
8f891d5dd0 fix(tools): stop write_file from coaching destructive overwrite (#3150)
The overwrite guard error ("Set overwrite=true to replace") steered the
model to clobber files like MEMORY.md. Reword write_file's description,
overwrite param, and guard error to prefer append_file/edit_file.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 14:13:31 +08:00
Ethan1918
79c075fba0 fix(openai_compat): remove unused log import 2026-07-04 14:34:58 +08:00
Ethan1918
ffffb6a0cb refactor(agent): route /clear through ContextManager.Clear for all agents
Address review feedback: the routed-agent /clear path bypassed the
public ContextManager.Clear contract via an unexported hook. Restore
the single Clear call in the command path and resolve the session's
owning agent inside the built-in implementations instead:

- legacy: Clear resolves the owning agent via agentForSession instead
  of assuming the default agent
- seahorse: drop ClearContextStore; Clear wipes the engine state and
  the owning agent's session store
- command path: persist session scope metadata before Clear so
  ownership resolves even when /clear is the session's first message
- add coverage that a custom ContextManager receives Clear for routed
  agents

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 14:04:37 +08:00
Ethan1918
c4fb7a2001 fix(agent): clear routed agent session 2026-07-04 04:14:03 +08:00
Mauro
4c5adcd78e
Merge pull request #3128 from chengzhichao-xydt/codex/web-body-close
fix(web): explicitly ignore resp.Body.Close() errors after io.ReadAll
2026-07-03 20:45:55 +02:00
Mauro
cf24f32896
Merge pull request #3156 from loafoe/feat/session-token-usage
feat(pico): emit per-turn LLM token usage on finalized message
2026-07-03 09:14:36 +02:00
Mauro
883d43b37d
Merge pull request #3063 from trufae/deltachan
feat: add deltachat gateway
2026-07-02 23:45:24 +02:00
Mauro
3b24a48a8c
Merge pull request #3161 from danmobot/fix/exec-custom-allow-deny
fix(exec): keep deny patterns active for custom allow rules
2026-07-02 21:51:16 +02:00
Mauro
79ae6bf97f
Merge pull request #3158 from danmobot/fix/sandbox-fs-windows-paths
test: cover sandbox fs Windows path handling
2026-07-02 21:39:45 +02:00
pancake
612e485d4e WIP: Initial support for deltachat gateway
Features:
- Support voice messages
- Optional crossposting
- Automatic account creation
- Custom avatar image
2026-07-02 15:23:35 +02:00
LC
2cf030d2fd
fix(providers): surface friendly auth error messages (#3198) 2026-06-30 17:42:07 +08:00
程智超0668000959
9068fde274 fix: gofumpt formatting on line.go 2026-06-27 10:20:37 +08:00
程智超0668000959
ce4a6c9bba fix(line): explicitly ignore resp.Body.Close() errors in Send and classifySDKError 2026-06-27 09:19:13 +08:00
Mauro
52320f4875
Merge pull request #3181 from Alix-007/fix/gateway-startup-info-ok
fix(gateway): guard startup info assertions
2026-06-26 23:06:34 +02:00
Mauro
c15aac21fe
Merge pull request #3143 from lc6464/fix/isatap-ssrf-guard
fix(web): block private IPv4 embeds in ISATAP literals
2026-06-26 22:59:41 +02:00
Mauro
7ee4f41b7e
Merge pull request #3187 from chengzhichao-xydt/codex/http-guard-test-body-close
test(utils): explicitly ignore resp.Body.Close() errors in tests
2026-06-26 18:11:24 +02:00
Mauro
d65d592a40
Merge pull request #3188 from chengzhichao-xydt/codex/health-encode-errors
fix(health): explicitly ignore json.Encode errors in HTTP handler responses
2026-06-26 18:11:05 +02:00
Mauro
9bc8d15685
Merge pull request #3185 from chengzhichao-xydt/codex/updater-checksum-body-close
fix(updater): explicitly ignore resp2.Body.Close() error after io.ReadAll
2026-06-26 18:10:21 +02:00
Mauro
979f440af7
Merge pull request #3184 from chengzhichao-xydt/codex/ws-body-close
fix(channels): explicitly ignore resp.Body.Close() errors in websocket dial cleanup
2026-06-26 18:10:06 +02:00
Mauro
377c25e7c5
Merge pull request #3183 from chengzhichao-xydt/codex/onebot-body-close
fix(onebot): explicitly ignore resp.Body.Close() error after websocket dial
2026-06-26 18:09:04 +02:00
程智超0668000959
2cdfadaa8b test(utils): explicitly ignore resp.Body.Close() errors in tests 2026-06-26 23:03:32 +08:00
程智超0668000959
0eb721fff7 fix(health): explicitly ignore json.Encode errors in HTTP handler responses 2026-06-26 22:57:48 +08:00
程智超0668000959
500ce72436 fix(onebot): explicitly ignore resp.Body.Close() error after websocket dial 2026-06-26 22:42:43 +08:00
程智超0668000959
583d9e1e14 fix(updater): explicitly ignore resp2.Body.Close() error after io.ReadAll 2026-06-26 22:15:29 +08:00
程智超0668000959
1bd2e84527 fix(channels): explicitly ignore resp.Body.Close() errors in websocket dial cleanup 2026-06-26 22:15:03 +08:00
Alix-007
36d72a0112 fix(gateway): guard startup info assertions 2026-06-26 16:11:54 +08:00
Mauro
124c529bf1
Merge pull request #3172 from chengzhichao-xydt/codex/close-error-checks-clean
fix: explicitly ignore Close() errors in error paths and retry loops
2026-06-26 08:41:31 +02:00
程智超0668000959
7ee4ee3b64 fix: correct indentation in shell.go and updater.go for gci linter 2026-06-25 16:11:34 +08:00
程智超0668000959
62a2b0015a fix: explicitly ignore Close() errors in error paths and retry loops 2026-06-25 15:38:41 +08:00
程智超0668000959
d6371fcb68 fix(agent): close base64 encoder on io.Copy error path
Previously when io.Copy to the base64 encoder failed, encoder.Close()
was skipped. This left the encoder's internal buffer unflushed.
Now always call Close() and handle both copy and close errors
explicitly.
2026-06-25 15:23:34 +08:00
程智超0668000959
c3aa8c088c fix(web): explicitly ignore resp.Body.Close() errors after io.ReadAll 2026-06-25 15:13:29 +08:00
Alix-007
288013ca0f fix(evolution): skip cold path for heartbeat turns 2026-06-24 23:29:46 +08:00
Alix-007
540f81ff9e fix(openai_compat): use structured logger for native_search warning 2026-06-24 18:30:44 +08:00
danmobot
acc2c5c6aa test(fs): cover root path separator normalization 2026-06-23 20:57:42 +01:00
danmobot
ff247b63ac fix(exec): preserve additive custom allow behavior 2026-06-23 20:47:15 +01:00
danmobot
9721c36e55 fix(exec): keep deny patterns active for custom allow rules 2026-06-23 02:53:14 +01:00
danmobot
46ffda264f fix: import log in openai compat provider 2026-06-22 23:42:27 +01:00
danmobot
88bda73db6 Merge remote-tracking branch 'upstream/main' into fix/sandbox-fs-windows-paths 2026-06-22 23:42:04 +01:00
Mauro
a75b3d15bb
Merge pull request #3053 from chengzhichao-xydt/codex/store-lock-type-assert
fix(evolution): add ok check for LoadOrStore type assertion in lockStoreFile
2026-06-23 00:04:42 +02:00
danmobot
29e019ec66 test: cover sandbox fs Windows path handling 2026-06-22 23:01:20 +01:00
Mauro
ec9c6cde8e
Merge pull request #3091 from chengzhichao-xydt/codex/provider-native-search-type-assert
fix(openai_compat): add ok check for native_search type assertion
2026-06-22 23:12:51 +02:00