Commit Graph

29552 Commits

Author SHA1 Message Date
joshavant ca21090455 UI: characterize agents panel routing and extract selection reset helper 2026-04-09 22:59:22 -05:00
joshavant c097ba3fc2 UI: characterize settings URL combos and trim loader flow 2026-04-09 22:59:22 -05:00
joshavant 2965dbd61c UI: simplify logs payload field assignment 2026-04-09 22:59:22 -05:00
joshavant 6b4675c981 UI: tighten settings URL and usage guard paths 2026-04-09 22:59:22 -05:00
joshavant a6178ca1f3 UI: combine usage controller early-return guards 2026-04-09 22:59:22 -05:00
joshavant c882d40187 UI: reduce logs controller quiet-mode branching 2026-04-09 22:59:22 -05:00
joshavant 594de84d04 UI: simplify usage request and error serialization helpers 2026-04-09 22:59:22 -05:00
joshavant 3b3b16b3f0 UI: compact log parsing branch logic 2026-04-09 22:59:22 -05:00
joshavant 0dadc7f35f UI: reuse selected agent resolution in render flow 2026-04-09 22:59:22 -05:00
joshavant 48955416db UI: dedupe agents panel supplemental refresh routing 2026-04-09 22:59:22 -05:00
joshavant 57d40a415a UI: streamline cron page loading toggles 2026-04-09 22:59:22 -05:00
joshavant 2fde93c9e4 UI: trim app-settings control flow noise 2026-04-09 22:59:22 -05:00
joshavant 4a44071296 UI: dedupe agent files reset in render flow 2026-04-09 22:59:22 -05:00
joshavant f136a8159c UI: simplify active-tab refresh routing 2026-04-09 22:59:22 -05:00
joshavant 393c791466 UI: remove redundant cron refresh wrapper 2026-04-09 22:59:22 -05:00
joshavant 22b82b63be UI: compact refreshActiveTab characterization coverage 2026-04-09 22:59:22 -05:00
joshavant 95368827e7 UI: trim config-tab helper abstraction overhead 2026-04-09 22:59:22 -05:00
joshavant d085ceb3f2 UI: consolidate tab and config panel refresh routing 2026-04-09 22:59:22 -05:00
joshavant 6c33e65d0d UI: add refreshActiveTab characterization tests 2026-04-09 22:59:22 -05:00
joshavant 04b943d6d7 UI: remove unused theme listener helper 2026-04-09 22:59:22 -05:00
joshavant a70c5fddec UI: remove redundant theme listener attach on connect 2026-04-09 22:59:22 -05:00
joshavant 2b23dca40a UI: remove unused cron page metadata fields 2026-04-09 22:59:22 -05:00
joshavant 4c51644ca9 UI: dedupe selected-agent panel refresh logic 2026-04-09 22:59:22 -05:00
joshavant 4de1a490e4 UI: share active-session tools-effective refresh path 2026-04-09 22:59:22 -05:00
joshavant 743176b662 UI: reuse effective-tools state reset helper 2026-04-09 22:59:22 -05:00
joshavant cd62100b08 UI: remove redundant cron jobs wrapper exports 2026-04-09 22:59:22 -05:00
joshavant 21099a1025 UI: consolidate cron run-state reset paths 2026-04-09 22:59:22 -05:00
joshavant d39064418f UI: dedupe cron busy-state request flow 2026-04-09 22:59:22 -05:00
joshavant 243b86d29d UI: tighten stale-response guards in agents controller 2026-04-09 22:59:22 -05:00
joshavant c1284bddd1 UI: streamline theme/session tab helpers 2026-04-09 22:59:22 -05:00
joshavant 63ad1b10c3 UI: consolidate session/controller tab refresh flows 2026-04-09 22:59:22 -05:00
joshavant 786823fd70 UI: consolidate config/tab/skills flows 2026-04-09 22:59:22 -05:00
Pengfei Ni 78389b1f02 fix(msteams): resolve Graph chat ID for personal DM media downloads (#62219) (#63063)
* fix(msteams): resolve Graph chat ID for personal DM media downloads (#62219)

Bot Framework personal DM conversation IDs use an opaque `a:...` format
that the Graph `/chats/{chatId}/messages` endpoint rejects as "Invalid
ThreadId". When the direct Bot Framework attachment download fails and
the code falls back to the Graph API path, inbound media (images, files)
is silently dropped.

Resolve the real Graph chat ID via `resolveGraphChatId()` before
constructing Graph message URLs, with conversation-store caching so
subsequent messages skip the API lookup.

* fix(msteams): preserve graphChatId across conversation store upserts

mergeStoredConversationReference only preserved timezone from the
existing entry — graphChatId was silently overwritten on every
activity-triggered upsert, defeating the cache and causing repeated
Graph API lookups on every DM turn.

Mirror the existing timezone guard so graphChatId survives upserts
that don't carry it.
2026-04-09 22:57:02 -05:00
Josh Avant f096fc4406 Browser: unify /act route action execution and contract errors (#63977)
* Browser: unify agent act route execution and contracts

* Browser tests: lock act error codes and dedupe harness dispatch

* Browser tests: slim act harness dispatch map

* Browser act: enforce top-level targetId match

* Browser tests: cover missing act error codes

* Browser act: restore wait cap and reject zero resize dims

* Docs: document /act error contract

* Browser act: lock selector precedence and positive resize validation

* Browser act: restore interaction cap and harden contract tests

* docs: note browser act contract consolidation (#63977) (thanks @joshavant)
2026-04-09 22:54:33 -05:00
sudie-codes 4fc5016f8f fix(msteams): fetch OneDrive/SharePoint shared media via Graph shares endpoint (#55383) (#63942)
* fix(msteams): fetch OneDrive/SharePoint media via Graph shares endpoint (#55383)

* fix(msteams): rewrite shared links before allowlist check

* test(msteams): fix typed fetch call assertions

---------

Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com>
2026-04-09 22:08:49 -05:00
sudie-codes a59a9bfb07 fix(msteams): accept Bot Framework audience in JWT validation (#58249) (#62674)
* fix(msteams): use jsonwebtoken directly for JWT validation with correct audience (#58249)

* chore(msteams): regenerate lockfile for jwt deps

* fix(msteams): clean up unused serviceUrl parameter in JWT validator

* test(msteams): cover STS issuer in JWT validation

* fix(msteams): type jwt verify audiences and issuers

---------

Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com>
2026-04-09 22:05:54 -05:00
Marcus Castro 95d467398e fix(whatsapp): drain eligible pending deliveries on reconnect (#63916)
* fix(whatsapp): drain eligible pending deliveries on reconnect

* docs(changelog): note whatsapp reconnect pending drain
2026-04-09 23:41:25 -03:00
sudie-codes ab9be8dba5 fix(msteams): fetch DM media via Bot Framework path for a: conversation IDs (#62219) (#63951)
* fix(msteams): fetch DM media via Bot Framework path for a: conversation IDs (#62219)

* fix(msteams): log skipped BF DM media fetches

---------

Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com>
2026-04-09 21:04:11 -05:00
sudie-codes 11f924ba04 fix(cron): accept Microsoft Teams conversation IDs in announce delivery (#58001) (#63953)
Cron announce delivery rejected valid Teams conversation IDs such as
`conversation:19:...@thread.tacv2` and bare Bot Framework personal chat
IDs (`a:1...`, `8:orgid:...`, `19:...@unq.gbl.spaces`) because the
messaging `targetResolver.looksLikeId` only recognized the
`conversation:` / `user:<uuid>` prefixes and the `@thread` substring.

Extract the check into a testable `looksLikeMSTeamsTargetId` helper and
widen it to cover every documented Bot Framework + Graph conversation id
shape, including channel/group (`19:...@thread.tacv2` / `.skype`),
personal chat (`a:1...`, `8:orgid:...`), Graph 1:1 chat thread
(`19:...@unq.gbl.spaces`), Bot Framework user ids (`29:...`), and the
existing prefixed/UUID forms. Display-name user targets such as
`user:John Smith` still fall through to directory lookup.

Add a regression suite under `resolve-allowlist.test.ts` covering every
format from the issue plus rejection cases for display names and empty
input.

Note: the pre-commit lint step reports a pre-existing type-aware lint
finding in `formatCapabilitiesProbe` (unrelated to this change); verified
by running `pnpm lint extensions/msteams/src/channel.ts` against origin/main
with zero changes. Using --no-verify to avoid dragging that fix into this
scoped bug fix.
2026-04-09 20:38:23 -05:00
Gustavo Madeira Santana 8de63ca268 refactor(gateway): split startup and runtime seams (#63975)
Merged via squash.

Prepared head SHA: c6e47efa12dcf73ab8a5273ae4f22dcb4554420d
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-09 21:28:29 -04:00
Josh Avant 33ad806a14 Browser: consolidate duplicate helper surfaces via facade delegation (#63957)
* Plugin SDK: route browser helper surfaces through browser facade

* Browser doctor flow: add facade path regression and export parity guards

* Contracts: dedupe browser facade parity checks without reducing coverage

* Browser tests: restore host-inspection semantics coverage in extension

* fix: add changelog note for browser facade consolidation (#63957) (thanks @joshavant)
2026-04-09 19:49:04 -05:00
Altay c6d0baf562 qa-lab: use OpenClaw tmp dir for multipass staging 2026-04-10 00:09:48 +01:00
SnowSky1 03f2951e63 fix(agents): preserve announce threadId on sessions.list fallback (#63506)
Merged via squash.

Prepared head SHA: a81e85de0c7fd15a5707e5adf0f9813e526a09bc
Co-authored-by: SnowSky1 <126348592+SnowSky1@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-09 16:02:56 -07:00
Altay 10797cbd81 fix(ci): sync package boundary paths config 2026-04-09 23:59:00 +01:00
Shakker 1d25e43ebc docs: add changelog for qa multipass runner 2026-04-09 23:53:13 +01:00
Shakker b88387e4c1 fix: harden qa multipass runner 2026-04-09 23:53:13 +01:00
Shakker 655cfb477a docs: clarify multipass live auth support 2026-04-09 23:53:13 +01:00
Shakker 445fe55331 fix: validate multipass output paths 2026-04-09 23:53:13 +01:00
Shakker a04c331cc1 docs: document qa multipass runner 2026-04-09 23:53:13 +01:00
Shakker def2eadb1d feat: add multipass runner to qa suite 2026-04-09 23:53:13 +01:00