@openclaw/meta-provider 2026.7.1-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -0
- package/dist/api.js +4 -0
- package/dist/index.js +41 -0
- package/dist/models-BNbptoDd.js +69 -0
- package/dist/models.js +2 -0
- package/dist/onboard.js +27 -0
- package/dist/provider-catalog.js +12 -0
- package/dist/stream.js +25 -0
- package/dist/thinking.js +21 -0
- package/npm-shrinkwrap.json +12 -0
- package/openclaw.plugin.json +99 -0
- package/package.json +50 -0
package/README.md
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Meta provider
|
|
2
|
+
|
|
3
|
+
Bundled OpenClaw provider plugin for the **Meta API** — an OpenAI-compatible
|
|
4
|
+
**Responses API** endpoint (`POST /v1/responses`).
|
|
5
|
+
|
|
6
|
+
- **Base URL:** `https://api.meta.ai/v1`
|
|
7
|
+
- **Auth:** `Authorization: Bearer $MODEL_API_KEY`
|
|
8
|
+
- **Model:** `muse-spark-1.1` (reasoning model)
|
|
9
|
+
- Context window: 1,048,576 tokens (input + output share the budget)
|
|
10
|
+
- Maximum output: 131,072 tokens
|
|
11
|
+
- Reasoning effort: `minimal | low | medium | high | xhigh` (default: `high`)
|
|
12
|
+
- Vision: image input in `user` messages
|
|
13
|
+
- Tool calling + streaming
|
|
14
|
+
- Stateless encrypted reasoning replay (`store: false`)
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
Set the API key and select the model:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
export MODEL_API_KEY=<key>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```json5
|
|
25
|
+
// ~/.openclaw/openclaw.json
|
|
26
|
+
{
|
|
27
|
+
agents: {
|
|
28
|
+
defaults: {
|
|
29
|
+
model: { primary: "meta/muse-spark-1.1" },
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Or run onboarding and choose **Meta**.
|
|
36
|
+
|
|
37
|
+
## Thinking / reasoning
|
|
38
|
+
|
|
39
|
+
`--thinking <level>` and `/think <level>` map to Responses API `reasoning.effort`.
|
|
40
|
+
Default thinking level is `high`. `off` maps to `minimal` because Muse Spark does
|
|
41
|
+
not accept `none`.
|
|
42
|
+
|
|
43
|
+
## Docs
|
|
44
|
+
|
|
45
|
+
See `docs/providers/meta.md` for setup, onboarding, and smoke tests.
|
|
46
|
+
|
|
47
|
+
## Live test
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
export MODEL_API_KEY=<key>
|
|
51
|
+
pnpm test:live -- extensions/meta/meta.live.test.ts
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Live tests call `muse-spark-1.1` on `/v1/responses`.
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { i as buildMetaModelDefinition, n as META_MODEL_CATALOG, r as buildMetaCatalogModels, t as META_BASE_URL } from "./models-BNbptoDd.js";
|
|
2
|
+
import { META_DEFAULT_MODEL_REF, applyMetaConfig } from "./onboard.js";
|
|
3
|
+
import { buildMetaProvider } from "./provider-catalog.js";
|
|
4
|
+
export { META_BASE_URL, META_DEFAULT_MODEL_REF, META_MODEL_CATALOG, applyMetaConfig, buildMetaCatalogModels, buildMetaModelDefinition, buildMetaProvider };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { META_DEFAULT_MODEL_REF, applyMetaConfig } from "./onboard.js";
|
|
2
|
+
import { buildMetaProvider } from "./provider-catalog.js";
|
|
3
|
+
import { wrapMetaProviderStream } from "./stream.js";
|
|
4
|
+
import { resolveMetaThinkingProfile } from "./thinking.js";
|
|
5
|
+
import { defineSingleProviderPluginEntry } from "openclaw/plugin-sdk/provider-entry";
|
|
6
|
+
import { OPENAI_COMPATIBLE_REPLAY_HOOKS } from "openclaw/plugin-sdk/provider-model-shared";
|
|
7
|
+
var meta_default = defineSingleProviderPluginEntry({
|
|
8
|
+
id: "meta",
|
|
9
|
+
name: "Meta Provider",
|
|
10
|
+
description: "Bundled Meta provider plugin",
|
|
11
|
+
provider: {
|
|
12
|
+
label: "Meta",
|
|
13
|
+
docsPath: "/providers/meta",
|
|
14
|
+
auth: [{
|
|
15
|
+
methodId: "api-key",
|
|
16
|
+
label: "Meta API key",
|
|
17
|
+
hint: "Meta (Responses API)",
|
|
18
|
+
optionKey: "metaApiKey",
|
|
19
|
+
flagName: "--meta-api-key",
|
|
20
|
+
envVar: "MODEL_API_KEY",
|
|
21
|
+
promptMessage: "Enter Meta API key",
|
|
22
|
+
defaultModel: META_DEFAULT_MODEL_REF,
|
|
23
|
+
applyConfig: (cfg) => applyMetaConfig(cfg),
|
|
24
|
+
noteMessage: ["Meta provides Responses API inference."].join("\n"),
|
|
25
|
+
noteTitle: "Meta",
|
|
26
|
+
wizard: {
|
|
27
|
+
groupLabel: "Meta",
|
|
28
|
+
groupHint: "Meta (Responses API)"
|
|
29
|
+
}
|
|
30
|
+
}],
|
|
31
|
+
catalog: {
|
|
32
|
+
buildProvider: buildMetaProvider,
|
|
33
|
+
buildStaticProvider: buildMetaProvider
|
|
34
|
+
},
|
|
35
|
+
...OPENAI_COMPATIBLE_REPLAY_HOOKS,
|
|
36
|
+
wrapStreamFn: wrapMetaProviderStream,
|
|
37
|
+
resolveThinkingProfile: ({ modelId }) => resolveMetaThinkingProfile(modelId)
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
//#endregion
|
|
41
|
+
export { meta_default as default };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { buildManifestModelProviderConfig } from "openclaw/plugin-sdk/provider-catalog-shared";
|
|
2
|
+
//#endregion
|
|
3
|
+
//#region extensions/meta/models.ts
|
|
4
|
+
/**
|
|
5
|
+
* Meta model catalog helpers derived from the plugin manifest.
|
|
6
|
+
*/
|
|
7
|
+
const META_MANIFEST_CATALOG = {
|
|
8
|
+
"providers": { "meta": {
|
|
9
|
+
"baseUrl": "https://api.meta.ai/v1",
|
|
10
|
+
"api": "openai-responses",
|
|
11
|
+
"models": [{
|
|
12
|
+
"id": "muse-spark-1.1",
|
|
13
|
+
"name": "Muse Spark 1.1",
|
|
14
|
+
"reasoning": true,
|
|
15
|
+
"input": ["text", "image"],
|
|
16
|
+
"contextWindow": 1048576,
|
|
17
|
+
"maxTokens": 131072,
|
|
18
|
+
"thinkingLevelMap": {
|
|
19
|
+
"off": "minimal",
|
|
20
|
+
"minimal": "minimal",
|
|
21
|
+
"low": "low",
|
|
22
|
+
"medium": "medium",
|
|
23
|
+
"high": "high",
|
|
24
|
+
"xhigh": "xhigh"
|
|
25
|
+
},
|
|
26
|
+
"compat": {
|
|
27
|
+
"supportsTools": true,
|
|
28
|
+
"supportsReasoningEffort": true,
|
|
29
|
+
"supportedReasoningEfforts": [
|
|
30
|
+
"minimal",
|
|
31
|
+
"low",
|
|
32
|
+
"medium",
|
|
33
|
+
"high",
|
|
34
|
+
"xhigh"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"cost": {
|
|
38
|
+
"input": 0,
|
|
39
|
+
"output": 0,
|
|
40
|
+
"cacheRead": 0,
|
|
41
|
+
"cacheWrite": 0
|
|
42
|
+
}
|
|
43
|
+
}]
|
|
44
|
+
} },
|
|
45
|
+
"discovery": { "meta": "static" }
|
|
46
|
+
}.providers["meta"];
|
|
47
|
+
/** Base URL for Meta OpenAI-compatible inference. */
|
|
48
|
+
const META_BASE_URL = META_MANIFEST_CATALOG.baseUrl;
|
|
49
|
+
/** Meta model catalog entries from the plugin manifest. */
|
|
50
|
+
const META_MODEL_CATALOG = META_MANIFEST_CATALOG.models;
|
|
51
|
+
/** Builds normalized Meta catalog model definitions. */
|
|
52
|
+
function buildMetaCatalogModels() {
|
|
53
|
+
return buildManifestModelProviderConfig({
|
|
54
|
+
providerId: "meta",
|
|
55
|
+
catalog: META_MANIFEST_CATALOG
|
|
56
|
+
}).models;
|
|
57
|
+
}
|
|
58
|
+
/** Builds one normalized Meta model definition from a manifest entry. */
|
|
59
|
+
function buildMetaModelDefinition(model) {
|
|
60
|
+
return buildManifestModelProviderConfig({
|
|
61
|
+
providerId: "meta",
|
|
62
|
+
catalog: {
|
|
63
|
+
...META_MANIFEST_CATALOG,
|
|
64
|
+
models: [model]
|
|
65
|
+
}
|
|
66
|
+
}).models[0];
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { buildMetaModelDefinition as i, META_MODEL_CATALOG as n, buildMetaCatalogModels as r, META_BASE_URL as t };
|
package/dist/models.js
ADDED
package/dist/onboard.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { i as buildMetaModelDefinition, n as META_MODEL_CATALOG, t as META_BASE_URL } from "./models-BNbptoDd.js";
|
|
2
|
+
import { createModelCatalogPresetAppliers } from "openclaw/plugin-sdk/provider-onboard";
|
|
3
|
+
//#region extensions/meta/onboard.ts
|
|
4
|
+
/**
|
|
5
|
+
* Meta onboarding config helpers.
|
|
6
|
+
*/
|
|
7
|
+
/** Default Meta model reference used after onboarding. */
|
|
8
|
+
const META_DEFAULT_MODEL_REF = "meta/muse-spark-1.1";
|
|
9
|
+
const metaPresetAppliers = createModelCatalogPresetAppliers({
|
|
10
|
+
primaryModelRef: META_DEFAULT_MODEL_REF,
|
|
11
|
+
resolveParams: (_cfg) => ({
|
|
12
|
+
providerId: "meta",
|
|
13
|
+
api: "openai-responses",
|
|
14
|
+
baseUrl: META_BASE_URL,
|
|
15
|
+
catalogModels: META_MODEL_CATALOG.map(buildMetaModelDefinition),
|
|
16
|
+
aliases: [{
|
|
17
|
+
modelRef: META_DEFAULT_MODEL_REF,
|
|
18
|
+
alias: "Muse Spark 1.1"
|
|
19
|
+
}]
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
/** Applies Meta provider/catalog config and default model aliases. */
|
|
23
|
+
function applyMetaConfig(cfg) {
|
|
24
|
+
return metaPresetAppliers.applyConfig(cfg);
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { META_DEFAULT_MODEL_REF, applyMetaConfig };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { r as buildMetaCatalogModels, t as META_BASE_URL } from "./models-BNbptoDd.js";
|
|
2
|
+
//#region extensions/meta/provider-catalog.ts
|
|
3
|
+
/** Builds the Meta OpenAI-compatible model provider config. */
|
|
4
|
+
function buildMetaProvider() {
|
|
5
|
+
return {
|
|
6
|
+
baseUrl: META_BASE_URL,
|
|
7
|
+
api: "openai-responses",
|
|
8
|
+
models: buildMetaCatalogModels()
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { buildMetaProvider };
|
package/dist/stream.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { streamSimple } from "openclaw/plugin-sdk/llm";
|
|
2
|
+
import { streamWithPayloadPatch } from "openclaw/plugin-sdk/provider-stream-shared";
|
|
3
|
+
//#region extensions/meta/stream.ts
|
|
4
|
+
const META_REASONING_ENCRYPTED_CONTENT_INCLUDE = "reasoning.encrypted_content";
|
|
5
|
+
function ensureMetaResponsesReplayFields(payloadObj) {
|
|
6
|
+
const existing = payloadObj.include;
|
|
7
|
+
const include = Array.isArray(existing) ? existing.filter((entry) => typeof entry === "string") : [];
|
|
8
|
+
if (!include.includes(META_REASONING_ENCRYPTED_CONTENT_INCLUDE)) include.push(META_REASONING_ENCRYPTED_CONTENT_INCLUDE);
|
|
9
|
+
payloadObj.include = include;
|
|
10
|
+
payloadObj.store = false;
|
|
11
|
+
}
|
|
12
|
+
function createMetaResponsesWrapper(baseStreamFn) {
|
|
13
|
+
const underlying = baseStreamFn ?? streamSimple;
|
|
14
|
+
return (model, context, options) => streamWithPayloadPatch(underlying, model, context, options, (payloadObj) => {
|
|
15
|
+
if (model.provider !== "meta" || model.api !== "openai-responses") return;
|
|
16
|
+
if (!model.reasoning) return;
|
|
17
|
+
ensureMetaResponsesReplayFields(payloadObj);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function wrapMetaProviderStream(ctx) {
|
|
21
|
+
if (ctx.provider !== "meta" || ctx.model?.api !== "openai-responses") return;
|
|
22
|
+
return createMetaResponsesWrapper(ctx.streamFn);
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { createMetaResponsesWrapper, wrapMetaProviderStream };
|
package/dist/thinking.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region extensions/meta/thinking.ts
|
|
2
|
+
const META_REASONING_MODEL_ID = "muse-spark-1.1";
|
|
3
|
+
function isMetaReasoningModelId(modelId) {
|
|
4
|
+
return modelId.toLowerCase() === META_REASONING_MODEL_ID;
|
|
5
|
+
}
|
|
6
|
+
const META_THINKING_PROFILE = {
|
|
7
|
+
levels: [
|
|
8
|
+
"off",
|
|
9
|
+
"minimal",
|
|
10
|
+
"low",
|
|
11
|
+
"medium",
|
|
12
|
+
"high",
|
|
13
|
+
"xhigh"
|
|
14
|
+
].map((id) => ({ id })),
|
|
15
|
+
defaultLevel: "high"
|
|
16
|
+
};
|
|
17
|
+
function resolveMetaThinkingProfile(modelId) {
|
|
18
|
+
return isMetaReasoningModelId(modelId) ? META_THINKING_PROFILE : void 0;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { resolveMetaThinkingProfile };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "meta",
|
|
3
|
+
"activation": {
|
|
4
|
+
"onStartup": false
|
|
5
|
+
},
|
|
6
|
+
"enabledByDefault": true,
|
|
7
|
+
"providers": ["meta"],
|
|
8
|
+
"providerEndpoints": [
|
|
9
|
+
{
|
|
10
|
+
"endpointClass": "meta-native",
|
|
11
|
+
"hosts": ["api.meta.ai"]
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"providerRequest": {
|
|
15
|
+
"providers": {
|
|
16
|
+
"meta": {
|
|
17
|
+
"family": "meta"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"modelCatalog": {
|
|
22
|
+
"providers": {
|
|
23
|
+
"meta": {
|
|
24
|
+
"baseUrl": "https://api.meta.ai/v1",
|
|
25
|
+
"api": "openai-responses",
|
|
26
|
+
"models": [
|
|
27
|
+
{
|
|
28
|
+
"id": "muse-spark-1.1",
|
|
29
|
+
"name": "Muse Spark 1.1",
|
|
30
|
+
"reasoning": true,
|
|
31
|
+
"input": ["text", "image"],
|
|
32
|
+
"contextWindow": 1048576,
|
|
33
|
+
"maxTokens": 131072,
|
|
34
|
+
"thinkingLevelMap": {
|
|
35
|
+
"off": "minimal",
|
|
36
|
+
"minimal": "minimal",
|
|
37
|
+
"low": "low",
|
|
38
|
+
"medium": "medium",
|
|
39
|
+
"high": "high",
|
|
40
|
+
"xhigh": "xhigh"
|
|
41
|
+
},
|
|
42
|
+
"compat": {
|
|
43
|
+
"supportsTools": true,
|
|
44
|
+
"supportsReasoningEffort": true,
|
|
45
|
+
"supportedReasoningEfforts": [
|
|
46
|
+
"minimal",
|
|
47
|
+
"low",
|
|
48
|
+
"medium",
|
|
49
|
+
"high",
|
|
50
|
+
"xhigh"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"cost": {
|
|
54
|
+
"input": 0,
|
|
55
|
+
"output": 0,
|
|
56
|
+
"cacheRead": 0,
|
|
57
|
+
"cacheWrite": 0
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"discovery": {
|
|
64
|
+
"meta": "static"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"setup": {
|
|
68
|
+
"providers": [
|
|
69
|
+
{
|
|
70
|
+
"id": "meta",
|
|
71
|
+
"authMethods": ["api-key"],
|
|
72
|
+
"envVars": ["MODEL_API_KEY"]
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"providerAuthChoices": [
|
|
77
|
+
{
|
|
78
|
+
"provider": "meta",
|
|
79
|
+
"method": "api-key",
|
|
80
|
+
"choiceId": "meta-api-key",
|
|
81
|
+
"appGuidedSecret": true,
|
|
82
|
+
"choiceLabel": "Meta API key",
|
|
83
|
+
"choiceHint": "Meta (Responses API)",
|
|
84
|
+
"groupId": "meta",
|
|
85
|
+
"groupLabel": "Meta",
|
|
86
|
+
"groupHint": "Meta (Responses API)",
|
|
87
|
+
"onboardingFeatured": true,
|
|
88
|
+
"optionKey": "metaApiKey",
|
|
89
|
+
"cliFlag": "--meta-api-key",
|
|
90
|
+
"cliOption": "--meta-api-key <key>",
|
|
91
|
+
"cliDescription": "Meta API key"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"configSchema": {
|
|
95
|
+
"type": "object",
|
|
96
|
+
"additionalProperties": false,
|
|
97
|
+
"properties": {}
|
|
98
|
+
}
|
|
99
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@openclaw/meta-provider",
|
|
3
|
+
"version": "2026.7.1-beta.4",
|
|
4
|
+
"description": "OpenClaw Meta provider plugin.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/openclaw/openclaw"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"openclaw": {
|
|
11
|
+
"extensions": [
|
|
12
|
+
"./index.ts"
|
|
13
|
+
],
|
|
14
|
+
"install": {
|
|
15
|
+
"clawhubSpec": "clawhub:@openclaw/meta-provider",
|
|
16
|
+
"npmSpec": "@openclaw/meta-provider",
|
|
17
|
+
"defaultChoice": "npm",
|
|
18
|
+
"minHostVersion": ">=2026.6.11"
|
|
19
|
+
},
|
|
20
|
+
"compat": {
|
|
21
|
+
"pluginApi": ">=2026.7.1-beta.4"
|
|
22
|
+
},
|
|
23
|
+
"build": {
|
|
24
|
+
"openclawVersion": "2026.7.1-beta.4",
|
|
25
|
+
"bundledDist": true
|
|
26
|
+
},
|
|
27
|
+
"release": {
|
|
28
|
+
"publishToClawHub": true,
|
|
29
|
+
"publishToNpm": true
|
|
30
|
+
},
|
|
31
|
+
"runtimeExtensions": [
|
|
32
|
+
"./dist/index.js"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist/**",
|
|
37
|
+
"openclaw.plugin.json",
|
|
38
|
+
"npm-shrinkwrap.json",
|
|
39
|
+
"README.md"
|
|
40
|
+
],
|
|
41
|
+
"peerDependencies": {
|
|
42
|
+
"openclaw": ">=2026.7.1-beta.4"
|
|
43
|
+
},
|
|
44
|
+
"peerDependenciesMeta": {
|
|
45
|
+
"openclaw": {
|
|
46
|
+
"optional": true
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"bundledDependencies": []
|
|
50
|
+
}
|