Kunal Karmakar
bc077db0ee
Deduplicate ParseDataAudioURL function
2026-04-23 05:50:37 +00:00
Kunal Karmakar
e901e70c14
Fix linting
2026-04-23 05:47:58 +00:00
Kunal Karmakar
c71146b1d5
Functions deduplication
2026-04-23 05:47:58 +00:00
lxowalle
451db2f5d8
Feat(channels): unify animated tool feedback across chat channels and Pico ( #2622 )
...
* feat(channels): unify tool feedback animation across discord telegram and feishu
* fix(tool-feedback): unify fallback and single-message delivery
* fix(channels): finalize tool feedback in place
* fix ci
* feat: improve tool feedback
* fix review blockers in pico token cache and tool feedback
fix(provider): preserve function thought signatures
fix(feishu): recover tool feedback after edit fallback
* * delete dead code
* fix(pico): clean up tool feedback progress state
* fix ci
* fix(web): preserve tool feedback line breaks in chat
* fix(channels): preserve tool feedback progress state
fix(pico): preserve context usage when finalizing tool feedback
chore: record branch review pass
fix: preserve tool feedback finalization state
fix(web): handle pico history update fallback
* fix ci
2026-04-23 10:35:50 +08:00
Mauro
68ceb54b36
Merge pull request #2535 from afjcjsbx/feat/mcp-channel-commands
...
feat(commands): add MCP slash commands and tool details
2026-04-22 14:54:28 +02:00
lxowalle
77b0c43392
refactor: support explicit provider field in model list entries ( #2609 )
...
* refactor: support explicit model list providers
* fix(web): preserve explicit model providers
* fix(web): preserve legacy provider prefixes on model updates
fix(models): normalize explicit provider-prefixed ids
fix(api): preserve legacy model updates across providers
fix(agent): preserve config identity for explicit provider refs
* fix ci
2026-04-22 11:28:47 +08:00
Mauro
3316ee6923
feat(web): download files on frontend ( #2563 )
...
* feat(web): download attachments in frontend
* fix: proxy pico media and force svg downloads
* feat(web): hide ephemeral media refs from persisted session history
2026-04-22 11:28:04 +08:00
sky5454
d0507df894
chore(isolation): fix govet shadow declaration of "err" shadows
2026-04-21 23:23:50 +08:00
afjcjsbx
5a13616b64
fix(mcp): surface MCP init failures to command handlers
2026-04-21 11:01:04 +02:00
afjcjsbx
e5a6960078
fix lint
2026-04-21 11:01:04 +02:00
afjcjsbx
276f5425f0
feat(commands): add MCP slash commands and tool details
2026-04-21 11:01:04 +02:00
Guoguo
6ca7311273
feat(agent): add context usage ring indicator and /context command ( #2537 )
...
Add a context window usage indicator to the web chat UI and a /context
slash command that works across all channels.
Backend:
- Add computeContextUsage() estimating history + system + tool tokens
- Attach ContextUsage to outbound messages via the pico WebSocket protocol
- Add /context command showing context stats as formatted text
- Add EstimateSystemTokens() on ContextBuilder for system prompt estimation
Frontend:
- Add ContextUsageRing component (SVG ring + hover/tap popover)
- Show usage percentage, token counts, and compression threshold
- Hover on desktop (150ms leave delay), tap on mobile
- "View Details" sends /context with 1s cooldown
- i18n support (en/zh) for popover labels
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-21 16:30:02 +08:00
LC
9c3dc0ee3a
fix(auth): canonicalize Google Antigravity provider and enhance credential management ( #2599 )
...
* fix(auth): canonicalize Google Antigravity provider and enhance credential management
* fix(auth): improve error handling in credential storage tests
* fix(auth): stabilize canonical provider merge precedence
2026-04-21 16:28:29 +08:00
wenjie
ba6992234f
feat(web): support list editing for channel array fields ( #2595 )
...
Add reusable channel array list controls and parsing utilities for channel forms.
Normalize channel string-array payloads in the backend, including pasted values,
numeric IDs, hidden characters, duplicates, and empty clears.
Also allow FlexibleStringSlice to unmarshal null values and cover the new behavior
with backend and config tests.
2026-04-21 16:04:28 +08:00
sky5454
329e68e017
refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent ( #2585 )
...
* refactor(agent): introduce interfaces for MessageBus and ChannelManager
Phase 2 of loop.go refactor — dependency inversion using adapter pattern.
- Add interfaces.MessageBus and interfaces.ChannelManager interfaces
- Create adapters/messagebus.go wrapping *bus.MessageBus
- Create adapters/channelmanager.go wrapping *channels.Manager
- Update AgentLoop to use interfaces instead of concrete types
- Update registerSharedTools to accept interfaces.MessageBus
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* refactor(agent): restructure pipeline and rename loop files
Pipeline refactoring:
- Split pipeline.go (1400 lines) into focused files:
- pipeline_setup.go (~115 lines): SetupTurn method
- pipeline_llm.go (~519 lines): CallLLM method
- pipeline_execute.go (~693 lines): ExecuteTools method
- pipeline_finalize.go (~78 lines): Finalize method
- Pipeline struct and NewPipeline remain in pipeline.go (~39 lines)
Agent file renaming:
- Rename loop_*.go to agent_*.go for consistent naming:
- loop.go -> agent.go, loop_message.go -> agent_message.go, etc.
- Merge turn.go + turn_exec.go into turn_state.go
- Rename loop_turn.go -> turn_coord.go
Documentation:
- Update docs/pipeline-restructuring-plan.md
- Add docs/agent-rename-plan.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* fix(agent): code format fixed
* refactor(agent): code test file added/renamed
* docs(agent): update agent refactor docs
* fix(agent): fix agent hardAbortX
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-21 10:55:50 +08:00
lxowalle
6421f146a9
Revert "Feat/channel tool feedback animation ( #2569 )" ( #2596 )
...
This reverts commit e556a816e4 .
2026-04-20 18:30:29 +08:00
lxowalle
e556a816e4
Feat/channel tool feedback animation ( #2569 )
...
* feat(channels): unify tool feedback animation across discord telegram and feishu
* fix(tool-feedback): unify fallback and single-message delivery
* fix(channels): finalize tool feedback in place
* fix ci
* feat: improve tool feedback
2026-04-20 15:20:26 +08:00
wenjie
4b76196e2c
refactor(web): secure Pico websocket access behind launcher auth
...
- stop exposing the raw Pico token to the frontend
- add /api/pico/info for non-secret Pico connection metadata
- proxy /pico/ws through the launcher with same-origin and dashboard auth checks
- inject the upstream Pico websocket protocol server-side
- update frontend chat connection flow and Vite websocket proxy path
- refresh related docs and tests
2026-04-20 10:11:03 +08:00
美電球
6126ede963
Merge pull request #2566 from lc6464/refactor/providers-tools-layout
...
refactor(providers,tools): reorganize packages and facades
2026-04-17 22:51:49 +08:00
lc6464
743cd3602b
fix(tools): centralize shared LLM note constants
2026-04-17 14:31:43 +08:00
lc6464
9b4efddd9b
fix(providers,tools): address linter issues after reorg
2026-04-17 14:16:18 +08:00
wenjie
4e1ceee62e
refactor(docs): reorganize docs by type and locale
2026-04-17 14:00:45 +08:00
lc6464
4c133dc2d9
refactor(tools): reorganize tool packages and facades
2026-04-17 13:44:31 +08:00
daming大铭
0da962c4b4
Merge pull request #2564 from sky5454/looper_refactor
...
Looper refactor: Split the monolithic 4384-line `loop.go` into 12 focused source files as Phase 1 of the agent refactor.
2026-04-17 13:18:11 +08:00
lc6464
ee634dc8db
refactor(providers): reorganize provider packages and facades
2026-04-17 12:42:03 +08:00
sky5454
12d5421c26
refactor(agent): split loop.go into focused sub-packages
...
Break up the monolithic 4384-line loop.go into 12 focused files:
- loop.go: core AgentLoop struct and main Run loop
- loop_turn.go: turn execution logic (runTurn, askSideQuestion, etc.)
- loop_utils.go: pure utility functions (formatters, helpers)
- loop_init.go: constructor and tool registration
- loop_message.go: message handling (processMessage, routing)
- loop_command.go: command processing (/use, /btw, etc.)
- loop_mcp.go: MCP runtime management
- loop_event.go: event/hook system helpers
- loop_media.go: media resolution and artifact handling
- loop_outbound.go: response publishing
- loop_transcribe.go: audio transcription
- loop_steering.go: steering queue and continuation
- loop_inject.go: setter injection methods
No functional changes - pure code movement with updated imports.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-17 11:17:12 +08:00
daming大铭
928a27359f
Merge pull request #2549 from lc6464/gateway-auth-no-browser
...
feat(auth): add no-browser option for OAuth login
2026-04-17 09:54:03 +08:00
daming大铭
ba08d52351
Merge pull request #2474 from srcrs/fix-cron-independent-sessions
...
fix(cron): make each job execution use an independent session
2026-04-16 23:52:29 +08:00
daming大铭
b1475122da
Merge pull request #2547 from lc6464/chore/issue-2538-network-fallback
...
feat(network): improve network error classification and fallback handling
2026-04-16 23:17:20 +08:00
lc6464
ffd30d7db7
fix(auth): improve no-browser OAuth login
2026-04-16 23:01:28 +08:00
daming大铭
eb24269651
Merge pull request #2503 from cytown/loop
...
refactor: make agent loop support parallel and update docs
2026-04-16 22:47:34 +08:00
lc6464
2b844778ff
refactor(tests): extract common logic for fallback error handling into a helper function
2026-04-16 22:45:31 +08:00
lc6464
ab019d3f18
feat(auth): add no-browser option for OAuth login
2026-04-16 22:19:34 +08:00
LC
7aa2d672ce
fix(network): classify timeout errors as FailoverTimeout
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-04-16 22:00:13 +08:00
lc6464
c3f4000817
feat(network): implement network error classification and fallback handling
2026-04-16 19:59:37 +08:00
wenjie
7fdc9c7b64
fix(web): support proxies in SearXNG and web fetch ( #2542 )
...
Propagate the configured HTTP client and proxy settings to the
SearXNG search provider.
Allow web_fetch to connect to the configured proxy as the first hop
without bypassing the existing private-host checks for redirect
targets and fetched URLs.
Add tests for loopback proxy fetches and SearXNG proxy propagation.
2026-04-16 17:15:47 +08:00
Cytown
f5e779e22e
refactor: make agent loop support parallel and update docs
2026-04-16 14:43:15 +08:00
lxowalle
e22b4e1eee
feat(agent): support btw side questions ( #2532 )
2026-04-16 10:53:09 +08:00
wenjie
a8d0b03515
fix(web): save channel configs with nested channel_list patches ( #2530 )
...
Persist channel settings through the current channel_list schema, keeping common
channel fields at the top level and channel-specific fields under settings.
Return common fields and default config shapes from channel config endpoints, and
add coverage for nested patches, missing channel defaults, and secret handling.
2026-04-16 10:30:16 +08:00
美電球
ead2dc9699
Merge pull request #2524 from SiYue-ZO/feature/sogou-web-search-default
...
Add configurable Sogou-backed web search
2026-04-15 20:50:53 +08:00
wenjie
7bd11181a6
fix(agent): preserve reused tool call IDs across turns ( #2528 )
...
Scope tool result deduplication to each assistant tool-call block so providers
that reuse call IDs across separate turns do not lose valid tool results. Also
drop invalid empty tool call IDs and orphaned tool messages after validation.
2026-04-15 20:18:09 +08:00
SiYue-ZO
2784223ad5
Make web search auto-switch with UI language
...
Default the sample web search provider to auto, route Sogou vs DuckDuckGo dynamically based on query/UI language, and sync frontend language changes back to the backend so Current Service and runtime selection stay aligned.
2026-04-15 18:45:28 +08:00
Mauro
bb14a5c7cc
Merge pull request #2525 from afjcjsbx/fix/vision-unsupported-media-stuck
...
fix(agent): recover after image-input-unsupported failures
2026-04-15 07:54:33 +02:00
SiYue-ZO
75e93b5189
Merge remote-tracking branch 'upstream/main' into feature/sogou-web-search-default
...
# Conflicts:
# pkg/tools/web.go
# pkg/tools/web_test.go
2026-04-15 13:28:05 +08:00
SiYue-ZO
0b84f0ae0a
fix(web): address sogou search review feedback
2026-04-15 13:03:06 +08:00
lxowalle
773a94c414
fix(web_search): validate missing API key/URL directly in Search methods ( #2517 )
2026-04-15 09:55:05 +08:00
afjcjsbx
e60a687387
fix lint
2026-04-14 22:35:02 +02:00
afjcjsbx
7824bc715f
add test
2026-04-14 22:31:30 +02:00
afjcjsbx
d3d639cb7d
fix lint
2026-04-14 22:21:33 +02:00
afjcjsbx
1245f2ddf6
fix(agent): recover after image-input-unsupported failures
2026-04-14 22:15:28 +02:00