Commit Graph

4553 Commits

Author SHA1 Message Date
Peter Steinberger 08ed62852a chore: update deps and pi model discovery 2026-01-31 06:45:57 +01:00
Shakker 3c8fa0f913 fix: remove unused variables and fix template literal type 2026-01-31 05:18:27 +00:00
Shakker b1d25ed0dd feat: automated completion setup in postinstall and onboarding 2026-01-31 05:18:27 +00:00
Shakker 48aaf6ce4e fix: suppress banner and doctor checks for completion command 2026-01-31 05:18:27 +00:00
Shakker beafaef92f feat: implement completion command and shell generators 2026-01-31 05:18:27 +00:00
Shakker 14c77f8295 feat: add completion subcommand to generate shell completion scripts for Zsh, Bash, PowerShell, and Fish. 2026-01-31 05:18:27 +00:00
Mario Zechner bf15d0a3f5 Auth: switch Kimi Coding to built-in provider 2026-01-31 06:04:10 +01:00
Mario Zechner ca47b0d79c OAuth: normalize profile email 2026-01-31 05:26:18 +01:00
Mario Zechner 9b1a6b30d9 Tests: update pi SDK mocks 2026-01-31 05:23:53 +01:00
Ayaan Zaidi 310eed825e fix: preserve delivery thread fallback (#4911) (thanks @yevhen) 2026-01-31 09:31:40 +05:30
Yevhen Bobrov a642ca4ea8 Fix telegram threadId in deliveryContext 2026-01-31 09:31:40 +05:30
Ayaan Zaidi e849df64dc fix: normalize telegram account token lookup (#5055) (thanks @jasonsschin) 2026-01-31 08:58:04 +05:30
jasonsschin e913de0720 Fix Telegram token resolution for non-normalized accountId keys 2026-01-31 08:58:04 +05:30
Mario Zechner c0a6e675a3 Agents: update pi dependencies to 0.50.7 2026-01-31 04:20:12 +01:00
Evan Otero c67df653b6
fix(security): restrict local path extraction in media parser to prevent LFI (#4880)
* Media: restrict local path extraction to prevent LFI

* Lint: remove unused variable hasValidMediaOnLine
2026-01-31 03:44:11 +01:00
Tyler Yust 57248a7ca1
fix: prefer requesterOrigin over stale session entry in subagent announce routing (#4957)
* fix: prefer requesterOrigin over stale session entry in subagent announce routing

When a subagent finishes and announces results back, resolveAnnounceOrigin
merged the session entry (primary) with requesterOrigin (fallback). If the
session store had a stale lastChannel (e.g. whatsapp) from a previous
interaction but the user was now on a different channel (e.g. bluebubbles),
the announce would route to the wrong channel.

Swap the merge order so requesterOrigin (captured at spawn time, reflecting
the actual current channel) takes priority, with the session entry as
fallback for any missing fields.

Error before fix:
  Delivery failed (whatsapp to bluebubbles:chat_guid:...): Unknown channel: whatsapp

Adds regression test for the stale-channel scenario.

* fix: match test to exact failure scenario and improve reliability (#4957) (thanks @tyler6204)

- Remove lastTo from stale session store to match the exact mismatch scenario described in the PR
- Replace 5ms setTimeout sleeps with expect.poll for better test reliability
- Prevents flakiness on slower CI machines
2026-01-30 15:52:19 -08:00
Gustavo Madeira Santana 34bdbdb405 fix: resolve Control UI assets for global installs (#4909) (thanks @YuriNachos)
Co-authored-by: YuriNachos <YuriNachos@users.noreply.github.com>
2026-01-30 17:08:40 -05:00
Yurii Chukhlib aa3a8ea869 fix(infra): resolve control-ui assets on npm global install (#4855) 2026-01-30 17:06:58 -05:00
Gustavo Madeira Santana 39eb0b7bc0 fix: prevent undefined gateway token defaults (#4873) (thanks @Hisleren)
Co-authored-by: Hisleren <Hisleren@users.noreply.github.com>
2026-01-30 16:16:35 -05:00
Gustavo Madeira Santana e5a95b5b66 fix: local updates for PR #4873
Co-authored-by: Hisleren <Hisleren@users.noreply.github.com>
2026-01-30 16:16:35 -05:00
Hisleren 201d7fa956 fix(security): prevent gateway token from defaulting to 'undefined' string 2026-01-30 16:16:35 -05:00
Gustavo Madeira Santana f24e3cdae5 fix: local updates for PR #4780
Co-authored-by: jlowin <jlowin@users.noreply.github.com>
2026-01-30 15:47:05 -05:00
Jeremiah Lowin dd4715a2c4 CLI: add --agent flag to models status 2026-01-30 15:47:05 -05:00
Peter Steinberger fd00d5688a chore: update openclaw naming 2026-01-30 21:03:11 +01:00
Josh Palmer 6522de6ce0 Tests: use agents_list in tools invoke gateway test
What: swap sessions_list for agents_list in /tools/invoke tests
Why: avoid nested gateway calls that can hang under CI; still validates tool invocation + allowlist
Tests: not run (CI should cover)
2026-01-30 18:17:12 +01:00
Ayush Ojha 37e295fc02
fix: don't warn about expired OAuth tokens with valid refresh tokens (#4593)
OAuth credentials with a refresh token auto-renew on first API call,
so the doctor should not warn about access token expiration when a
refresh token is present. This avoids unnecessary "expired" warnings
that prompt users to re-auth when no action is needed.

Fixes #3032

Co-authored-by: Ayush Ojha <ayushozha@outlook.com>
2026-01-30 15:39:17 +00:00
Ayaan Zaidi da71eaebd2 fix: correct telegram html nesting (#4578) (thanks @ThanhNguyxn) 2026-01-30 16:53:39 +05:30
ThanhNguyxn 8e5a684445 style: format test file 2026-01-30 16:53:39 +05:30
ThanhNguyxn b05d57964b fix(telegram): properly nest overlapping HTML tags (#4071)
Unify style and link closing in render.ts to use LIFO order across
both element types, fixing cases where bold/italic spans containing
autolinks produced invalid HTML like <b><a></b></a>.
2026-01-30 16:53:39 +05:30
Ayaan Zaidi bc432d8435 fix: accept numeric Telegram react ids (#4533) (thanks @Ayush10) 2026-01-30 15:01:18 +05:30
Ayush Ojha f760aa302c fix(telegram): react action accepts numeric messageId and chatId
The react action used readStringParam for messageId and chatId, which
rejected numeric values with a misleading "messageId required" error.
Switched to readStringOrNumberParam to match the delete/edit actions.

Closes #1459

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:56:53 +05:30
Ayaan Zaidi 3a85cb1833 fix: honor Telegram proxy dispatcher (#4456) (thanks @spiceoogway) 2026-01-30 14:38:39 +05:30
spiceoogway 7150268f84 fix(telegram): use undici fetch for proxy to fix dispatcher option
Fixes #4038

The global fetch in Node.js doesn't support undici's dispatcher option,
which is required for ProxyAgent to work. This fix imports fetch from
undici directly to enable proper proxy support for Telegram API calls.

Root cause: makeProxyFetch() was using global fetch with { dispatcher: agent },
but Node.js's global fetch ignores the dispatcher option. Using undici.fetch
ensures the ProxyAgent dispatcher is properly respected.

Tested: Build passes, TypeScript compilation successful.
2026-01-30 14:37:47 +05:30
Ayaan Zaidi 9025da2296 fix: scope telegram skill commands per bot (#4360) (thanks @robhparker) 2026-01-30 12:00:29 +05:30
robhparker c6ddc95fc0 fix(telegram): scope skill commands to bound agent per bot
registerTelegramNativeCommands() calls listSkillCommandsForAgents()
without passing agentIds, causing ALL agents' skill commands to be
registered on EVERY Telegram bot. When multiple agents share skill
names (e.g. two agents both have a "butler" skill), the shared `used`
Set in listSkillCommandsForAgents causes de-duplication suffixes
(_2, _3) and all commands appear on every bot regardless of agent
binding.

This fix uses the existing resolveAgentRoute() (already imported) to
find the bound agent for the current Telegram accountId, then passes
that agentId to listSkillCommandsForAgents(). The function already
accepts an optional agentIds parameter — it just wasn't wired from
the Telegram registration path.

Before: All agents' skill commands registered on every Telegram bot,
causing /butler_2, /housekeeper_2 dedup suffixes and potential
BOT_COMMANDS_TOO_MUCH errors when total exceeds 100.

After: Each Telegram bot only registers skill commands for its own
bound agent. No cross-agent dedup, no command limit overflow.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:58:23 +05:30
Manik Vahsith 5e635c9656
feat: add Kimi K2.5 model to synthetic catalog (#4407)
* feat: add Kimi K2.5 model to synthetic catalog

Add hf:moonshotai/Kimi-K2.5 to the synthetic model catalog.
This model is available via dev.synthetic.new API.

- 256k context window
- 8192 max tokens
- Supports reasoning

* chore: fix formatting in onboard-helpers.ts

* fix: update config candidate ordering test (#4407) (thanks @manikv12)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-30 07:17:42 +01:00
Gustavo Madeira Santana 4ec9d98821 Update ASCII art banners for CLI and wizard header
Replaces the previous ASCII art in both the CLI banner and the wizard header with a new, wider design and updates the label to 'OPENCLAW' for consistency.
2026-01-29 23:29:47 -05:00
Peter Steinberger 151ddd624b fix: detect legacy gateway launchd labels 2026-01-30 05:01:46 +01:00
Peter Steinberger b9afa3d33f fix: migrate symlinked legacy state dirs 2026-01-30 04:48:04 +01:00
Peter Steinberger 9886fd1a5a fix: migrate legacy state dirs 2026-01-30 04:26:00 +01:00
Peter Steinberger a155e2f8ae fix: migrate legacy config 2026-01-30 04:09:49 +01:00
Peter Steinberger 02576615cb fix: migrate legacy gateway services 2026-01-30 04:01:31 +01:00
Peter Steinberger d47b4e6f81 fix: update config types 2026-01-30 03:20:28 +01:00
Peter Steinberger 9a7160786a refactor: rename to openclaw 2026-01-30 03:16:21 +01:00
Shakker 4583f88626 fix: preserve reasoning tags inside code blocks (#4118) (thanks @vinaygit18) 2026-01-29 18:53:05 +00:00
Peter Steinberger 78b9876641 feat: add Xiaomi MiMo provider onboarding (#3454)
Thanks @WqyJh.

Co-authored-by: Qiying Wang <15232241+WqyJh@users.noreply.github.com>
2026-01-29 17:29:58 +00:00
Vibe Kanban 50d44d0bd9 feat: support xiaomi/mimo-v2-flash 2026-01-29 17:15:51 +00:00
Peter Steinberger 06289b36da fix(security): harden SSH target handling (#4001)
Thanks @YLChen-007.

Co-authored-by: Edward-x <YLChen-007@users.noreply.github.com>
2026-01-29 16:33:36 +00:00
Josh Palmer 4b5514a259 Tests: default-disable plugins in VITEST 2026-01-29 17:14:14 +01:00
Josh Palmer 5f4715acfc fix flaky gateway tests in CI
What:
- resolve shell from PATH in bash-tools tests (avoid /bin/bash dependency)
- mock DNS for web-fetch SSRF tests (no real network)
- stub a2ui bundle in canvas-host server test when missing

Why:
- keep gateway test suite deterministic on Nix/Garnix Linux

Tests:
- not run locally (known missing deps in unit test run)
2026-01-29 12:14:27 +01:00