Commit graph

1366 commits

Author SHA1 Message Date
xiwuqi
d014f3e989
fix(api): include auth header in local model probe (#1896) 2026-03-23 13:41:40 +08:00
Kunal Karmakar
40279c8dde
chore(config): move loglevel settings under gateway (#1912)
* Move log level config to gateway property

* Fix unit test

* Fix linting

* Fix linting

* Add comment for log level
2026-03-23 06:14:53 +01:00
美電球
75270c4777
Fix 1886 media cleanup policy (#1887)
* fix(media): track cleanup ownership per path

Add explicit cleanup policy handling to MediaStore and count refs by path before deleting the underlying file. This prevents cleanup from removing shared files until the final ref is gone.

Refs #1886

* fix(tools): keep send_file refs forget-only

Mark send_file media registrations as forget-only so cleanup drops the ref without deleting the original workspace file.

Refs #1886

* fix(channels): declare managed media cleanup policy

Explicitly mark downloaded and managed channel media as delete-on-cleanup so media ownership is visible at each registration site.

Refs #1886
2026-03-23 12:13:59 +08:00
Caize Wu
3a61892313
Merge pull request #1875 from BeaconCat/docs/readme-restructure-v2
docs: restructure README with Quick Start Guide, i18n, and Weixin channel
2026-03-23 10:30:05 +08:00
BeaconCat
48cba906cd fix: restore missing assets and address Copilot review comments
- Add hardware-banner.jpg, launcher-webui.jpg, launcher-tui.jpg (lost in
  previous force push)
- Add io.LimitReader (1MB) to BaiduSearchProvider response body read
- Add no-results fallback and "Results for: ... (via Baidu Search)" header
- Add api_keys field to Brave and Perplexity tables in fr/ja/pt-br/vi
  tools_configuration.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 10:21:06 +08:00
Mauro
3500080abb
Merge pull request #1891 from RussellLuo/audio-transcription
feat(voice): add audio-model transcription support
2026-03-23 00:23:30 +01:00
RussellLuo
d4e56bc3d5 Fix lint 2026-03-23 07:13:43 +08:00
BeaconCat
4bc64497e3 fix(lint): run golangci-lint fmt to fix golines/gci struct tag formatting
golangci-lint v2.10.1 treats golines as a formatter. Running
`golangci-lint fmt` normalizes struct tag alignment in GLMSearchConfig,
WebToolsConfig, and MCPConfig — removing manual padding that golines
flagged as improperly formatted.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 01:10:09 +08:00
BeaconCat
c786f35b32 fix(lint): fix golines/gci formatting in WebToolsConfig
Run golines then gci to reach a stable state that satisfies both linters.
BaiduSearchConfig field caused gofumpt to re-align the struct, shifting
ToolConfig tag spacing and triggering golines on each subsequent fix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 01:03:49 +08:00
BeaconCat
b150d7d523 fix(lint): fix gci import formatting in config.go
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 00:57:14 +08:00
BeaconCat
30db993993 fix(lint): fix golines line length in WebToolsConfig struct
Remove extra alignment space on ToolConfig field introduced by gofumpt
when BaiduSearchConfig was added, keeping all lines under 120 chars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 00:54:50 +08:00
BeaconCat
60a7098fd3 feat(search): add Baidu Qianfan AI Search provider with i18n docs
- Add BaiduSearchConfig struct and register in WebToolsConfig/defaults
- Insert Baidu Search in priority chain: DuckDuckGo > Baidu > GLM Search
- Use perplexityTimeout (30s) — Qianfan is LLM-based
- Fix response parsing: use references[] field per API spec
- Add baidu_search block to config.example.json

docs: sync configuration.md and README Documentation table across all languages

- Complete truncated configuration.md for fr/ja/pt-br/vi/zh: add Spawn
  async flow diagram, Providers table, Model Configuration (all vendors,
  examples, load balancing, migration), Provider Architecture, Scheduled
  Tasks, and Advanced Topics links
- Add Hooks/Steering/SubTurn entries to Documentation table in all 8
  READMEs (en/zh/fr/id/it/ja/pt-br/vi), ordered before Troubleshooting
- Add Baidu Search row to web search table in all 8 READMEs and
  tools_configuration.md (en + 5 i18n); zh README reorders search
  engines with China-friendly options first
- Add Matrix channel docs translations (fr/ja/pt-br/vi)
- Add Weixin channel to chat-apps.md and all README Channels tables

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 00:51:27 +08:00
RussellLuo
fca01583bf fix(lint): align VoiceConfig env tags 2026-03-23 00:03:44 +08:00
RussellLuo
4d2b244522 refactor(voice): share audio format support and restrict transcriber selection 2026-03-22 23:40:13 +08:00
daming大铭
4d84bd90cd
Merge pull request #1894 from sipeed/refactor/agent
refactor(agent): consolidate Agent model - Phase 1 complete
2026-03-22 23:26:33 +08:00
yinwm
5790d3e9dd docs(it): add model command to CLI Reference 2026-03-22 22:56:51 +08:00
yinwm
6f1737eb73 docs: sync CLI Reference across all README translations
- Add `picoclaw model` command to English README
- Add `picoclaw model` command to Indonesian README

All other translations already had the command.
2026-03-22 22:55:08 +08:00
yinwm
6df5ea170e docs: add picoclaw model command to CLI Reference
The model command was missing from the README CLI Reference table.
2026-03-22 22:48:50 +08:00
yinwm
724cc1bd33 fix: resolve merge conflict markers in README files
Use main branch versions which have complete content.
2026-03-22 22:41:39 +08:00
yinwm
1984bb5bbd fix(test): mock gateway health check in status tests
Two gateway tests were flaky due to race conditions:
- TestGatewayStatusReturnsRestartingDuringRestartGap
- TestGatewayRestartReturnsErrorStatusWhenReplacementFailsToStart

The handleGatewayStatus function calls getGatewayHealth which can
override the test's expected status. By mocking gatewayHealthGet
to return an error, the tests now reliably verify the expected
status values.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 22:21:27 +08:00
yinwm
c48954d32d merge: sync main into refactor/agent 2026-03-22 21:44:17 +08:00
daming大铭
729a878f73
Merge pull request #1636 from lppp04808/feat/subturn-poc
feat(agent): subturn
2026-03-22 21:17:33 +08:00
RussellLuo
92678d1700 docs(voice): Update docs for audio-transcription 2026-03-22 21:04:10 +08:00
Administrator
7868c5811a fix(agent): fix subturn panic result, hard abort rollback, and drain bus exit
- spawnSubTurn: set result=nil on panic instead of constructing a non-nil ToolResult
- HardAbort: roll back session history to initialHistoryLength after Finish()
- drainBusToSteering: switch to non-blocking reads after first message so function
  returns promptly when the inbound channel is empty
- remove obsolete documentation files
2026-03-22 20:35:14 +08:00
RussellLuo
8ad4b9b497 feat(voice): add audio-model transcription support
- Add `AudioModelTranscriber` for model-based audio transcription via LLM providers
- Support selecting a transcription model with `voice.model_name` in config
- Keep Groq transcription as a fallback and move it into dedicated files with focused tests
- Serialize `data:audio/...` media as input_audio for OpenAI-compatible providers
- Improve transcription logging by rendering error fields as strings
- Add coverage for transcriber detection, audio-model behavior, provider audio serialization, and Groq transcription

Fixes #1890.
2026-03-22 20:07:22 +08:00
Administrator
7ba8682ac5 Merge branch 'refactor/agent' into feat/subturn-poc 2026-03-22 19:51:43 +08:00
Administrator
f7f27e237a merge: resolve conflicts between refactor/agent and main 2026-03-22 19:21:58 +08:00
Mauro
2f6f25dc58
Merge pull request #1882 from lc6464/frontend-fix
fix(chat): preserve blank lines and add input hint
2026-03-22 10:48:59 +01:00
daming大铭
809aef87d7
Merge pull request #1885 from alexhoshina/fix-1884-qq-long-audio-file-fallback
fix(qq): send long audio as file
2026-03-22 17:37:29 +08:00
Hoshina
2c317444c5 fix(qq): send long audio as file
Downgrade outbound QQ audio to file upload when it exceeds the 60 second voice limit or its duration cannot be detected.

Refs #1884
2026-03-22 17:19:11 +08:00
lc6464
7eaadfd273
fix(chat): preserve blank lines and add input hint
- Add Tailwind `whitespace-pre-wrap` to the user message bubble of web chat so spaces and blank lines can be rendered correctly.
- Update chat input placeholders in en.json and zh.json to show Enter vs Shift+Enter.
2026-03-22 15:59:19 +08:00
daming大铭
0432facffc
Merge pull request #1863 from alexhoshina/feat/hook-manager
Feat/hook manager
2026-03-22 14:36:07 +08:00
Hua Audio
dd82794255
Feat/weixin openclaw port (#1873)
* init

* fix lint

* fix go test

* update docs

* incorporate pr review

* Update pkg/channels/weixin/weixin.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat(weixin): add media sync and typing support

* test(weixin): cover media and sync helpers

---------

Co-authored-by: zhangmikoto <i@electromaster.me>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Hoshina <hoshina@evaz.org>
2026-03-22 14:23:39 +08:00
daming大铭
04def0f10b
Merge pull request #1844 from afjcjsbx/fix/scope-steering
fix(agent) scope steering
2026-03-22 14:22:43 +08:00
Administrator
482c88cd15 remove merge conflict markers from .gitignore 2026-03-22 13:48:03 +08:00
Administrator
88d754b172 merge main 2026-03-22 13:47:14 +08:00
daming大铭
931eee92a0
Merge pull request #1853 from kunalk16/feat-configurable-logger
feat(logging): add configurability for log levels preference
2026-03-22 13:27:06 +08:00
Caize Wu
9107740781
Merge pull request #1857 from lc6464/main
docs: clean up README and update QRCode
2026-03-22 11:12:30 +08:00
Mauro
c0bb8d6df9
Merge pull request #1617 from yzxlr/codex/fix-1561-heartbeat-template-idle
fix(heartbeat): ignore untouched default template
2026-03-21 20:18:39 +01:00
Mauro
e6ea9c4ff3
Merge pull request #1855 from badgerbees/fix/telegram-group-id-validation
fix(identity): support negative integers in isNumeric for Telegram group IDs
2026-03-21 20:16:49 +01:00
Mauro
7a47d7a55c
Merge pull request #1782 from biisal/chore/docker-data-in-gitignore
chore: Ignore the `docker/data` directory.
2026-03-21 19:52:25 +01:00
Mauro
5286464bfc
Merge pull request #1861 from amirmamaghani/feat/agent-browser-skill-heavy-dockerfile
feat: add agent-browser skill and Dockerfile.heavy
2026-03-21 19:47:07 +01:00
daming大铭
3cd674e3b8
Merge pull request #1865 from sipeed/revert-1752-feat/exec-tool-enhancement
Revert "feat(tools): add exec tool enhancement with background execution and PTY support"
2026-03-22 00:46:56 +08:00
daming大铭
ebcd5645f1
Revert "feat(tools): add exec tool enhancement with background execution and …"
This reverts commit f901af8cbc.
2026-03-22 00:39:47 +08:00
Administrator
24d6cb5272 Merge branch 'upstream-main' into feat/subturn-poc 2026-03-21 23:42:25 +08:00
Hoshina
9978c9550b docs(hooks): inline and translate hook examples 2026-03-21 23:18:29 +08:00
Liu Yuan
f901af8cbc
feat(tools): add exec tool enhancement with background execution and PTY support (#1752)
- Unified exec tool with actions: run/list/poll/read/write/send-keys/kill
- PTY support using creack/pty library
- Process session management with background execution
- Process group kill for cleaning up child processes
- Session cleanup: 30-minute TTL for old sessions
- Output buffer: 100MB limit with truncation

Actions:
- run: execute command (sync or background)
- list: list all sessions
- poll: check session status
- read: read session output
- write: send input to session stdin
- send-keys: send special keys (up, down, ctrl-c, enter, etc.)
- kill: terminate session

Tests:
- PTY: allowed commands, write/read, poll, kill, process group kill
- Non-PTY: background execution, list, read, write, poll, kill, process group kill
- Session management: add/get/remove/list/cleanup
2026-03-21 22:38:03 +08:00
Amir Mamaghani
520391643b feat: add agent-browser skill and Dockerfile.heavy with full runtime
Add agent-browser skill to the default workspace with complete CLI
reference for browser automation via Chrome/Chromium CDP. The skill
includes a runtime guard that checks for the binary before use.

Add Dockerfile.heavy — a batteries-included container image with:
- Node.js 24 + npm
- Python 3 + pip + uv
- Chromium + Playwright (for agent-browser)
- agent-browser CLI pre-installed
- Non-root picoclaw user (UID/GID 1000)
- Default workspace with all skills
- Persistent workspace volume

This complements the existing minimal Dockerfile and Dockerfile.full
for deployments that need browser automation and rich tool support.
2026-03-21 15:14:32 +01:00
Hoshina
337e43e5a5 feat(agent): add configurable hook mounting 2026-03-21 19:46:16 +08:00
Hoshina
cf68c91eca feat(agent): add hook manager foundation 2026-03-21 19:15:10 +08:00