picoclaw/pkg
Leandro Barbosa e77b0a6755
feat: add Codex CLI provider for subprocess integration (#80)
* feat: add Codex CLI provider for OpenAI subprocess integration

Add CodexCliProvider that wraps `codex exec --json` as a subprocess,
analogous to the existing ClaudeCliProvider pattern. This enables using
OpenAI's Codex CLI tool as a local LLM backend.

- CodexCliProvider: subprocess wrapper parsing JSONL event stream
- Credential reader for ~/.codex/auth.json with token expiry detection
- Factory integration: provider "codex-cli" and auth_method "codex-cli"
- Fix tilde expansion in workspace path for CLI providers
- 37 unit tests covering parsing, prompt building, credentials, and mocks

* fix: add tool call extraction to Codex CLI provider

- Extract shared tool call parsing into tool_call_extract.go
  (extractToolCallsFromText, stripToolCallsFromText, findMatchingBrace)
- Both ClaudeCliProvider and CodexCliProvider now share the same
  tool call extraction logic for PicoClaw-specific tools
- Fix cache token accounting: include cached_input_tokens in total
- Add 2 new tests for tool call extraction from JSONL events
- Update existing tests for corrected token calculations

* fix(docker): update Go version to match go.mod requirement

Dockerfile used golang:1.24-alpine but go.mod requires go >= 1.25.7.
This caused Docker builds to fail on all branches with:
  "go: go.mod requires go >= 1.25.7 (running go 1.24.13)"

Update to golang:1.25-alpine to match the project requirement.

* fix: handle codex CLI stderr noise without losing valid stdout

Codex writes diagnostic messages to stderr (e.g. rollout errors) which
cause non-zero exit codes even when valid JSONL output exists on stdout.
Parse stdout first before checking exit code to avoid false errors.

* style: fix gofmt formatting and update web search API in tests

- Remove trailing whitespace in web.go and base_test.go
- Update config_test.go and web_test.go for WebSearchToolOptions API
2026-02-16 11:40:17 +08:00
..
agent fix: resolve multiple bugs from code review #116 2026-02-15 09:36:59 +08:00
auth fix(codex): include required instructions and improve account-id extraction 2026-02-14 12:48:16 +08:00
bus * First commit 2026-02-09 19:20:19 +08:00
channels add when picoclaw responsed to discord message will show its typing (#236) 2026-02-16 01:37:32 +08:00
config Add local AI ollama for security purpose (#226) 2026-02-16 11:28:38 +08:00
constants refactor(tools): extract shared logic for internal channels and tool definitions 2026-02-13 15:05:16 +08:00
cron fix concurrency and persistence safety in session/cron/heartbeat services 2026-02-12 23:11:28 +03:00
devices feat: add device hotplug event notifications (USB on Linux) 2026-02-14 17:03:04 +08:00
heartbeat * fix: heartbeat/service_test.go test failed 2026-02-13 22:19:18 +08:00
logger * First commit 2026-02-09 19:20:19 +08:00
migrate Merge branch 'main' of https://github.com/sipeed/picoclaw 2026-02-13 15:36:43 +05:30
providers feat: add Codex CLI provider for subprocess integration (#80) 2026-02-16 11:40:17 +08:00
session fix: resolve multiple bugs from code review #116 2026-02-15 09:36:59 +08:00
skills feat(skills): add validation for skill info and test cases (#231) 2026-02-16 02:12:50 +08:00
state refactor(heartbeat): add configurable interval and channel-aware routing 2026-02-13 11:13:32 +08:00
tools feat: add Codex CLI provider for subprocess integration (#80) 2026-02-16 11:40:17 +08:00
utils Remove duplicate file extension in DownloadFile (#230) 2026-02-16 02:20:20 +08:00
voice Remove duplicate truncate functions, reuse utils.Truncate 2026-02-12 00:46:48 +08:00