openclaw/extensions/meta
Peter Steinberger 218dcd815a
feat(tooling): enforce noUncheckedIndexedAccess in the extensions lane (NUIA phase 4) (#105132)
* fix(extensions): make indexed access explicit across channel plugins

Transport-payload-safe burn-down: malformed Telegram/Discord/QQ/LINE
and sibling channel input keeps existing skip paths; no synthesized
fields, no new throws in delivery loops. Zalo escape sentinels preserve
literal matches instead of undefined replacements.

* fix(extensions): make indexed access explicit across provider and memory plugins

Stream and model iteration, tool-block guards, capture guards, and
sparse accumulators; singleton model reads carry named invariants.

* fix(extensions): make indexed access explicit across tooling plugins, flip the extensions lane

Remaining plugins (oc-path, qa-lab, browser, logbook, and siblings) plus
the tsconfig.extensions.json flag flip. Cleanup: logbook sampleFrames
NaN index at max=1, QA retry clamp at non-positive attempts, dead Canvas
probe and OpenShell no-op slice removed, twitch test setup leak excluded
from the prod lane.

* refactor(plugin-sdk): expose expectDefined via a focused SDK subpath

Extensions imported @openclaw/normalization-core directly, crossing the
external-plugin packaging boundary (it only worked because the runtime
builder bundles undeclared workspace helpers). expect-runtime joins the
canonical entrypoints JSON, generated exports, API baseline, docs, and
subpath contract test; all 78 extension imports now use the SDK seam.
Two scanner-shaped locals renamed for review-bundle hygiene.

* chore(plugin-sdk): raise surface budgets for the expect-runtime subpath

One new entrypoint with one callable export, added intentionally as the
packaging-honest seam for extension invariant helpers.
2026-07-12 09:17:31 +01:00
..
api.ts
index.test.ts fix(providers): align Meta Model API contract (#103680) 2026-07-10 05:24:14 -07:00
index.ts
meta.live.test.ts fix(providers): align Meta Model API contract (#103680) 2026-07-10 05:24:14 -07:00
models.ts feat(tooling): enforce noUncheckedIndexedAccess in the extensions lane (NUIA phase 4) (#105132) 2026-07-12 09:17:31 +01:00
npm-shrinkwrap.json chore(release): set version to 2026.7.2 2026-07-11 04:00:49 +01:00
onboard.ts chore(tooling): enforce formatting and refresh TypeScript checks (#104239) 2026-07-11 01:09:51 -07:00
openclaw.plugin.json fix(providers): align Meta Model API contract (#103680) 2026-07-10 05:24:14 -07:00
package.json chore(release): set version to 2026.7.2 2026-07-11 04:00:49 +01:00
provider-catalog.ts
README.md fix(providers): align Meta Model API contract (#103680) 2026-07-10 05:24:14 -07:00
stream.ts chore(tooling): enforce formatting and refresh TypeScript checks (#104239) 2026-07-11 01:09:51 -07:00
thinking.ts chore(tooling): enforce formatting and refresh TypeScript checks (#104239) 2026-07-11 01:09:51 -07:00
tsconfig.json

Meta provider

Bundled OpenClaw provider plugin for the Meta API — an OpenAI-compatible Responses API endpoint (POST /v1/responses).

  • Base URL: https://api.meta.ai/v1
  • Auth: Authorization: Bearer $MODEL_API_KEY
  • Model: muse-spark-1.1 (reasoning model)
    • Context window: 1,048,576 tokens (input + output share the budget)
    • Maximum output: 131,072 tokens
    • Reasoning effort: minimal | low | medium | high | xhigh (default: high)
    • Vision: image input in user messages
    • Tool calling + streaming
    • Stateless encrypted reasoning replay (store: false)

Usage

Set the API key and select the model:

export MODEL_API_KEY=<key>
// ~/.openclaw/openclaw.json
{
  agents: {
    defaults: {
      model: { primary: "meta/muse-spark-1.1" },
    },
  },
}

Or run onboarding and choose Meta.

Thinking / reasoning

--thinking <level> and /think <level> map to Responses API reasoning.effort. Default thinking level is high. off maps to minimal because Muse Spark does not accept none.

Docs

See docs/providers/meta.md for setup, onboarding, and smoke tests.

Live test

export MODEL_API_KEY=<key>
pnpm test:live -- extensions/meta/meta.live.test.ts

Live tests call muse-spark-1.1 on /v1/responses.