mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-15 02:28:52 +08:00
Compare commits
16 Commits
codex/secu
...
v2026.6.10
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2023596c5 | ||
|
|
d2bcd95174 | ||
|
|
760938348c | ||
|
|
0a3663efe2 | ||
|
|
8117762bec | ||
|
|
83d765a66c | ||
|
|
d6c580085a | ||
|
|
4d40e7428a | ||
|
|
b92da8cdc0 | ||
|
|
dc5c1c3ac5 | ||
|
|
e2ab936865 | ||
|
|
4afc8dd76e | ||
|
|
e85e75ed78 | ||
|
|
fd01afddd3 | ||
|
|
d049bf1787 | ||
|
|
3ad5588abb |
10
.github/workflows/openclaw-npm-release.yml
vendored
10
.github/workflows/openclaw-npm-release.yml
vendored
@@ -661,6 +661,10 @@ jobs:
|
||||
|
||||
- name: Verify full release validation target
|
||||
if: ${{ inputs.full_release_validation_run_id != '' }}
|
||||
env:
|
||||
RELEASE_TAG: ${{ inputs.tag }}
|
||||
RELEASE_NPM_DIST_TAG: ${{ inputs.npm_dist_tag }}
|
||||
WORKFLOW_REF_NAME: ${{ github.ref_name }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
EXPECTED_RELEASE_SHA="$(git rev-parse HEAD)"
|
||||
@@ -681,7 +685,11 @@ jobs:
|
||||
echo "Full release validation target SHA mismatch: expected $EXPECTED_RELEASE_SHA, got $TARGET_SHA" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ "$RERUN_GROUP" != "all" ]]; then
|
||||
tideclaw_alpha_focused_validation=false
|
||||
if [[ "$RERUN_GROUP" == "install-smoke" && "$RELEASE_TAG" == *"-alpha."* && "$RELEASE_NPM_DIST_TAG" == "alpha" && "$WORKFLOW_REF_NAME" =~ ^tideclaw/alpha/[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{4}Z$ ]]; then
|
||||
tideclaw_alpha_focused_validation=true
|
||||
fi
|
||||
if [[ "$RERUN_GROUP" != "all" && "$tideclaw_alpha_focused_validation" != "true" ]]; then
|
||||
echo "Full release validation must run rerun_group=all before npm publish; got $RERUN_GROUP" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -268,6 +268,8 @@ jobs:
|
||||
EXPECTED_SHA: ${{ steps.ref.outputs.sha }}
|
||||
EXPECTED_RELEASE_PROFILE: ${{ inputs.release_profile }}
|
||||
EXPECTED_WORKFLOW_BRANCH: ${{ github.ref_name }}
|
||||
RELEASE_TAG: ${{ inputs.tag }}
|
||||
RELEASE_NPM_DIST_TAG: ${{ inputs.npm_dist_tag }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
RUN_JSON="$(gh run view "$FULL_RELEASE_VALIDATION_RUN_ID" --repo "$GITHUB_REPOSITORY" --json workflowName,headBranch,event,status,conclusion,url)"
|
||||
@@ -295,7 +297,11 @@ jobs:
|
||||
echo "Full release validation profile mismatch: expected $EXPECTED_RELEASE_PROFILE, got $release_profile" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ "$rerun_group" != "all" ]]; then
|
||||
tideclaw_alpha_focused_validation=false
|
||||
if [[ "$rerun_group" == "install-smoke" && "$RELEASE_TAG" == *"-alpha."* && "$RELEASE_NPM_DIST_TAG" == "alpha" && "$EXPECTED_WORKFLOW_BRANCH" =~ ^tideclaw/alpha/[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{4}Z$ ]]; then
|
||||
tideclaw_alpha_focused_validation=true
|
||||
fi
|
||||
if [[ "$rerun_group" != "all" && "$tideclaw_alpha_focused_validation" != "true" ]]; then
|
||||
echo "Full release validation must run rerun_group=all before npm publish; got $rerun_group" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
|
||||
Docs: https://docs.openclaw.ai
|
||||
|
||||
## 2026.6.10
|
||||
|
||||
### Fixes
|
||||
|
||||
- Alpha/nightly release metadata refreshes generated plugin inventory, config, Plugin SDK API, package version, and shrinkwrap state for the June 10 candidate.
|
||||
|
||||
## 2026.6.5
|
||||
|
||||
### Highlights
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
37b56008790612b8293930b6a29d74490e98daa90f954fca9d133fcc28645c4c config-baseline.json
|
||||
75b64c2ea081369ba4306493313a8a4cd48b784145f92fed995e6b77a5df350d config-baseline.core.json
|
||||
17d64c9799dfa239a49493413f1100bdd9237e9b67aaeae331a4604dbc227023 config-baseline.channel.json
|
||||
f9d1f50bfa8403891e76cd99dc1357cdece4a71e8ae18a39b190c2a14e6f97b0 config-baseline.plugin.json
|
||||
c55137ba447f9810d845b77aa8197cfe702cdb6eb724616d6c1e2cd268e13edb config-baseline.json
|
||||
7b2f99fdd52527397bf3520d923e7b4eec6b0091a7a7a006f6f39bedb931404c config-baseline.core.json
|
||||
7641a0edd1f7ddb904d394381017cb645d2c2c1a86d875df30e9bf11f8dd012e config-baseline.channel.json
|
||||
b0dec5acfe60557e728e5ad03cc36d19d2432d51f755656c97846afa7fbe374a config-baseline.plugin.json
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
424f72310250c242a3157994c45f7319370c1bf99014a13ee5f86cc811f43dd4 plugin-sdk-api-baseline.json
|
||||
87e786df92be36c22a7b392162c9fa39b634094d15aec4736d8b65be8d7cfd9c plugin-sdk-api-baseline.jsonl
|
||||
4768607253fdc720cb2bc280ac285ccfa7f7057a01659691f5be5b1f58422789 plugin-sdk-api-baseline.json
|
||||
7901bc511cf6f9628df4cd619035265f48c40939e4e8e51c5c10dc73a263f183 plugin-sdk-api-baseline.jsonl
|
||||
|
||||
@@ -137,7 +137,7 @@ Each entry lists the package, distribution route, and description.
|
||||
|
||||
- **[mattermost](/plugins/reference/mattermost)** (`@openclaw/mattermost`) - included in OpenClaw. Adds the Mattermost channel surface for sending and receiving OpenClaw messages.
|
||||
|
||||
- **[memory-core](/plugins/reference/memory-core)** (`@openclaw/memory-core`) - included in OpenClaw. Adds file-backed memory search tools.
|
||||
- **[memory-core](/plugins/reference/memory-core)** (`@openclaw/memory-core`) - included in OpenClaw. Adds agent-callable tools.
|
||||
|
||||
- **[memory-wiki](/plugins/reference/memory-wiki)** (`@openclaw/memory-wiki`) - included in OpenClaw. Persistent wiki compiler and Obsidian-friendly knowledge vault for OpenClaw.
|
||||
|
||||
@@ -267,10 +267,10 @@ Each entry lists the package, distribution route, and description.
|
||||
|
||||
- **[googlechat](/plugins/reference/googlechat)** (`@openclaw/googlechat`) - npm; ClawHub. OpenClaw Google Chat channel plugin for spaces and direct messages.
|
||||
|
||||
- **[llama-cpp](/plugins/reference/llama-cpp)** (`@openclaw/llama-cpp-provider`) - npm; ClawHub. OpenClaw llama.cpp embedding provider plugin.
|
||||
|
||||
- **[line](/plugins/reference/line)** (`@openclaw/line`) - npm; ClawHub. OpenClaw LINE channel plugin for LINE Bot API chats.
|
||||
|
||||
- **[llama-cpp](/plugins/reference/llama-cpp)** (`@openclaw/llama-cpp-provider`) - npm; ClawHub. Local GGUF embeddings through node-llama-cpp.
|
||||
|
||||
- **[lobster](/plugins/reference/lobster)** (`@openclaw/lobster`) - npm; ClawHub. Lobster workflow tool plugin for typed pipelines and resumable approvals.
|
||||
|
||||
- **[matrix](/plugins/reference/matrix)** (`@openclaw/matrix`) - ClawHub: `clawhub:@openclaw/matrix`; npm. OpenClaw Matrix channel plugin for rooms and direct messages.
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
summary: "OpenClaw llama.cpp embedding provider plugin."
|
||||
summary: "Local GGUF embeddings through node-llama-cpp."
|
||||
read_when:
|
||||
- You are installing, configuring, or auditing the llama-cpp plugin
|
||||
title: "llama-cpp plugin"
|
||||
title: "Llama Cpp plugin"
|
||||
---
|
||||
|
||||
# llama-cpp plugin
|
||||
# Llama Cpp plugin
|
||||
|
||||
OpenClaw llama.cpp embedding provider plugin.
|
||||
Local GGUF embeddings through node-llama-cpp.
|
||||
|
||||
## Distribution
|
||||
|
||||
@@ -20,4 +20,4 @@ contracts: embeddingProviders
|
||||
|
||||
## Related docs
|
||||
|
||||
- [llama.cpp Provider](/plugins/llama-cpp)
|
||||
- [llama-cpp](/plugins/llama-cpp)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
summary: "Adds file-backed memory search tools."
|
||||
summary: "Adds agent-callable tools."
|
||||
read_when:
|
||||
- You are installing, configuring, or auditing the memory-core plugin
|
||||
title: "Memory Core plugin"
|
||||
@@ -7,7 +7,7 @@ title: "Memory Core plugin"
|
||||
|
||||
# Memory Core plugin
|
||||
|
||||
Adds file-backed memory search tools.
|
||||
Adds agent-callable tools.
|
||||
|
||||
## Distribution
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
summary: "Use Microsoft Foundry chat and MAI image deployments from OpenClaw."
|
||||
summary: "Adds Microsoft Foundry model provider support to OpenClaw."
|
||||
read_when:
|
||||
- You are installing, configuring, or auditing the microsoft-foundry plugin
|
||||
title: "Microsoft Foundry plugin"
|
||||
@@ -7,9 +7,7 @@ title: "Microsoft Foundry plugin"
|
||||
|
||||
# Microsoft Foundry plugin
|
||||
|
||||
Use Microsoft Foundry deployments from OpenClaw with API-key auth or Microsoft
|
||||
Entra ID through the Azure CLI. The plugin owns Microsoft Foundry model
|
||||
discovery, runtime token refresh, and MAI image generation.
|
||||
Adds Microsoft Foundry model provider support to OpenClaw.
|
||||
|
||||
## Distribution
|
||||
|
||||
@@ -18,7 +16,10 @@ discovery, runtime token refresh, and MAI image generation.
|
||||
|
||||
## Surface
|
||||
|
||||
- Model provider: `microsoft-foundry`
|
||||
providers: microsoft-foundry; contracts: imageGenerationProviders
|
||||
|
||||
<!-- openclaw-plugin-reference:manual-start -->
|
||||
|
||||
- Image-generation provider: `microsoft-foundry`
|
||||
|
||||
## Requirements
|
||||
@@ -105,3 +106,5 @@ MAI image constraints:
|
||||
Foundry deployment through onboarding or add `models.providers.microsoft-foundry.baseUrl`.
|
||||
- `supports MAI image deployments only`: the selected image model points at a
|
||||
non-MAI deployment. Use a deployed MAI image model for `image_generate`.
|
||||
|
||||
<!-- openclaw-plugin-reference:manual-end -->
|
||||
|
||||
4
extensions/acpx/npm-shrinkwrap.json
generated
4
extensions/acpx/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/acpx",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/acpx",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@agentclientprotocol/claude-agent-acp": "0.39.0",
|
||||
"@zed-industries/codex-acp": "0.15.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/acpx",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw ACP runtime backend with plugin-owned session and transport management.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -26,10 +26,10 @@
|
||||
"minHostVersion": ">=2026.4.25"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2",
|
||||
"openclawVersion": "2026.6.10-alpha.1",
|
||||
"staticAssets": [
|
||||
{
|
||||
"source": "./src/runtime-internals/mcp-proxy.mjs",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/admin-http-rpc",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw admin HTTP RPC endpoint",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/alibaba-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Alibaba Model Studio video provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/amazon-bedrock-mantle-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/amazon-bedrock-mantle-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@anthropic-ai/sdk": "0.100.1",
|
||||
"@aws/bedrock-token-generator": "1.1.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/amazon-bedrock-mantle-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Amazon Bedrock Mantle provider plugin for OpenAI-compatible model routing.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -24,10 +24,10 @@
|
||||
"minHostVersion": ">=2026.5.12-beta.1"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2",
|
||||
"openclawVersion": "2026.6.10-alpha.1",
|
||||
"bundledDist": false
|
||||
},
|
||||
"release": {
|
||||
|
||||
4
extensions/amazon-bedrock/npm-shrinkwrap.json
generated
4
extensions/amazon-bedrock/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/amazon-bedrock-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/amazon-bedrock-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-bedrock": "3.1056.0",
|
||||
"@aws-sdk/client-bedrock-runtime": "3.1056.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/amazon-bedrock-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Amazon Bedrock provider plugin with model discovery, embeddings, and guardrail support.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -28,10 +28,10 @@
|
||||
"minHostVersion": ">=2026.5.12-beta.1"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2",
|
||||
"openclawVersion": "2026.6.10-alpha.1",
|
||||
"bundledDist": false
|
||||
},
|
||||
"release": {
|
||||
|
||||
4
extensions/anthropic-vertex/npm-shrinkwrap.json
generated
4
extensions/anthropic-vertex/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/anthropic-vertex-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/anthropic-vertex-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@anthropic-ai/vertex-sdk": "0.16.1"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/anthropic-vertex-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Anthropic Vertex provider plugin for Claude models on Google Vertex AI.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -23,10 +23,10 @@
|
||||
"minHostVersion": ">=2026.5.12-beta.1"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2",
|
||||
"openclawVersion": "2026.6.10-alpha.1",
|
||||
"bundledDist": false
|
||||
},
|
||||
"release": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/anthropic-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Anthropic provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/arcee-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Arcee provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/azure-speech",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Azure Speech plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/bonjour",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Bonjour/mDNS gateway discovery",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
|
||||
4
extensions/brave/npm-shrinkwrap.json
generated
4
extensions/brave/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/brave-plugin",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/brave-plugin",
|
||||
"version": "2026.6.2"
|
||||
"version": "2026.6.10-alpha.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/brave-plugin",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Brave Search provider plugin for web search.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -21,10 +21,10 @@
|
||||
"allowInvalidConfigRecovery": true
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/browser-plugin",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw browser tool plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/byteplus-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw BytePlus provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/canvas-plugin",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Canvas plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/cerebras-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Cerebras provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -15,6 +15,17 @@ function restoreEnvVar(name: string, value: string | undefined): void {
|
||||
}
|
||||
}
|
||||
|
||||
function readAuthorizationHeader(init?: { headers?: HeadersInit }): string {
|
||||
const headers = init?.headers;
|
||||
if (headers instanceof Headers) {
|
||||
return headers.get("Authorization") ?? "";
|
||||
}
|
||||
if (Array.isArray(headers)) {
|
||||
return headers.find(([key]) => key.toLowerCase() === "authorization")?.[1] ?? "";
|
||||
}
|
||||
return headers?.Authorization ?? headers?.authorization ?? "";
|
||||
}
|
||||
|
||||
async function runChutesCatalog(params: { apiKey?: string; discoveryApiKey?: string }) {
|
||||
const provider = await registerSingleProviderPlugin(plugin);
|
||||
const result = await provider.catalog?.run({
|
||||
@@ -101,8 +112,8 @@ describe("chutes implicit provider auth mode", () => {
|
||||
|
||||
const chutesCalls = fetchMock.mock.calls.filter(([url]) => String(url).includes("chutes.ai"));
|
||||
expect(chutesCalls.length).toBeGreaterThan(0);
|
||||
const request = chutesCalls[0]?.[1] as { headers?: Record<string, string> } | undefined;
|
||||
expect(request?.headers?.Authorization).toBe("Bearer my-chutes-access-token");
|
||||
const request = chutesCalls[0]?.[1] as { headers?: HeadersInit } | undefined;
|
||||
expect(readAuthorizationHeader(request)).toBe("Bearer my-chutes-access-token");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/chutes-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Chutes.ai provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/clickclack",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw ClickClack channel plugin",
|
||||
"type": "module",
|
||||
@@ -18,7 +18,7 @@
|
||||
"openclaw": "2026.5.28"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/cloudflare-ai-gateway-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Cloudflare AI Gateway provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/codex-supervisor",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Codex app-server fleet supervision plugin.",
|
||||
"type": "module",
|
||||
|
||||
4
extensions/codex/npm-shrinkwrap.json
generated
4
extensions/codex/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/codex",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/codex",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@openai/codex": "0.137.0",
|
||||
"typebox": "1.1.39",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/codex",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Codex app-server harness and model provider plugin with a Codex-managed GPT catalog.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -26,10 +26,10 @@
|
||||
"minHostVersion": ">=2026.5.1-beta.1"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/comfy-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw ComfyUI provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/copilot-proxy",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Copilot Proxy provider plugin",
|
||||
"type": "module",
|
||||
|
||||
4
extensions/copilot/npm-shrinkwrap.json
generated
4
extensions/copilot/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/copilot",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/copilot",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@github/copilot-sdk": "1.0.0-beta.9"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/copilot",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw GitHub Copilot agent runtime plugin (registers a `github-copilot` AgentHarness backed by @github/copilot-sdk over JSON-RPC to the GitHub Copilot CLI)",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -25,10 +25,10 @@
|
||||
"minHostVersion": ">=2026.5.28"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2",
|
||||
"openclawVersion": "2026.6.10-alpha.1",
|
||||
"bundledDist": false
|
||||
},
|
||||
"release": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/deepgram-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Deepgram media-understanding provider",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/deepinfra-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw DeepInfra provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/deepseek-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw DeepSeek provider plugin",
|
||||
"type": "module",
|
||||
|
||||
4
extensions/diagnostics-otel/npm-shrinkwrap.json
generated
4
extensions/diagnostics-otel/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/diagnostics-otel",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/diagnostics-otel",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@opentelemetry/api": "1.9.1",
|
||||
"@opentelemetry/api-logs": "0.218.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/diagnostics-otel",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw diagnostics OpenTelemetry exporter for metrics and traces.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -34,10 +34,10 @@
|
||||
"minHostVersion": ">=2026.4.25"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/diagnostics-prometheus",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/diagnostics-prometheus",
|
||||
"version": "2026.6.2"
|
||||
"version": "2026.6.10-alpha.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/diagnostics-prometheus",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw diagnostics Prometheus exporter for runtime metrics.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -21,10 +21,10 @@
|
||||
"minHostVersion": ">=2026.4.25"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/diffs-language-pack",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/diffs-language-pack",
|
||||
"version": "2026.6.2"
|
||||
"version": "2026.6.10-alpha.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/diffs-language-pack",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw diffs viewer syntax highlighting language pack",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -22,13 +22,13 @@
|
||||
"minHostVersion": ">=2026.5.27"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"assetScripts": {
|
||||
"build": "node ../../scripts/build-diffs-viewer-runtime.mjs full"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2",
|
||||
"openclawVersion": "2026.6.10-alpha.1",
|
||||
"staticAssets": [
|
||||
{
|
||||
"source": "./assets/viewer-runtime.js",
|
||||
|
||||
4
extensions/diffs/npm-shrinkwrap.json
generated
4
extensions/diffs/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/diffs",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/diffs",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@pierre/diffs": "1.2.4",
|
||||
"@pierre/theme": "1.0.3",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/diffs",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw read-only diff viewer plugin and file renderer for agents.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -29,13 +29,13 @@
|
||||
"minHostVersion": ">=2026.4.30"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"assetScripts": {
|
||||
"build": "node ../../scripts/build-diffs-viewer-runtime.mjs curated"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2",
|
||||
"openclawVersion": "2026.6.10-alpha.1",
|
||||
"staticAssets": [
|
||||
{
|
||||
"source": "./assets/viewer-runtime.js",
|
||||
|
||||
6
extensions/discord/npm-shrinkwrap.json
generated
6
extensions/discord/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/discord",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/discord",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@discordjs/voice": "0.19.2",
|
||||
"discord-api-types": "0.38.48",
|
||||
@@ -16,7 +16,7 @@
|
||||
"ws": "8.21.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/discord",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Discord channel plugin for channels, DMs, commands, and app events.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -20,7 +20,7 @@
|
||||
"openclaw": "2026.5.28"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
@@ -67,10 +67,10 @@
|
||||
"allowInvalidConfigRecovery": true
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/document-extract-plugin",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw local document extraction plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/duckduckgo-plugin",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw DuckDuckGo plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/elevenlabs-speech",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw ElevenLabs speech plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/exa-plugin",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Exa plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/fal-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw fal provider plugin",
|
||||
"type": "module",
|
||||
|
||||
6
extensions/feishu/npm-shrinkwrap.json
generated
6
extensions/feishu/npm-shrinkwrap.json
generated
@@ -1,19 +1,19 @@
|
||||
{
|
||||
"name": "@openclaw/feishu",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/feishu",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@larksuiteoapi/node-sdk": "1.66.0",
|
||||
"typebox": "1.1.39",
|
||||
"zod": "4.4.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/feishu",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Feishu/Lark channel plugin for chats and workplace tools (community maintained by @m1heng).",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -17,7 +17,7 @@
|
||||
"openclaw": "2026.5.28"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
@@ -51,10 +51,10 @@
|
||||
"minHostVersion": ">=2026.5.29"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/file-transfer",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw file transfer plugin (file_fetch, dir_list, dir_fetch, file_write)",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/firecrawl-plugin",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Firecrawl plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/fireworks-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Fireworks provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/github-copilot-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw GitHub Copilot provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/gmi-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw GMI Cloud provider plugin",
|
||||
"type": "module",
|
||||
|
||||
6
extensions/google-meet/npm-shrinkwrap.json
generated
6
extensions/google-meet/npm-shrinkwrap.json
generated
@@ -1,18 +1,18 @@
|
||||
{
|
||||
"name": "@openclaw/google-meet",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/google-meet",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"commander": "14.0.3",
|
||||
"typebox": "1.1.39"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/google-meet",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Google Meet participant plugin for joining calls through Chrome or Twilio transports.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -16,7 +16,7 @@
|
||||
"openclaw": "2026.5.28"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
@@ -33,10 +33,10 @@
|
||||
"minHostVersion": ">=2026.4.20"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/google-plugin",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Google plugin",
|
||||
"type": "module",
|
||||
|
||||
6
extensions/googlechat/npm-shrinkwrap.json
generated
6
extensions/googlechat/npm-shrinkwrap.json
generated
@@ -1,19 +1,19 @@
|
||||
{
|
||||
"name": "@openclaw/googlechat",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/googlechat",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"gaxios": "7.1.4",
|
||||
"google-auth-library": "10.6.2",
|
||||
"zod": "4.4.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/googlechat",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Google Chat channel plugin for spaces and direct messages.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -17,7 +17,7 @@
|
||||
"openclaw": "2026.5.28"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
@@ -75,10 +75,10 @@
|
||||
"minHostVersion": ">=2026.4.10"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/gradium-speech",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Gradium speech plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/groq-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Groq media-understanding provider",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/huggingface-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Hugging Face provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/image-generation-core",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw image generation runtime package",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/imessage",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw iMessage channel plugin using imsg on a signed-in Mac",
|
||||
"type": "module",
|
||||
@@ -43,10 +43,10 @@
|
||||
]
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
}
|
||||
},
|
||||
"pluginInspector": {
|
||||
|
||||
@@ -101,7 +101,7 @@ describe("monitorIMessageProvider watch.subscribe startup retry", () => {
|
||||
runtime: runtime as never,
|
||||
});
|
||||
|
||||
await vi.runAllTimersAsync();
|
||||
await vi.advanceTimersByTimeAsync(1_000);
|
||||
await monitorPromise;
|
||||
|
||||
expect(createIMessageRpcClientMock).toHaveBeenCalledTimes(2);
|
||||
@@ -146,7 +146,7 @@ describe("monitorIMessageProvider watch.subscribe startup retry", () => {
|
||||
runtime: runtime as never,
|
||||
}).catch((error: unknown) => error);
|
||||
|
||||
await vi.runAllTimersAsync();
|
||||
await vi.advanceTimersByTimeAsync(2_000);
|
||||
const monitorError = await monitorErrorPromise;
|
||||
|
||||
expect(monitorError).toBeInstanceOf(Error);
|
||||
|
||||
@@ -277,15 +277,15 @@ function hasIMessageEchoMatch(params: {
|
||||
if (!params.text && !fallbackMessageId) {
|
||||
continue;
|
||||
}
|
||||
const echoOptions =
|
||||
params.skipIdShortCircuit || params.includePendingText
|
||||
? {
|
||||
skipIdShortCircuit: params.skipIdShortCircuit,
|
||||
includePendingText: params.includePendingText,
|
||||
}
|
||||
: undefined;
|
||||
if (
|
||||
params.echoCache.has(
|
||||
scope,
|
||||
{ text: params.text, messageId: fallbackMessageId },
|
||||
{
|
||||
skipIdShortCircuit: params.skipIdShortCircuit,
|
||||
includePendingText: params.includePendingText,
|
||||
},
|
||||
)
|
||||
params.echoCache.has(scope, { text: params.text, messageId: fallbackMessageId }, echoOptions)
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/inworld-speech",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Inworld speech plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/irc",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw IRC channel plugin",
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/kilocode-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Kilo Gateway provider plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/kimi-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw Kimi provider plugin",
|
||||
"type": "module",
|
||||
|
||||
6
extensions/line/npm-shrinkwrap.json
generated
6
extensions/line/npm-shrinkwrap.json
generated
@@ -1,18 +1,18 @@
|
||||
{
|
||||
"name": "@openclaw/line",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/line",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@line/bot-sdk": "11.0.1",
|
||||
"zod": "4.4.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/line",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw LINE channel plugin for LINE Bot API chats.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -16,7 +16,7 @@
|
||||
"openclaw": "2026.5.28"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
@@ -46,10 +46,10 @@
|
||||
"minHostVersion": ">=2026.4.10"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/litellm-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw LiteLLM provider plugin",
|
||||
"type": "module",
|
||||
|
||||
4
extensions/llama-cpp/npm-shrinkwrap.json
generated
4
extensions/llama-cpp/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/llama-cpp-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/llama-cpp-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"node-llama-cpp": "3.18.1"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/llama-cpp-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw llama.cpp embedding provider plugin",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -23,10 +23,10 @@
|
||||
"minHostVersion": ">=2026.6.2"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"bundleRuntimeDependencies": false,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/llm-task",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw JSON-only LLM task plugin",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/lmstudio-provider",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw LM Studio provider plugin",
|
||||
"type": "module",
|
||||
|
||||
4
extensions/lobster/npm-shrinkwrap.json
generated
4
extensions/lobster/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/lobster",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/lobster",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@clawdbot/lobster": "2026.5.22",
|
||||
"typebox": "1.1.39"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/lobster",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "Lobster workflow tool plugin for typed pipelines and resumable approvals.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -24,10 +24,10 @@
|
||||
"minHostVersion": ">=2026.4.25"
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# Changelog
|
||||
|
||||
## 2026.6.10-alpha.1
|
||||
|
||||
### Changes
|
||||
|
||||
- Version alignment with core OpenClaw release numbers.
|
||||
|
||||
## 2026.6.3
|
||||
|
||||
### Changes
|
||||
|
||||
6
extensions/matrix/npm-shrinkwrap.json
generated
6
extensions/matrix/npm-shrinkwrap.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@openclaw/matrix",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@openclaw/matrix",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"dependencies": {
|
||||
"@matrix-org/matrix-sdk-crypto-nodejs": "0.6.0",
|
||||
"@matrix-org/matrix-sdk-crypto-wasm": "18.3.0",
|
||||
@@ -18,7 +18,7 @@
|
||||
"zod": "4.4.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/matrix",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Matrix channel plugin for rooms and direct messages.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -22,7 +22,7 @@
|
||||
"openclaw": "2026.5.28"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
@@ -88,10 +88,10 @@
|
||||
"allowInvalidConfigRecovery": true
|
||||
},
|
||||
"compat": {
|
||||
"pluginApi": ">=2026.6.2"
|
||||
"pluginApi": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"build": {
|
||||
"openclawVersion": "2026.6.2"
|
||||
"openclawVersion": "2026.6.10-alpha.1"
|
||||
},
|
||||
"release": {
|
||||
"publishToClawHub": true,
|
||||
|
||||
@@ -3,6 +3,7 @@ import fs from "node:fs";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-contracts";
|
||||
import { saveSessionStore, type SessionEntry } from "openclaw/plugin-sdk/session-store-runtime";
|
||||
import { afterEach, describe, expect, it } from "vitest";
|
||||
import {
|
||||
getMatrixExecApprovalApprovers,
|
||||
@@ -342,12 +343,12 @@ describe("matrix exec approvals", () => {
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it("scopes non-matrix turn sources to the stored matrix account", () => {
|
||||
it("scopes non-matrix turn sources to the stored matrix account", async () => {
|
||||
const tmpDir = createTempDir();
|
||||
const storePath = path.join(tmpDir, "sessions.json");
|
||||
fs.writeFileSync(
|
||||
await saveSessionStore(
|
||||
storePath,
|
||||
JSON.stringify({
|
||||
{
|
||||
"agent:ops-agent:matrix:channel:!room:example.org": {
|
||||
sessionId: "main",
|
||||
updatedAt: 1,
|
||||
@@ -359,8 +360,8 @@ describe("matrix exec approvals", () => {
|
||||
lastTo: "channel:C999",
|
||||
lastAccountId: "work",
|
||||
},
|
||||
}),
|
||||
"utf-8",
|
||||
} as Record<string, SessionEntry>,
|
||||
{ skipMaintenance: true },
|
||||
);
|
||||
const cfg = buildMultiAccountMatrixConfig({ sessionStorePath: storePath });
|
||||
const request = makeForeignChannelApprovalRequest({
|
||||
|
||||
@@ -7,6 +7,11 @@ import {
|
||||
testing as sessionBindingTesting,
|
||||
registerSessionBindingAdapter,
|
||||
} from "openclaw/plugin-sdk/session-binding-runtime";
|
||||
import {
|
||||
loadSessionStore,
|
||||
saveSessionStore,
|
||||
type SessionEntry,
|
||||
} from "openclaw/plugin-sdk/session-store-runtime";
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { installMatrixMonitorTestRuntime } from "../../test-runtime.js";
|
||||
import { MATRIX_OPENCLAW_FINALIZED_PREVIEW_KEY } from "../send/types.js";
|
||||
@@ -65,7 +70,7 @@ vi.mock("./replies.js", () => ({
|
||||
deliverMatrixReplies: deliverMatrixRepliesMock,
|
||||
}));
|
||||
|
||||
function writeMatrixSessionMeta(
|
||||
async function writeMatrixSessionMeta(
|
||||
storePath: string,
|
||||
sessionKey: string,
|
||||
origin: {
|
||||
@@ -75,10 +80,8 @@ function writeMatrixSessionMeta(
|
||||
nativeChannelId?: string;
|
||||
nativeDirectUserId?: string;
|
||||
},
|
||||
): void {
|
||||
const store = fs.existsSync(storePath)
|
||||
? (JSON.parse(fs.readFileSync(storePath, "utf8")) as Record<string, Record<string, unknown>>)
|
||||
: {};
|
||||
): Promise<void> {
|
||||
const store = loadSessionStore(storePath, { clone: false });
|
||||
const existing = store[sessionKey] ?? {
|
||||
sessionId: `sess-${Object.keys(store).length + 1}`,
|
||||
updatedAt: Date.now(),
|
||||
@@ -97,8 +100,7 @@ function writeMatrixSessionMeta(
|
||||
...origin,
|
||||
},
|
||||
};
|
||||
fs.mkdirSync(path.dirname(storePath), { recursive: true });
|
||||
fs.writeFileSync(storePath, JSON.stringify(store, null, 2), "utf8");
|
||||
await saveSessionStore(storePath, store, { skipMaintenance: true });
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -1153,7 +1155,7 @@ describe("matrix monitor handler pairing account scope", () => {
|
||||
const sendNotice = vi.fn(async () => "$notice");
|
||||
|
||||
try {
|
||||
writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
await writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
chatType: "direct",
|
||||
from: "matrix:@user:example.org",
|
||||
to: "room:!other:example.org",
|
||||
@@ -1207,7 +1209,7 @@ describe("matrix monitor handler pairing account scope", () => {
|
||||
}));
|
||||
|
||||
try {
|
||||
writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
await writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
chatType: "direct",
|
||||
from: "matrix:@user:example.org",
|
||||
to: "room:!other:example.org",
|
||||
@@ -1251,7 +1253,7 @@ describe("matrix monitor handler pairing account scope", () => {
|
||||
const sendNotice = vi.fn(async () => "$notice");
|
||||
|
||||
try {
|
||||
writeMatrixSessionMeta(storePath, "agent:ops:matrix:direct:@user:example.org", {
|
||||
await writeMatrixSessionMeta(storePath, "agent:ops:matrix:direct:@user:example.org", {
|
||||
chatType: "direct",
|
||||
from: "matrix:@user:example.org",
|
||||
to: "room:!other:example.org",
|
||||
@@ -1295,7 +1297,7 @@ describe("matrix monitor handler pairing account scope", () => {
|
||||
const sendNotice = vi.fn(async () => "$notice");
|
||||
|
||||
try {
|
||||
writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
await writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
chatType: "direct",
|
||||
from: "matrix:@user:example.org",
|
||||
to: "room:!other:example.org",
|
||||
@@ -1347,13 +1349,13 @@ describe("matrix monitor handler pairing account scope", () => {
|
||||
const sendNotice = vi.fn(async () => "$notice");
|
||||
|
||||
try {
|
||||
writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
await writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
chatType: "direct",
|
||||
from: "matrix:@user:example.org",
|
||||
to: "room:!other:example.org",
|
||||
nativeChannelId: "!other:example.org",
|
||||
});
|
||||
writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
await writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
chatType: "direct",
|
||||
from: "matrix:@other:example.org",
|
||||
to: "room:@other:example.org",
|
||||
@@ -1389,7 +1391,7 @@ describe("matrix monitor handler pairing account scope", () => {
|
||||
const sendNotice = vi.fn(async () => "$notice");
|
||||
|
||||
try {
|
||||
writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
await writeMatrixSessionMeta(storePath, "agent:ops:main", {
|
||||
chatType: "group",
|
||||
from: "matrix:channel:!group:example.org",
|
||||
to: "room:!group:example.org",
|
||||
@@ -1421,9 +1423,9 @@ describe("matrix monitor handler pairing account scope", () => {
|
||||
it("skips the shared-session notice when Matrix DMs are isolated per room", async () => {
|
||||
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "matrix-dm-room-scope-"));
|
||||
const storePath = path.join(tempDir, "sessions.json");
|
||||
fs.writeFileSync(
|
||||
await saveSessionStore(
|
||||
storePath,
|
||||
JSON.stringify({
|
||||
{
|
||||
"agent:ops:main": {
|
||||
sessionId: "sess-main",
|
||||
updatedAt: Date.now(),
|
||||
@@ -1433,8 +1435,8 @@ describe("matrix monitor handler pairing account scope", () => {
|
||||
accountId: "ops",
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf8",
|
||||
} as Record<string, SessionEntry>,
|
||||
{ skipMaintenance: true },
|
||||
);
|
||||
const sendNotice = vi.fn(async () => "$notice");
|
||||
|
||||
@@ -1468,9 +1470,9 @@ describe("matrix monitor handler pairing account scope", () => {
|
||||
it("skips the shared-session notice when a Matrix DM is explicitly bound", async () => {
|
||||
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "matrix-dm-bound-notice-"));
|
||||
const storePath = path.join(tempDir, "sessions.json");
|
||||
fs.writeFileSync(
|
||||
await saveSessionStore(
|
||||
storePath,
|
||||
JSON.stringify({
|
||||
{
|
||||
"agent:bound:session-1": {
|
||||
sessionId: "sess-bound",
|
||||
updatedAt: Date.now(),
|
||||
@@ -1480,8 +1482,8 @@ describe("matrix monitor handler pairing account scope", () => {
|
||||
accountId: "ops",
|
||||
},
|
||||
},
|
||||
}),
|
||||
"utf8",
|
||||
} as Record<string, SessionEntry>,
|
||||
{ skipMaintenance: true },
|
||||
);
|
||||
const sendNotice = vi.fn(async () => "$notice");
|
||||
const touch = vi.fn();
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import fs from "node:fs";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { saveSessionStore, type SessionEntry } from "openclaw/plugin-sdk/session-store-runtime";
|
||||
import { afterEach, describe, expect, it } from "vitest";
|
||||
import type { OpenClawConfig } from "./runtime-api.js";
|
||||
import { resolveMatrixOutboundSessionRoute } from "./session-route.js";
|
||||
@@ -27,21 +28,23 @@ const defaultAccountPerRoomDmMatrixConfig = {
|
||||
},
|
||||
} satisfies MatrixChannelConfig;
|
||||
|
||||
function createTempStore(entries: Record<string, unknown>): string {
|
||||
async function createTempStore(entries: Record<string, unknown>): Promise<string> {
|
||||
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "matrix-session-route-"));
|
||||
tempDirs.add(tempDir);
|
||||
const storePath = path.join(tempDir, "sessions.json");
|
||||
fs.writeFileSync(storePath, JSON.stringify(entries), "utf8");
|
||||
await saveSessionStore(storePath, entries as Record<string, SessionEntry>, {
|
||||
skipMaintenance: true,
|
||||
});
|
||||
return storePath;
|
||||
}
|
||||
|
||||
function createMatrixRouteConfig(
|
||||
async function createMatrixRouteConfig(
|
||||
entries: Record<string, unknown>,
|
||||
matrix: MatrixChannelConfig = perRoomDmMatrixConfig,
|
||||
): OpenClawConfig {
|
||||
): Promise<OpenClawConfig> {
|
||||
return {
|
||||
session: {
|
||||
store: createTempStore(entries),
|
||||
store: await createTempStore(entries),
|
||||
},
|
||||
channels: {
|
||||
matrix,
|
||||
@@ -127,14 +130,14 @@ function resolveUserRoute(params: { cfg: OpenClawConfig; accountId?: string; tar
|
||||
});
|
||||
}
|
||||
|
||||
function resolveUserRouteForCurrentSession(params: {
|
||||
async function resolveUserRouteForCurrentSession(params: {
|
||||
storedSession: Record<string, unknown>;
|
||||
accountId?: string;
|
||||
target?: string;
|
||||
matrix?: MatrixChannelConfig;
|
||||
}) {
|
||||
return resolveUserRoute({
|
||||
cfg: createMatrixRouteConfig(
|
||||
cfg: await createMatrixRouteConfig(
|
||||
{
|
||||
[currentDmSessionKey]: params.storedSession,
|
||||
},
|
||||
@@ -188,8 +191,8 @@ afterEach(() => {
|
||||
});
|
||||
|
||||
describe("resolveMatrixOutboundSessionRoute", () => {
|
||||
it("reuses the current DM room session for same-user sends when Matrix DMs are per-room", () => {
|
||||
const route = resolveUserRouteForCurrentSession({
|
||||
it("reuses the current DM room session for same-user sends when Matrix DMs are per-room", async () => {
|
||||
const route = await resolveUserRouteForCurrentSession({
|
||||
storedSession: createStoredDirectDmSession(),
|
||||
accountId: "ops",
|
||||
});
|
||||
@@ -197,8 +200,8 @@ describe("resolveMatrixOutboundSessionRoute", () => {
|
||||
expectCurrentDmRoomRoute(route);
|
||||
});
|
||||
|
||||
it("falls back to user-scoped routing when the current session is for another DM peer", () => {
|
||||
const route = resolveUserRouteForCurrentSession({
|
||||
it("falls back to user-scoped routing when the current session is for another DM peer", async () => {
|
||||
const route = await resolveUserRouteForCurrentSession({
|
||||
storedSession: createStoredDirectDmSession({ from: "matrix:@bob:example.org" }),
|
||||
accountId: "ops",
|
||||
});
|
||||
@@ -206,8 +209,8 @@ describe("resolveMatrixOutboundSessionRoute", () => {
|
||||
expectFallbackUserRoute(route);
|
||||
});
|
||||
|
||||
it("falls back to user-scoped routing when the current session belongs to another Matrix account", () => {
|
||||
const route = resolveUserRouteForCurrentSession({
|
||||
it("falls back to user-scoped routing when the current session belongs to another Matrix account", async () => {
|
||||
const route = await resolveUserRouteForCurrentSession({
|
||||
storedSession: createStoredDirectDmSession(),
|
||||
accountId: "support",
|
||||
});
|
||||
@@ -215,8 +218,8 @@ describe("resolveMatrixOutboundSessionRoute", () => {
|
||||
expectFallbackUserRoute(route);
|
||||
});
|
||||
|
||||
it("reuses the canonical DM room after user-target outbound metadata overwrites latest to fields", () => {
|
||||
const route = resolveUserRouteForCurrentSession({
|
||||
it("reuses the canonical DM room after user-target outbound metadata overwrites latest to fields", async () => {
|
||||
const route = await resolveUserRouteForCurrentSession({
|
||||
storedSession: createStoredDirectDmSession({
|
||||
from: "matrix:@bob:example.org",
|
||||
to: "room:@bob:example.org",
|
||||
@@ -231,8 +234,8 @@ describe("resolveMatrixOutboundSessionRoute", () => {
|
||||
expectCurrentDmRoomRoute(route);
|
||||
});
|
||||
|
||||
it("does not reuse the canonical DM room for a different Matrix user after latest metadata drift", () => {
|
||||
const route = resolveUserRouteForCurrentSession({
|
||||
it("does not reuse the canonical DM room for a different Matrix user after latest metadata drift", async () => {
|
||||
const route = await resolveUserRouteForCurrentSession({
|
||||
storedSession: createStoredDirectDmSession({
|
||||
from: "matrix:@bob:example.org",
|
||||
to: "room:@bob:example.org",
|
||||
@@ -248,8 +251,8 @@ describe("resolveMatrixOutboundSessionRoute", () => {
|
||||
expectFallbackUserRoute(route, { userId: "@bob:example.org" });
|
||||
});
|
||||
|
||||
it("does not reuse a room after the session metadata was overwritten by a non-DM Matrix send", () => {
|
||||
const route = resolveUserRouteForCurrentSession({
|
||||
it("does not reuse a room after the session metadata was overwritten by a non-DM Matrix send", async () => {
|
||||
const route = await resolveUserRouteForCurrentSession({
|
||||
storedSession: createStoredChannelSession(),
|
||||
accountId: "ops",
|
||||
});
|
||||
@@ -257,8 +260,8 @@ describe("resolveMatrixOutboundSessionRoute", () => {
|
||||
expectFallbackUserRoute(route);
|
||||
});
|
||||
|
||||
it("uses the effective default Matrix account when accountId is omitted", () => {
|
||||
const route = resolveUserRouteForCurrentSession({
|
||||
it("uses the effective default Matrix account when accountId is omitted", async () => {
|
||||
const route = await resolveUserRouteForCurrentSession({
|
||||
storedSession: createStoredDirectDmSession(),
|
||||
matrix: defaultAccountPerRoomDmMatrixConfig,
|
||||
});
|
||||
@@ -266,8 +269,8 @@ describe("resolveMatrixOutboundSessionRoute", () => {
|
||||
expectCurrentDmRoomRoute(route);
|
||||
});
|
||||
|
||||
it("reuses the current DM room when stored account metadata is missing", () => {
|
||||
const route = resolveUserRouteForCurrentSession({
|
||||
it("reuses the current DM room when stored account metadata is missing", async () => {
|
||||
const route = await resolveUserRouteForCurrentSession({
|
||||
storedSession: createStoredDirectDmSession({ accountId: null }),
|
||||
matrix: defaultAccountPerRoomDmMatrixConfig,
|
||||
});
|
||||
@@ -291,17 +294,17 @@ describe("resolveMatrixOutboundSessionRoute", () => {
|
||||
expect(channelRoute.threadId).toBe("$RootEvent:Example.Org");
|
||||
});
|
||||
|
||||
it("resolves per-room DM metadata from the base key when currentSessionKey has a thread suffix", () => {
|
||||
it("resolves per-room DM metadata from the base key when currentSessionKey has a thread suffix", async () => {
|
||||
const storedSession = createStoredDirectDmSession();
|
||||
const route = resolveUserRoute({
|
||||
cfg: createMatrixRouteConfig({
|
||||
cfg: await createMatrixRouteConfig({
|
||||
[currentDmSessionKey]: storedSession,
|
||||
}),
|
||||
accountId: "ops",
|
||||
target: "@alice:example.org",
|
||||
});
|
||||
const threadedRoute = resolveMatrixOutboundSessionRoute({
|
||||
cfg: createMatrixRouteConfig({
|
||||
cfg: await createMatrixRouteConfig({
|
||||
[route?.baseSessionKey ?? currentDmSessionKey]: storedSession,
|
||||
}),
|
||||
agentId: "main",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/mattermost",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"description": "OpenClaw Mattermost channel plugin",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -16,7 +16,7 @@
|
||||
"openclaw": "2026.5.28"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/media-understanding-core",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw media understanding runtime package",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openclaw/memory-core",
|
||||
"version": "2026.6.2",
|
||||
"version": "2026.6.10-alpha.1",
|
||||
"private": true,
|
||||
"description": "OpenClaw core memory search plugin",
|
||||
"type": "module",
|
||||
@@ -14,7 +14,7 @@
|
||||
"openclaw": "2026.5.28"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"openclaw": ">=2026.6.2"
|
||||
"openclaw": ">=2026.6.10-alpha.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"openclaw": {
|
||||
|
||||
@@ -1035,7 +1035,7 @@ describe("generateAndAppendDreamNarrative", () => {
|
||||
sessionId: "still-missing-non-dreaming",
|
||||
updatedAt: Date.now(),
|
||||
},
|
||||
},
|
||||
} as never,
|
||||
{ skipMaintenance: true },
|
||||
);
|
||||
await fs.writeFile(orphanPath, '{"runId":"dreaming-narrative-light-123"}\n', "utf-8");
|
||||
@@ -1105,7 +1105,7 @@ describe("generateAndAppendDreamNarrative", () => {
|
||||
sessionId: "still-live",
|
||||
updatedAt: Date.now(),
|
||||
},
|
||||
},
|
||||
} as never,
|
||||
{ skipMaintenance: true },
|
||||
);
|
||||
await fs.writeFile(orphanTranscript, '{"runId":"dreaming-narrative-deep-orphan"}\n', "utf-8");
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user