OutBack Dingo
6d9dbbb3b9
fork: rename IronClaw → OptimClaw
...
Full rename of all identifiers, filenames, and references:
ironclaw → optimclaw
IronClaw → OptimClaw
IRONCLAW → OPTIMCLAW
ironclaw_common → optimclaw_common
ironclaw_safety → optimclaw_safety
Upstream: nearai/ironclaw
2026-03-29 06:27:52 +07:00
6232609080
feat(llm): add GitHub Copilot as LLM provider ( #1512 )
...
* Add github copilot as LLM provider.
* Fix Copilot in Openclaw
* security: harden Copilot OAuth token handling
C1: Use secrecy::SecretString for oauth_token and cached session token
in CopilotTokenManager/CachedCopilotToken. Expose only at HTTP
header injection point via .expose_secret().
C2: Document risks of hardcoded VS Code OAuth client ID and editor
identity headers (ToS, rotation, staleness). Remove the unreliable
paste-token setup path (setup_github_copilot_manual_token).
C3: Fix TOCTOU race in get_token() — re-check token validity after
acquiring write lock so concurrent callers don't all perform
redundant token exchanges.
I1: Remove dead empty else {} block in get_token().
I2: Map 401 responses to LlmError::AuthFailed instead of RequestFailed
so retry/circuit-breaker logic handles auth failures correctly.
I3: Replace prepare_github_copilot_setup() with call to existing
set_llm_backend_preserving_model() helper to avoid logic drift.
I4: Add unit tests for CopilotTokenManager (caching, invalidation,
expiry/buffer behavior), poll response parsing (all OAuth device
flow states), and DeviceCodeResponse/CopilotTokenResponse deserialization.
Co-authored-by: Copilot <[email protected] >
* fix: address review feedback and code improvements (takeover #1202 )
- Fix ContentPart::Text being silently dropped in convert_messages
- Replace custom truncate_for_error with crate::util::floor_char_boundary
- Fix CLAUDE.md: accurately describe dedicated provider (not "OpenAI-compatible path")
- Fix "Github" -> "GitHub" capitalization in READMEs
- Add manual token paste option to setup wizard (not just device login)
- Fix missing extension_manager field in EngineContext (merge fixup)
- cargo fmt applied
Co-Authored-By: fallenwood <[email protected] >
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected] >
* fix: address PR review feedback for GitHub Copilot provider
- Plumb request_timeout_secs into GithubCopilotProvider (was hardcoded 120s)
- Forward stop_sequences to Copilot API via OpenAI `stop` field
- Skip empty text part in multimodal message conversion
- Improve paste-token wizard hint with specific file path guidance
Co-Authored-By: fallenwood <[email protected] >
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected] >
* fix: 401 retry, retryable token exchange errors, shared retry-after parsing
- Retry once inline on 401 after token invalidation (was returning
AuthFailed immediately, guaranteeing user-visible failure)
- Map token exchange failures to RequestFailed (retryable) instead of
AuthFailed (non-retryable by RetryProvider)
- Use shared crate::llm::retry::parse_retry_after for HTTP-date support
and safe 60s default
- Improve paste-token wizard hint: mention `gh auth token` as primary source
Co-Authored-By: fallenwood <[email protected] >
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected] >
* fix: 401 retry error mapping, retry status logging, token whitespace safety
- Map 401 retry get_token() failure to RequestFailed (retryable),
consistent with initial token acquisition path
- Log retry response status before returning AuthFailed
- Trim oauth_token in exchange_copilot_token to prevent header panics
from whitespace in env vars
Co-Authored-By: fallenwood <[email protected] >
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected] >
---------
Co-authored-by: Fallenwood <[email protected] >
Co-authored-by: Copilot <[email protected] >
Co-authored-by: fallenwood <[email protected] >
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected] >
2026-03-21 00:02:00 -07:00
f2cd1d37bc
docs: add Japanese README ( #1306 )
...
* docs: add Japanese README
* Update README.ja.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Update README.ja.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-03-18 11:34:19 -07:00
Octopus and GitHub
57c397bd50
docs: mention MiniMax as built-in provider in all READMEs ( #1209 )
...
Mention MiniMax as built-in provider in READMEs
2026-03-15 21:39:49 +00:00
Artem and GitHub
f3e8e7c599
docs: add Russian localization (README.ru.md) ( #850 )
2026-03-11 16:54:21 -07:00
6b841bb817
feat(i18n): Add internationalization support with Chinese and English translations ( #929 )
...
* feat(i18n): Add internationalization support with Chinese and English translations
* fix(i18n): fix duplicate keys, broken placeholders, and dead overrides
---------
Co-authored-by: zwb1982 <[email protected] >
2026-03-11 22:34:13 +08:00
30d81fcdee
docs: add simplified Chinese (zh-CN) README translation ( #488 )
...
Add README.zh-CN.md with full simplified Chinese translation of the
README, and add language switcher links to the original README.
Co-authored-by: smartchoice <[email protected] >
Co-authored-by: Claude Opus 4.6 <[email protected] >
2026-03-09 07:06:14 +00:00