Commit graph

369 commits

Author SHA1 Message Date
Leandro Barbosa
f820da42d7 docs: add Brazilian Portuguese README (README.pt-br.md)
Add complete pt-BR translation of the README and update language
navigation links across all existing READMEs (English, Chinese,
Japanese) to include the Portuguese option.
2026-02-17 17:52:28 -03:00
Artem Yadelskyi
0785a05a48
Merge branch 'main' into golangci-lint 2026-02-17 20:20:22 +02:00
AlbertBui010
8428446d69 docs: fix allow_from typo in config examples 2026-02-18 00:17:56 +07:00
QUY BUI QUANG
2ee2858912
Merge branch 'main' into docs/add-vietnamese-readme 2026-02-17 23:46:19 +07:00
AlbertBui010
b83304845e docs: resolve conflict in README.ja.md 2026-02-17 23:39:17 +07:00
Jared Mahotiere
c4cbb5fb35 providers: finalize PR213 review fixes
Phase 1: centralize protocol message/tool/response types in protocoltypes and keep compatibility aliases in providers and protocol packages.

Phase 1: preserve HTTPProvider constructor compatibility and route Anthropic api_base through factory auth/provider constructors with base URL normalization.

Phase 2: expand provider routing/auth tests (deepseek/nvidia/shengsuanyun, codex/claude oauth/codex-cli) and add openai_compat + anthropic coverage for proxy transport, model normalization, numeric option coercion, token-source refresh, and base URL behavior.

