Commit Graph

7631 Commits

Author SHA1 Message Date
Vincent Koc
e1c97cb24d fix(memory-wiki): satisfy CI guard checks 2026-04-29 12:27:22 -07:00
Peter Steinberger
3059702687 feat(memory-wiki): add agent-facing people wiki metadata 2026-04-29 20:17:37 +01:00
Peter Steinberger
b0ae867034 refactor(migration): share cached config runtime helper 2026-04-29 20:05:23 +01:00
Hemant Sudarshan
db6951088a fix(telegram): keep unreachable polling sockets non-fatal
* Runtime: suppress transient network uncaught exceptions

* fix(telegram): keep unreachable polling sockets non-fatal

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-04-29 19:53:43 +01:00
Simone
dabf76b3de fix(device-pair): validate public setup urls (#74538)
* fix(device-pair): validate public setup urls

* test(cli): cover invalid qr override urls

---------

Co-authored-by: Lucenx9 <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-04-29 19:47:35 +01:00
Natalie K
86956f71e6 fix(matrix): close owner-side device verification loop on SAS confirm (#74542)
* fix(matrix): close owner-side device verification loop on SAS confirm

After SAS confirm via the `openclaw matrix verify confirm-sas` CLI, the
operator's Element X stayed in "Verifying…" because three things on the
bot side did not happen before the verb returned:

1. confirmVerificationSas didn't await the rust-crypto verifier promise.
   `Verifier.verify()` resolves only after both sides exchange MACs and
   the protocol fully settles, including cross-signing-key uploads
   triggered by `crossSignDevice`. Returning early meant Element X's
   next /keys/query saw an inconsistent state and the prompt persisted.

2. The 30s auto-confirm path (used when the operator initiates from
   their phone) explicitly passed `{ trustOwnDevice: false }`, so the
   bot never cross-signed its own device on this path. The check inside
   trustOwnDeviceAfterConfirmedSas already gates on isSelfVerification,
   so flipping the flag is safe — non-self requests remain a no-op.

3. The standalone `confirmMatrixVerificationSas` action did not call
   `trustOwnIdentityAfterSelfVerification` (only the higher-level
   `runMatrixSelfVerification` path did). Without that call, the bot
   had not signed the operator's master key, so Element X had no path
   to clear the prompt without a passive sync tick.

Three additive edits:

- verification-manager.ts (confirmVerificationSas): await
  session.verifyPromise after confirmSasForSession returns.
  verifyPromise is the .then().catch() chain set by
  ensureVerificationStarted, which already routes rejections into
  session.error, so awaiting it cannot double-throw.
- verification-manager.ts (maybeAutoConfirmSas): pass
  { trustOwnDevice: true } so the auto-confirm path also cross-signs
  the bot device for self-verifications.
- actions/verification.ts (confirmMatrixVerificationSas): mirror the
  trustOwnIdentityAfterSelfVerification call from
  completeMatrixSelfVerification when the returned summary indicates
  isSelfVerification.

Tests:
- verification-manager.test.ts: flipped the existing "auto-confirmed
  self-verification" assertion (now expects trustOwnDeviceAfterSas to
  be called); added two new tests for verifyPromise await and
  rejection-on-summary.error.
- actions/verification.test.ts: two new tests asserting
  confirmMatrixVerificationSas calls trustOwnIdentityAfterSelfVerification
  on self-verifications and not on remote verifications.

Verified end-to-end against matrix.thepolycule.ca (Synapse 1.145.0+ess.1,
MAS-fronted): after `verify confirm-sas`, Element X's device-list view
shows the bot device with a green shield and no pending Verify prompt.

* fix(matrix): guard owner trust after failed SAS verification

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-04-29 19:42:45 +01:00
Peter Steinberger
072e73d7c3 fix(codex): release quiet app-server turns 2026-04-29 19:42:02 +01:00
Peter Steinberger
89f871679e fix(ollama): normalize prefixed tool calls 2026-04-29 19:28:53 +01:00
Peter Steinberger
4bc79f9737 test: relax live web search timeouts 2026-04-29 19:14:15 +01:00
Peter Steinberger
7e1acf2f1e refactor(discord): split threading and voice segment helpers 2026-04-29 19:09:17 +01:00
Peter Steinberger
6470a23504 fix(slack): ignore duplicate reaction adds 2026-04-29 19:07:08 +01:00
Peter Steinberger
43b084e5fa refactor(discord): split message and binding helpers 2026-04-29 19:00:44 +01:00
Shakker
69181342e1 fix: preserve manifest-backed model list auth 2026-04-29 18:23:39 +01:00
Vincent Koc
0e0ade80a0 fix(codex): remove redundant abort signal assertion 2026-04-29 10:22:20 -07:00
Peter Steinberger
09baec68ea fix(codex): bound dynamic tool bridge responses 2026-04-29 18:13:53 +01:00
Peter Steinberger
dcd428e8c1 refactor(discord): split preflight and native command helpers 2026-04-29 18:03:32 +01:00
Peter Steinberger
e420592bdf refactor(discord): split runtime helpers 2026-04-29 17:43:07 +01:00
Peter Steinberger
f4af0777a7 fix(discord): remove duplicate public policy export 2026-04-29 17:33:33 +01:00
openclaw-clawsweeper[bot]
63fe2e12d7 fix(clawsweeper): address review for clawsweeper-commit-openclaw-openclaw-587b537b4745 (1) 2026-04-29 17:33:33 +01:00
openclaw-clawsweeper[bot]
4e115c5dbb fix: Found one compatibility regression in the published Discord plugi 2026-04-29 17:33:33 +01:00
Peter Steinberger
5201c42251 refactor(discord): split messaging runtime actions 2026-04-29 17:31:53 +01:00
openclaw-clawsweeper[bot]
a512b5dde9 fix: The commit introduces imports from `src/channels/plugins/dm-acces 2026-04-29 17:31:11 +01:00
Carl
5e384fed6d fix(google): prevent empty contents error for gemini (#74465)
* fix(google): prevent empty contents error for gemini

* test(google): cover empty Gemini contents fallback

* docs(changelog): note Gemini empty content fallback

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-04-29 17:30:51 +01:00
Agustin Rivera
9a0b43c47e feat(nvidia): add NVIDIA provider with onboarding flow (#71204)
* feat(nvidia): add NVIDIA provider with onboarding flow

Add the NVIDIA build.nvidia.com API as a bundled provider. Default model
is nvidia/nvidia/nemotron-3-super-120b-a12b: first segment is the provider
id, remaining "nvidia/nemotron-3-super-120b-a12b" is the literal upstream
model id (which happens to start with "nvidia/" because NVIDIA is also the
model maker).

Supporting core change: introduce a provider capability flag
nativeIdsIncludeProviderPrefix so providers whose native catalog ids
intentionally include their provider prefix (OpenRouter) opt into self-prefix
dedupe in modelKey, without hardcoding provider names in core. Providers
whose ids merely happen to start with their own name (NVIDIA) leave the flag
unset and get the full <provider>/<model-id> concatenation.

- extensions/nvidia/*: new plugin, catalog, onboarding, tests, docs
- extensions/openrouter/index.ts: declare nativeIdsIncludeProviderPrefix
- src/plugins/types.ts: add field to ProviderPlugin
- src/plugins/registry.ts: populate self-prefix set on registration
- src/agents/provider-self-prefix.ts: sync accessor used by modelKey
- src/agents/model-ref-shared.ts: modelKey consults the flag
- test updates for affected surfaces

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* refactor(model-picker): simplify literal-prefix display to label-only

* fix(model-picker): pass workspaceDir/env to allowlist literal-prefix resolution

* chore: untrack generated baseline JSON artifacts (gitignored)

* fix(nvidia): show literal model ref in picker and onboarding notes

* fix(nvidia): show hint whenever display label differs from stored config

* fix(nvidia): drop redundant hint from Keep current label

* fix(nvidia): restore literal double-prefix display labels

* fix(picker): handle literal-prefix fast path

* fix(picker): show literal keep label

* fix(docs): update nvidia provider docs

* fix(nvidia): update test helper imports

* fix(changelog): add nvidia provider entry

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 09:25:12 -07:00
Peter Steinberger
e46dccb353 fix(discord): clarify command deploy rate-limit logs 2026-04-29 17:19:40 +01:00
Peter Steinberger
e8b82d1cf9 refactor(discord): split component auth helpers 2026-04-29 16:56:17 +01:00
Peter Steinberger
3f0039e2ea fix(memory-wiki): reduce people wiki search noise 2026-04-29 16:52:48 +01:00
Peter Steinberger
240362bf6d fix: keep Discord runtime policy API export 2026-04-29 16:35:37 +01:00
Peter Steinberger
8cbf77d997 chore: remove unused Discord runtime policy shim 2026-04-29 16:35:37 +01:00
Peter Steinberger
7acb78852f fix: keep Discord DM wildcard out of owner checks 2026-04-29 16:35:37 +01:00
Peter Steinberger
04f651b783 fix: preserve Slack DM access account lookup 2026-04-29 16:35:37 +01:00
Peter Steinberger
1d9959b77e fix: preserve DM access precedence in Slack runtime 2026-04-29 16:35:37 +01:00
Peter Steinberger
8c68e7535f refactor: centralize channel DM access resolution 2026-04-29 16:35:37 +01:00
Peter Steinberger
606c881d27 test: stabilize release live e2e probes 2026-04-29 16:32:05 +01:00
Peter Steinberger
4dd2768c4b fix(channels): improve health metadata and reply diagnostics 2026-04-29 16:27:24 +01:00
Peter Steinberger
508cd6f805 fix(discord): remove stale component policy helper 2026-04-29 16:20:19 +01:00
Peter Steinberger
8935dd154a refactor(discord): simplify gateway and component wiring 2026-04-29 16:14:55 +01:00
Shakker
2b4909e2db perf: move openai model list catalog to manifest 2026-04-29 16:07:33 +01:00
Peter Steinberger
b92d145252 fix(ci): repair discord route and health fixtures 2026-04-29 15:58:56 +01:00
Peter Steinberger
204ef7f1c4 fix(telegram): report webhook registration status 2026-04-29 15:40:44 +01:00
Peter Steinberger
587b537b47 refactor(discord): simplify internal component wiring 2026-04-29 15:37:09 +01:00
Peter Steinberger
577438ca73 test: dedupe mirrored memory and deepseek tests 2026-04-29 15:11:39 +01:00
Peter Steinberger
f52958ad67 test(active-memory): make circuit breaker reset test deterministic 2026-04-29 15:11:26 +01:00
Peter Steinberger
6bbacd14a3 fix(gateway): wait for event loop before client start 2026-04-29 14:50:44 +01:00
Peter Steinberger
a972c9ec45 test: tolerate transient google tts and openrouter tool probes 2026-04-29 14:46:28 +01:00
Peter Steinberger
aaa194c58b fix(discord): align internal gateway and component parity 2026-04-29 14:38:52 +01:00
Peter Steinberger
da6135d34c fix(discord): satisfy internal boundary checks 2026-04-29 14:22:58 +01:00
Peter Steinberger
47b3530af3 fix(discord): prune idle rest route mappings 2026-04-29 14:22:58 +01:00
Peter Steinberger
32db9ff538 fix(discord): prune remapped rest buckets 2026-04-29 14:22:58 +01:00
Peter Steinberger
cea2da7049 refactor(discord): trim interaction helper duplication 2026-04-29 14:22:58 +01:00