Commit Graph

26853 Commits

Author SHA1 Message Date
Peter Steinberger
21ef63d9f2 test: use threads for core vitest projects 2026-04-05 12:54:09 +01:00
Peter Steinberger
19c081d4a2 test: relax vitest host throttle on big machines 2026-04-05 12:54:09 +01:00
Peter Steinberger
41d08a6feb test: restore thread-first vitest defaults 2026-04-05 12:54:08 +01:00
wirjo
dbac5fa258 feat(bedrock): add Bedrock Mantle (OpenAI-compatible) provider (#61296)
* feat(bedrock): add Bedrock Mantle (OpenAI-compatible) provider

New amazon-bedrock-mantle extension that provides auto-discovery and
authentication for Amazon Bedrock Mantle endpoints.

Mantle (bedrock-mantle.<region>.api.aws) is Amazon Bedrock's OpenAI-
compatible API surface, separate from the existing bedrock-runtime
(ConverseStream) endpoint. It has its own model catalog including
models not available via ConverseStream (e.g. openai.gpt-oss-120b,
mistral.devstral-2-123b).

Extension structure:
- discovery.ts: Model discovery via GET /v1/models (OpenAI format),
  bearer token resolution, implicit provider configuration
- register.sync.runtime.ts: Provider registration with catalog,
  error classification (rate limits, context overflow)
- openclaw.plugin.json: Plugin manifest, enabledByDefault

Auth support:
- Long-lived Bedrock API key (AWS_BEARER_TOKEN_BEDROCK env var)
  created from the AWS Console → used directly as Bearer token
- Pre-generated SigV4-derived tokens (via aws-bedrock-token-generator)
  set in AWS_BEARER_TOKEN_BEDROCK → works transparently

Provider config (auto-resolved when AWS_BEARER_TOKEN_BEDROCK is set):
  api: "openai-completions"
  baseUrl: "https://bedrock-mantle.<region>.api.aws/v1"
  auth: "api-key" (bearer token)

Available in 12 regions: us-east-1, us-east-2, us-west-2,
ap-northeast-1, ap-south-1, ap-southeast-3, eu-central-1,
eu-west-1, eu-west-2, eu-south-1, eu-north-1, sa-east-1

Tests: 15 passing (13 discovery + 2 plugin registration)

* chore(bedrock): clarify mantle bearer auth scope

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-04-05 12:53:54 +01:00
Peter Steinberger
deb212d3b0 fix(openai): tighten gpt chat action turns 2026-04-05 12:53:35 +01:00
Peter Steinberger
259338565a test: normalize minimax provider timeout formatting 2026-04-05 12:53:24 +01:00
Peter Steinberger
59a243e46b test: stabilize provider discovery matrix cases 2026-04-05 12:53:24 +01:00
Peter Steinberger
d0afdb56ce fix: honor minimax api host during provider discovery 2026-04-05 12:53:23 +01:00
Peter Steinberger
bc7f845714 test: speed up focused pi-tools tool tests 2026-04-05 12:53:15 +01:00
Peter Steinberger
dbcd35f6c2 test: decouple pi-tools params test imports 2026-04-05 12:53:15 +01:00
wirjo
78fe96f2d4 feat(bedrock): add inference profile discovery and region injection (#61299)
* feat(bedrock): add inference profile discovery and region injection

Inference profiles (cross-region and application) work with ConverseStream
but require the SDK client region to match the profile region. Without
this, users get "The provided model identifier is invalid" errors when
using cross-region profiles like us.anthropic.claude-sonnet-4-6.

Changes:

1. Inference profile discovery (discovery.ts):
   - Call ListInferenceProfiles alongside ListFoundationModels (parallel)
   - Inference profiles INHERIT capabilities from their underlying
     foundation model (modalities, reasoning, context window, cost)
   - resolveBaseModelId() maps profile → foundation model:
     "us.anthropic.claude-sonnet-4-6" → "anthropic.claude-sonnet-4-6"
     Application ARNs → extract model ID from models[].modelArn
   - Graceful degradation if IAM lacks bedrock:ListInferenceProfiles
   - Provider filter applies to profiles via underlying model ARNs

2. Region injection (register.sync.runtime.ts):
   - Extract region from provider baseUrl or bedrockDiscovery.region
   - Pass through to pi-ai options.region in wrapStreamFn
   - Ensures SDK client connects to correct regional endpoint

3. Inference profile model detection (anthropic-family-cache-semantics.ts):
   - isAnthropicBedrockModel() now recognizes application inference
     profile ARNs (arn:aws:bedrock:...:application-inference-profile/*)

4. Tests (discovery.test.ts):
   - New: inference profile inheritance test (4 models: 1 foundation +
     3 profiles, verifies capability inheritance, inactive filtering)
   - New: graceful AccessDeniedException handling test
   - Updated: all existing tests for dual-API discovery pattern

Fixes #55642

* fix(bedrock): preserve inference profile model lookup

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-04-05 12:52:03 +01:00
Vincent Koc
5f6ba749ff fix(test): restore thread-first vitest defaults 2026-04-05 12:37:39 +01:00
Peter Steinberger
b9d26fd1a4 docs: add arabic locale scaffolding 2026-04-05 12:37:22 +01:00
Peter Steinberger
996dccb19c feat(agents): add structured execution item events 2026-04-05 12:36:33 +01:00
Peter Steinberger
3b7e6152d1 fix: retry reasoning-required compaction with minimal thinking 2026-04-05 12:35:50 +01:00
Vincent Koc
c9e505f54a docs(changelog): sort and verify new entries 2026-04-05 12:32:16 +01:00
Peter Steinberger
8ad6dd92d7 ci: retrigger stalled main workflow 2026-04-05 12:19:24 +01:00
Mariano
4175caee6e fix(agents): suppress commentary-phase output leaks (#61282)
Merged via squash.

Prepared head SHA: e392904f73
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
2026-04-05 13:04:12 +02:00
Peter Steinberger
1bf5339b98 fix(gateway): pin startup channel registry 2026-04-05 12:01:03 +01:00
Peter Steinberger
283a6c65b7 ci: clone docs mirror without checkout api 2026-04-05 11:55:24 +01:00
Peter Steinberger
7fc3b22f53 fix: update changelog for Slack DM live reply routing (#59030) (thanks @afurm) 2026-04-05 19:53:23 +09:00
Andrii Furmanets
379f0d78e6 Slack: route live DM replies to channel 2026-04-05 19:53:23 +09:00
Peter Steinberger
25da786c68 docs: add generated locale picker support 2026-04-05 11:53:02 +01:00
Vincent Koc
cfe66c6e02 test(contracts): guard config footprint regressions 2026-04-05 11:48:40 +01:00
Peter Steinberger
fef155cdbc fix: tighten file tool schemas for openai 2026-04-05 11:46:34 +01:00
Vincent Koc
63db3443f1 fix(plugin-sdk): prefer canonical private-network opt-in 2026-04-05 11:45:09 +01:00
Peter Steinberger
0f58cef75e fix: finalize facade re-entry landing cleanup (#61180) (thanks @adam91holt) 2026-04-05 11:42:29 +01:00
Peter Steinberger
66c047ddc3 fix: refresh facade re-entry landing delta (#61180) (thanks @adam91holt) 2026-04-05 11:40:51 +01:00
Adam Holt
3a957cfe8b fix: resolve circular re-entry in facade module loading
resolveTrackedFacadePluginId triggers config loading (plugin auto-enable,
channel discovery) which can re-enter loadBundledPluginPublicSurfaceModuleSync
for the same module. Because the sentinel was still empty at that point,
re-entrant callers saw undefined exports (e.g. shouldNormalizeGoogleProviderConfig).

Move Object.assign(sentinel, loaded) before the plugin ID resolution so any
re-entrant lookup through the cached sentinel finds the real exports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 11:40:32 +01:00
Vincent Koc
c5f69111ce docs(changelog): sort unreleased entries alphabetically 2026-04-05 11:38:04 +01:00
Vincent Koc
440428889e docs: add missing contributor attribution to Unreleased changelog entries 2026-04-05 11:33:58 +01:00
Peter Steinberger
dbfd96f4ec docs: move ja-JP output to publish repo 2026-04-05 11:32:55 +01:00
Peter Steinberger
495ebd28a4 fix(ci): route zai endpoint constants through plugin sdk 2026-04-05 11:30:58 +01:00
Peter Steinberger
064f474ed7 test: isolate anthropic vertex provider env cases 2026-04-05 11:28:59 +01:00
Vincent Koc
fd0cc90427 fix(plugin-sdk): resolve facade post-load re-entry (#61286) 2026-04-05 11:25:36 +01:00
Peter Steinberger
4559ece355 fix(ci): align test fixtures with current runner types 2026-04-05 11:23:51 +01:00
Chunyue Wang
8c1ca1f245 fix(cron): remove OpenAPI 3.0 incompatible JSON Schema keywords from cron tool (#61221)
The cron tool schema used type arrays (['string','null']), the 'not'
keyword, and 'const' — all unsupported by the OpenAPI 3.0 subset that
Gemini-backed providers (e.g. GitHub Copilot) enforce. This caused
HTTP 400 for every request when cron was enabled.

Replace type arrays with scalar types, remove not/const from
CronFailureAlertSchema, and add 'not' to the Gemini unsupported
keywords list as defense-in-depth.

Fixes #61206
2026-04-05 11:21:45 +01:00
Peter Steinberger
359be4eb48 test: simplify runtime cleanup setup imports 2026-04-05 11:19:06 +01:00
Peter Steinberger
2d7ec1b641 refactor: split zai config sdk seam 2026-04-05 11:19:05 +01:00
Peter Steinberger
be526d6423 refactor: split provider stream sdk seams 2026-04-05 11:19:05 +01:00
Peter Steinberger
0a21eebf56 fix(openai): keep gpt chat replies concise 2026-04-05 11:16:28 +01:00
Peter Steinberger
af81ee9fee fix(agents): add embedded item lifecycle events 2026-04-05 11:16:28 +01:00
Peter Steinberger
1ad5695aa4 ci: trigger zh-CN refresh on release 2026-04-05 11:16:00 +01:00
Vincent Koc
f02e435188 fix(google): support gemini cli personal oauth (#61260)
* fix(google): support gemini cli personal oauth

* Apply suggestion from @greptile-apps[bot]

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* fix(google): prefer gemini settings over auth env fallback

* chore(changelog): format rebased gemini entry

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-04-05 11:12:54 +01:00
Peter Steinberger
fd917a471c test: scope implicit provider discovery harness 2026-04-05 11:12:41 +01:00
Vincent Koc
be5a2611b9 test(anthropic): reuse wizard prompter helper (#61280) 2026-04-05 11:09:00 +01:00
Peter Steinberger
f2dc241e9d docs: harden zh-CN translation flow 2026-04-05 11:02:39 +01:00
Vincent Koc
3b84884793 fix(agents): harden host-managed claude-cli auth path (#61276) 2026-04-05 11:02:18 +01:00
Peter Steinberger
afca9540bf fix: add openai responses phase support 2026-04-05 10:58:49 +01:00
Vincent Koc
852e8f7a2a docs: update Claude CLI backend docs for MCP bridge, streaming, and auth changes 2026-04-05 10:54:11 +01:00