Phase 3: apply gofmt and validate with Dockerized tests (go test ./pkg/providers/... ./pkg/migrate and go test ./...).
2026-02-17 11:13:10 -05:00
Leandro Barbosa
ba47892bcf
Merge pull request #327 from humaid0x/fix-japanese-readme-link
docs: add missing Chinese language link to Japanese README
2026-02-17 13:12:47 -03:00
Leandro Barbosa
4fde0175cf
Merge pull request #227 from mattn/fix-shadowing-running
Fix shadowing field runnnig
2026-02-17 12:58:48 -03:00
zenix.huang
0d16525fab fix: codex tool call 2026-02-17 22:56:31 +08:00
zenix.huang
4cd3f99dd6 fix: remove max_tokens 2026-02-17 22:56:31 +08:00
Jared Mahotiere
e3c246a36f Merge origin/main into refactor/provider-protocol-122 2026-02-17 09:28:56 -05:00
Boris Bliznioukov
2d876eaa98
feat(goreleaser): enhance build flags with versioning and commit info
Signed-off-by: Boris Bliznioukov <blib@mail.com>
2026-02-17 15:00:06 +01:00
Boris Bliznioukov
2d758d714f
feat(goreleaser): add 'stdjson' tag to picoclaw build configuration
Signed-off-by: Boris Bliznioukov <blib@mail.com>
2026-02-17 14:55:37 +01:00
lxowalle
920e30a241
fix:pr-272 reverted the changes from pr-227 (#361) 2026-02-17 21:31:54 +08:00
Boris Bliznioukov
ad747e8e89
fix(Makefile): update LDFLAGS and GOFLAGS for optimized build size
Signed-off-by: Boris Bliznioukov <blib@mail.com>
2026-02-17 14:27:03 +01:00
daming大铭
7b9b8104c8
Merge pull request #225 from yinwm/feat/cron-exec-timeout-config
feat(cron): add configurable execution timeout for cron jobs
2026-02-17 21:12:59 +08:00
yinwm
881999aceb refactor(shell): interpret zero timeout as unlimited execution
Replace unconditional WithTimeout usage with conditional context creation
based on timeout configuration. Zero values now bypass timeout enforcement,
using WithCancel for graceful cancellation while preserving existing timeout
behavior for positive values. Simplifies CronTool initialization by removing
unnecessary conditional timeout assignment.
2026-02-17 21:10:20 +08:00
Hua Audio
f929268ab2
feat: Add Perplexity search provider integration (#138)
* feat: Add Perplexity search provider integration

- Add PerplexityConfig struct to config package
- Add PerplexitySearchProvider implementing SearchProvider interface
- Update WebSearchTool to support Perplexity with priority system (Perplexity > Brave > DuckDuckGo)
- Update agent loop to pass Perplexity config options
- Update config.example.json with Perplexity configuration template
- Uses Perplexity's 'sonar' model for web search capabilities

* Edit config example

* make fmt

---------

Co-authored-by: Hua <zhangmikoto@gmail.com>
2026-02-17 21:02:56 +08:00
yinwm
684e7413e1 Merge remote-tracking branch 'origin/main' into feat/cron-exec-timeout-config 2026-02-17 20:53:31 +08:00
zepan
da79c201c7 1. fix typo 2026-02-17 18:03:02 +08:00
zepan
5fb2721d22 1. add android phone termux quick guide 2026-02-17 18:01:39 +08:00
zepan
951b05d255 1. add AI Code Generation selection in pr template 2026-02-17 17:15:40 +08:00
zepan
ac4b16dfb4 1. rename doc to docs 2026-02-17 16:51:38 +08:00
zepan
0fadbcd340 1. add roadmap.md 2026-02-17 16:03:07 +08:00
Guoguo
a961a2df87
fix(ci): use env var for release tag (#342)
Signed-off-by: Guoguo <i@qwq.trade>
2026-02-17 14:32:51 +08:00
yuchou87
e38364b08a build(docker): migrate full image from Debian to Alpine base
Replace node:24-bookworm-slim with node:24-alpine3.23 to reduce
image size and improve build efficiency.

Changes:
- Base image: node:24-bookworm-slim → node:24-alpine3.23
- Package manager: apt-get → apk
- Package names: python3-pip → py3-pip
- Remove python3-venv (included in Alpine Python3)
- Use apk --no-cache for cleaner image layers

Expected benefits:
- Reduce base image size by ~100-200MB (30-40% reduction)
- Faster image pulls and container startup
- Full MCP support maintained (Node.js, Python, uv)

Estimated final image size: ~600-700MB (vs ~800MB before)
2026-02-17 10:57:38 +08:00
yuchou87
4113190c2a chore(config): remove example MCP servers from default config
Remove pre-populated example servers (filesystem, github, brave-search,
postgres) from DefaultConfig() to reduce memory footprint per instance.

Changes:
- Set MCP.Servers to empty map instead of 4 example servers
- Reduces default config size by ~500 bytes per instance
- Users should add MCP servers via config.json or documentation

Example configurations are still available in:
- README.md MCP section
- config.example.json
- Official MCP documentation

This optimization benefits deployments with many agent instances.
2026-02-17 10:41:29 +08:00
yuchou87
6892d006d6 perf(agent): reduce memory footprint by storing minimal MCP dependencies
Replace full *config.Config reference with config.MCPConfig value type
in AgentLoop to allow garbage collection of unused configuration data.

Changes:
- AgentLoop now stores only MCPConfig and workspacePath (minimal deps)
- Add mcp.Manager.LoadFromMCPConfig() for minimal dependency version
- Keep LoadFromConfig() for backward compatibility
- Full Config object can be GC'd after NewAgentLoop() returns

This optimization reduces memory usage by not holding references to
unused channel, provider, gateway, and device configurations.
2026-02-17 10:39:39 +08:00
AlbertBui010
75fb728a11 docs: add Vietnamese README (README.vi.md)
- Add full Vietnamese translation of README.md
- Update language selector links in README.md, README.zh.md, README.ja.md
2026-02-17 09:17:03 +07:00
zepan
57dac394c5 update pr template 2026-02-17 09:30:30 +08:00
Humaid Koreshi
ff3c875b3f docs: add missing Chinese language link to Japanese README 2026-02-17 02:15:59 +06:00
Artem Yadelskyi
67d07109a9
feat(linters): Removed fmt check (present in linters) 2026-02-16 17:15:02 +02:00
Artem Yadelskyi
552d6f10ea
Merge branch 'main' into golangci-lint 2026-02-16 17:14:19 +02:00
Artem Yadelskyi
d9b5f64777
feat(linters): Temporarily disable most linters 2026-02-16 17:13:35 +02:00
Leandro Barbosa
12007b5670 merge: sync upstream/main into feat/multi-agent-routing
Resolve conflicts:
- pkg/agent/loop.go: integrate context compression, command handling,
  utf8 token estimation, and summarization notification into
  multi-agent routing architecture
- pkg/config/config_test.go: merge imports from both branches
- pkg/agent/loop_test.go: update test to use registry-based sessions
2026-02-16 10:34:55 -03:00
zepan
13e4028d42 1. update wechat group qrcode 2. publish roadmap 2026-02-16 20:10:20 +08:00
yuchou87
0f6fadb445 fix(agent): register MCP tools after server initialization
Critical bug fix:
- MCP tools were never registered because servers loaded in Run()
  but tool registration happened in NewAgentLoop() with empty manager
- Move MCP tool registration from createToolRegistry to Run()
- Register MCP tools for both main agent and subag after successful server loading
- Add subagentManager field to AgentLoop for dynamic registration
- Add tool_count logging for better observability

This ensures MCP tools are properly available to both agent and subagents.
2026-02-16 20:00:37 +08:00
yuchou87
2318232b71 fix(agent): ensure MCP cleanup on all Run() exit paths
- Add defer in Run() to guarantee MCP connection cleanup
- Handles both normal termination and context cancellation
- Prevents resource leaks when Run() exits via ctx.Done()
- MCP Manager.Close() is idempotent, safe to call from both defer and Stop()

This fixes GitHub Copilot feedback that MCP cleanup only happened in
Stop() but Run() could return on ctx.Done() without cleanup, causing
subprocess/session leaks on normal cancellation shutdown.
2026-02-16 19:56:00 +08:00
yuchou87
aed7296c0d fix(agent): tie MCP connections to agent lifecycle context
- Defer MCP server initialization to Run() using agent's context
- Add mcpConfig and mcpInitOnce fields to AgentLoop
- Use sync.Once to ensure MCP loads exactly once with proper context
- Prevents orphaned subprocesses and resource leaks on cancellation

This fixes GitHub Copilot feedback that MCP connections with
context.Background() won't terminate when the agent stops, causing
potential resource leaks and orphaned stdio/SSE connections.
2026-02-16 19:53:15 +08:00
Artem Yadelskyi
d69ef653df
feat(linters): Added job names 2026-02-16 13:51:10 +02:00
yuchou87
02c1792015 fix(tools): preserve MCP tool InputSchema via JSON marshal/unmarshal
- Handle json.RawMessage and []byte types by direct unmarshal
- Use JSON marshal/unmarshal for struct types to preserve schema
- Add test case for json.RawMessage schema
- Fixes issue where non-map schemas returned empty object

This fixes GitHub Copilot feedback that Parameters() was dropping
tool schema when InputSchema wasn't already map[string]interface{}
2026-02-16 19:50:00 +08:00
Artem Yadelskyi
35670d5a58
feat(linters): Added golangci-lint config & CI job 2026-02-16 13:45:36 +02:00
yuchou87
20f8bb200b refactor(tools): use MCPManager interface in NewMCPTool constructor
- Change NewMCPTool to accept MCPManager interface instead of concrete *mcp.Manager
- Remove unused mcpPkg import from mcp_tool.go
- Remove newMCPToolForTest helper function as NewMCPTool now accepts interface
- Update all tests to use NewMCPTool directly with MockMCPManager
- Improves testability and follows dependency inversion principle
2026-02-16 19:43:05 +08:00
yuchou87
a026d56c0f chore(deps): consolidate indirect require for uritemplate
- Move standalone indirect require line into existing require block
- Maintain alphabetical ordering of dependencies
- Keep module file stable and avoid churn
2026-02-16 19:40:14 +08:00
yuchou87
a4265b3f16 fix(mcp): resolve relative envFile paths against workspace directory
- Resolve relative envFile paths relative to workspace instead of CWD
- Add filepath import for path operations
- Pass workspace path to goroutines for path resolution
- Improves portability in Docker environments where CWD may vary
- Absolute envFile paths continue to work as before
2026-02-16 19:38:27 +08:00
yuchou87
77d26e5ce3 fix(mcp): return aggregated error when all servers fail to connect
- Add errors.Join to return aggregated error when all enabled MCP servers fail
- Track enabled server count separately from total configured servers
- Return error only when all servers fail, not for partial failures
- Improve logging with accurate server counts (enabled vs connected)
- Maintains fault tolerance: partial failures don't stop initialization
2026-02-16 19:33:31 +08:00
Caize Wu
e7f15afdd4
Update issue templates 2026-02-16 19:17:27 +08:00
yuchou87
24610693e4 chore(docker): add execute permission to test script
Make scripts/test-docker-mcp.sh executable
2026-02-16 16:40:35 +08:00
yuchou87
87e0336d62 chore(deps): format go.mod
Add blank line for better formatting consistency
2026-02-16 16:38:21 +08:00
yuchou87
acb974fcf1 Merge branch 'main' into mcp-tools-support 2026-02-16 16:37:24 +08:00