Commit graph

827 commits

Author SHA1 Message Date
Peter Steinberger
8a06db084d fix(models): hide unauthenticated catalog entries 2026-04-29 18:05:34 +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
61d53f98d3
fix(cron): clean up timed out agent runs 2026-04-29 16:54:22 +01:00
Vincent Koc
c357235fe6
docs(memory): document active-memory circuit breaker config and lancedb memory query CLI
- docs/concepts/active-memory.md: extend the "Useful tuning fields" config
  table with the new `config.circuitBreakerMaxTimeouts` and
  `config.circuitBreakerCooldownMs` keys (with their schema-declared ranges
  and defaults) added by 89cd2b6362, so operators tuning Active Memory
  recall after consecutive timeouts can find the knobs alongside
  `cacheTtlMs`.
- docs/plugins/memory-lancedb.md: extend the "Commands" section with the
  new `openclaw memory query` subcommand 6b44dce0c8 registered when
  memory-lancedb is the active memory plugin, including the `--cols`,
  `--filter`, `--limit`, and `--order-by` options and the safety bounds
  (200-character filter cap, sanitized character allowlist, positive
  integer limit, in-memory order-by).
2026-04-29 04:41:06 -07:00
Peter Steinberger
e6cd90e3fd
fix(agents): keep OAuth auth read-through 2026-04-29 11:54:28 +01:00
Peter Steinberger
2b811fe6d9
fix(memory): make qmd gateway startup lazy 2026-04-29 08:45:19 +01:00
Peter Steinberger
afc4f06ca3
fix(memory): isolate qmd boot refresh 2026-04-29 08:14:08 +01:00
Peter Steinberger
13757465ba
fix(agents): scope external CLI auth discovery 2026-04-29 07:52:13 +01:00
Peter Steinberger
5580d8951c
test(ci): harden release failure paths 2026-04-29 06:41:58 +01:00
Peter Steinberger
364c67bcb5
refactor(discord): share channel run queue 2026-04-29 06:21:09 +01:00
Peter Steinberger
34ef403cb2
docs: clarify provider hook compatibility 2026-04-29 05:02:04 +01:00
Jari Mustonen
d8a600f2ad
context-engine: pass runtime context to ContextEngineFactory (#67243)
Merged via squash.

Prepared head SHA: 9aca6a5af1
Co-authored-by: jarimustonen <1272053+jarimustonen@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-04-28 18:21:14 -07:00
Peter Steinberger
8f4cbbbe66
perf(prompt): stabilize channel prompt suffix 2026-04-29 00:49:57 +01:00
Peter Steinberger
f4a9d34f98
fix(model): explain rejected session overrides 2026-04-28 23:33:24 +01:00
Peter Steinberger
c500e8704f
fix(gateway): recover stale session lanes 2026-04-28 20:37:29 +01:00
Peter Steinberger
1e9faa2a59
docs: document inter-session prompt guards 2026-04-28 20:34:55 +01:00
Peter Steinberger
cb8c513ce3
fix(telegram): honor final-only streaming mode 2026-04-28 20:28:06 +01:00
Tak Hoffman
f256eeba43
fix(active-memory): use bundled recall tool
Some checks are pending
CI / -5 (push) Blocked by required conditions
CI / check-lint (push) Blocked by required conditions
CI / check-policy-guards (push) Blocked by required conditions
CI / check-prod-types (push) Blocked by required conditions
CI / check-strict-smoke (push) Blocked by required conditions
CI / check (push) Blocked by required conditions
CI / checks-node-core (push) Blocked by required conditions
CI / check-preflight-guards (push) Blocked by required conditions
CI / check-test-types (push) Blocked by required conditions
CI / check-additional-boundaries (push) Blocked by required conditions
CI / check-additional-extension-bundled (push) Blocked by required conditions
CI / check-additional-extension-channels (push) Blocked by required conditions
CI / check-additional-extension-package-boundary (push) Blocked by required conditions
CI / check-additional-runtime-topology-architecture (push) Blocked by required conditions
CI / check-additional (push) Blocked by required conditions
CI / build-smoke (push) Blocked by required conditions
CI / check-docs (push) Blocked by required conditions
CI / skills-python (push) Blocked by required conditions
CI / -6 (push) Blocked by required conditions
CI / -7 (push) Blocked by required conditions
CI / macos-swift (push) Blocked by required conditions
CI / -8 (push) Blocked by required conditions
Docs Sync Publish Repo / sync-publish-repo (push) Waiting to run
Docs / docs (push) Waiting to run
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / publish_plugins_npm (push) Blocked by required conditions
Workflow Sanity / no-tabs (push) Waiting to run
Workflow Sanity / actionlint (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
Fixes #73502.

Active Memory now allows its hidden recall sub-agent to use both bundled memory tool contracts: memory_recall for memory-lancedb and memory_search/memory_get for memory-core. The prompt prefers memory_recall when available and falls back to the legacy tool pair when that is the active backend surface.

Also updates Active Memory docs, QA mock fixtures, and debug parsing compatibility for the two recall paths.
2026-04-28 09:03:47 -05:00
Peter
ba17b8b728
docs(active-memory): document cacheTtlMs bounds (#65708) (openclaw#65737)
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test (local full suite failed in unrelated plugin/logging shards; PR-specific docs/changelog checks and GitHub checks passed)
- GitHub status checks for c2c5a94df8 completed without failure

Co-authored-by: WuKongAI-CMU <210765158+WuKongAI-CMU@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-04-28 08:42:16 -05:00
quengh
373e7fc242
feat(active-memory): add allowedChatIds/deniedChatIds per-conversation filters (openclaw#67977)
Verified:
- pnpm install --frozen-lockfile
- git diff --check
- pnpm exec oxfmt --check --threads=1 extensions/active-memory/index.ts extensions/active-memory/index.test.ts docs/concepts/active-memory.md CHANGELOG.md
- OPENCLAW_TEST_HEAVY_CHECK_LOCK_HELD=1 OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=.vitest-cache-pr67977 pnpm test extensions/active-memory/index.test.ts extensions/active-memory/config.test.ts
- gh pr checks 67977 --repo openclaw/openclaw --required

Co-authored-by: quengh <3940773+quengh@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-04-28 08:37:55 -05:00
Vincent Koc
fe7865aad6
docs: cover Anthropic beta header suppression and claude-cli fallback prelude
- docs/concepts/model-providers.md: add proxy-route shaping rule for the
  09ec5d2c4d fix that suppresses implicit Anthropic beta headers
  (`claude-code-20250219`, `interleaved-thinking-2025-05-14`, OAuth markers)
  on non-direct endpoints, parallel to the existing OpenAI
  `compat.supportsDeveloperRole` rule.
- docs/gateway/cli-backends.md: add a "Fallback prelude from claude-cli
  sessions" section for a96f1fa5ef so users know that non-CLI fallback
  candidates after a claude-cli failure are now seeded with a context prelude
  harvested from Claude Code's `~/.claude/projects/` JSONL (preferring the
  latest `/compact` summary, coalescing tool blocks, skipping same-provider
  `--resume` fallbacks).
2026-04-28 01:42:25 -07:00
Peter Steinberger
78a12706ec
fix(docs): make docs formatter mintlify-safe 2026-04-28 08:13:21 +01:00
Peter Steinberger
12962dd883
fix(models): keep agent primaries strict 2026-04-28 08:01:42 +01:00
Peter Steinberger
424560c6c2
docs: normalize mintlify component closings 2026-04-28 07:54:15 +01:00
Peter Steinberger
a644e30245
fix(memory-core): retry unavailable dreaming model 2026-04-28 06:15:28 +01:00
Peter Steinberger
3d53b39917
fix(gateway): honor configured vision models 2026-04-28 06:10:14 +01:00
Peter Steinberger
540cbe24be
fix: allow memory flush model override 2026-04-28 05:50:55 +01:00
Gustavo Madeira Santana
d59f001507
test(qa-matrix): cover allowBots modes 2026-04-28 00:47:40 -04:00
Peter Steinberger
66a0aa47e4
docs(google): clarify gemini 3.1 pro alias 2026-04-28 05:41:30 +01:00
Peter Steinberger
35c9dd06b2
fix(cli): respect replace mode in model picker 2026-04-28 05:26:25 +01:00
Peter Steinberger
870d993eb8
fix(ui): request configured model list 2026-04-28 05:21:08 +01:00
Peter Steinberger
4b4cde7187
fix(memory): back off qmd open failures 2026-04-28 04:16:25 +01:00
Gustavo Madeira Santana
ae616777f3
test(qa-matrix): cover approval metadata scenarios 2026-04-27 23:10:51 -04:00
Peter Steinberger
a0a0ab4d9e
fix(memory): resolve custom embedding provider ids 2026-04-28 03:11:19 +01:00
Peter Steinberger
0294aebe6f
feat(providers): add DeepInfra provider plugin (#73038)
* feat(providers): add DeepInfra provider plugin

* feat(deepinfra): add media provider surfaces

* fix(deepinfra): satisfy provider boundary checks

* docs: add gitcrawl maintainer skill

* test: include deepinfra in live media sweeps

* fix: remove stale tts contract import
2026-04-28 01:12:54 +01:00
Peter Steinberger
32d76e2429
fix(memory): bound lancedb recall embedding queries 2026-04-28 00:58:30 +01:00
Peter Steinberger
ff2b2e769f
fix(cron): preserve job model fallbacks 2026-04-28 00:03:01 +01:00
Peter Steinberger
d2320e4d4b
fix(models): keep user model switches strict 2026-04-27 23:32:44 +01:00
Peter Steinberger
496a5eb56f
fix: dedupe silent reply prompt guidance 2026-04-27 23:31:13 +01:00
Peter Steinberger
d519dc6976
docs(channels): add channel docking concept 2026-04-27 22:37:58 +01:00
Peter Steinberger
582debbec8
docs(channels): explain dock commands 2026-04-27 22:32:44 +01:00
Gustavo Madeira Santana
b9fd13e8d7
qa-matrix: add streaming tool progress scenarios 2026-04-27 16:21:37 -04:00
Gustavo Madeira Santana
24068f19c6
matrix: stream tool progress in previews 2026-04-27 16:21:34 -04:00
Gustavo Madeira Santana
c5678194d4
docs(qa): document Telegram and Discord QA lanes against code
Both lanes had only one paragraph each in qa-e2e-automation.md. Adds a
"Telegram and Discord QA reference" section verified against
extensions/qa-lab/src/live-transports/{telegram,discord}/* with:

- shared CLI flags table (--scenario, --output-dir, --repo-root, --sut-account,
  --provider-mode, --model, --alt-model, --fast, --credential-source,
  --credential-role) — none of these were enumerated for either lane.
- Telegram QA: 8 scenario ids
  (telegram-canary/-mention-gating/-mentioned-message-reply/-help-command/
  -commands-command/-tools-compact-command/-whoami-command/-context-command),
  output artifact paths (telegram-qa-report.md, -summary.json,
  -observed-messages.json), and the redaction toggle.
- Discord QA: 3 scenario ids
  (discord-canary/-mention-gating/-native-help-command-registration), output
  artifact paths, and the SUT-application-id-must-match-bot-user-id check.
- Convex credential pool: documents Discord support (only Telegram was
  mentioned before) and the per-kind payload shapes for the
  admin/add validator. Cross-links to testing.md for the broker endpoint
  contract.

Slims the duplicate Operator-flow paragraphs for Telegram and Discord into a
single one-block pointer that links to the new reference section.
2026-04-27 13:48:03 -04:00
Gustavo Madeira Santana
dd1a94f089
docs(qa): reorg, audit against code, and refresh stale content
Reorg
- Rename the architecture page title to "QA overview" (slug stays
  /concepts/qa-e2e-automation so inbound links keep working).
- Move "Adding a channel to QA" + scenario-helper-name reference from
  testing.md into qa-e2e-automation.md under "Transport adapters". Architecture
  belongs with the architecture page.
- Drop the duplicate live-transport coverage table from testing.md; canonical
  copy stays in qa-e2e-automation.md under a new "Live transport coverage"
  heading so qa-matrix.md can deep-link to it.
- Slim testing.md QA-specific runners section to ops only, with cross-links.

Audit (against extensions/qa-lab/src/cli.ts, qa-channel/src/config-schema.ts,
and live-transport runtimes)
- qa-e2e-automation.md gains a "Command surface" table covering all 14
  openclaw qa <subcommand> forms; previously only ~7 of 14 were named.
- Document missing OPENCLAW_QA_TELEGRAM_CAPTURE_CONTENT and
  OPENCLAW_QA_DISCORD_CAPTURE_CONTENT env vars (Matrix already had it).
- Cross-link qa coverage from the Reporting section.
- qa-channel.md completes the config-key list (enabled, name, accounts,
  defaultAccount were missing from the schema doc) and pollTimeoutMs range.
- Drop stale "Follow-up work" framing in qa-channel.md (provider/model matrix,
  scenario discovery, orchestration) — all three already shipped.
- Replace "vertical slice" language with current behavior; fix misplaced
  debugger-UI paragraph.

Discoverability
- Add a Note callout to testing.md pointing at the three QA pages
  (QA overview, Matrix QA, QA channel) so maintainers landing on testing.md
  see the QA stack in the prologue.

Glossary entries for the renamed/new doc titles.
2026-04-27 13:40:11 -04:00
Gustavo Madeira Santana
abca187df5
docs(qa): add dedicated Matrix QA reference page
Adds a focused reference for the Docker-backed Matrix QA lane (CLI flags,
seven scenario profiles, eight env vars including the redaction toggle and
Tuwunel image override, scenario taxonomy, output artifact layout, and triage
tips). Source-of-truth checked against extensions/qa-matrix/src/cli.ts,
shared/live-transport-cli.ts, runners/contract/{runtime,scenario-catalog}.ts,
and substrate/harness.runtime.ts.

Registered in docs/docs.json alongside QA E2E automation.
2026-04-27 13:40:11 -04:00
Peter Steinberger
877b5a14f1
fix(sessions): batch store cap maintenance 2026-04-27 14:51:53 +01:00
Peter Steinberger
0ac0357486
docs(memory): explain qmd collection compatibility 2026-04-27 14:44:01 +01:00
Peter Steinberger
4ebec8b5dc
fix(memory): group qmd collection searches 2026-04-27 14:37:12 +01:00
Peter Steinberger
c00ef238be
docs(tools): clarify sessions_spawn profile gating 2026-04-27 14:31:54 +01:00