@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 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
@@ -0,0 +1,2 @@
1
+ import { i as buildMetaModelDefinition, n as META_MODEL_CATALOG, r as buildMetaCatalogModels, t as META_BASE_URL } from "./models-BNbptoDd.js";
2
+ export { META_BASE_URL, META_MODEL_CATALOG, buildMetaCatalogModels, buildMetaModelDefinition };
@@ -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 };
@@ -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,12 @@
1
+ {
2
+ "name": "@openclaw/meta-provider",
3
+ "version": "2026.7.1-beta.4",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "@openclaw/meta-provider",
9
+ "version": "2026.7.1-beta.4"
10
+ }
11
+ }
12
+ }
@@ -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
+ }