Commit Graph

26851 Commits

Author SHA1 Message Date
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
Vincent Koc 1d736dcbbc fix(ci): drop unused google prompt cache type 2026-04-05 10:49:51 +01:00
Peter Steinberger e3eb615da8
docs: salvage english docs from translation backlog 2026-04-05 10:45:08 +01:00