docs: refresh legacy manifest contract refs

This commit is contained in:
Peter Steinberger 2026-04-04 20:04:11 +01:00
parent c488becf43
commit 6d5e2c7e6b
No known key found for this signature in database
3 changed files with 19 additions and 11 deletions

View File

@ -68,7 +68,7 @@ cat ~/.openclaw/openclaw.json
- OpenCode provider override warnings (`models.providers.opencode` / `models.providers.opencode-go`).
- OAuth TLS prerequisites check for OpenAI Codex OAuth profiles.
- Legacy on-disk state migration (sessions/agent dir/WhatsApp auth).
- Legacy plugin manifest contract key migration (`speechProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders` → `contracts`).
- Legacy plugin manifest contract key migration (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders` → `contracts`).
- Legacy cron store migration (`jobId`, `schedule.cron`, top-level delivery/payload fields, payload `provider`, simple `notify: true` webhook fallback jobs).
- Session lock file inspection and stale lock cleanup.
- State integrity and permissions checks (sessions, transcripts, state dir).
@ -229,11 +229,14 @@ repeat no-op `doctor --fix` changes.
### 3a) Legacy plugin manifest migrations
Doctor scans all installed plugin manifests for deprecated top-level capability keys
(`speechProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`).
When found, it offers to move them into the `contracts` object and rewrite the manifest
file in-place. This migration is idempotent; if the `contracts` key already has the
same values, the legacy key is removed without duplicating the data.
Doctor scans all installed plugin manifests for deprecated top-level capability
keys (`speechProviders`, `realtimeTranscriptionProviders`,
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
`imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`,
`webSearchProviders`). When found, it offers to move them into the `contracts`
object and rewrite the manifest file in-place. This migration is idempotent;
if the `contracts` key already has the same values, the legacy key is removed
without duplicating the data.
### 3b) Legacy cron store migrations

View File

@ -300,7 +300,8 @@ That same pattern should be preferred for future capabilities.
### Multi-capability company plugin example
A company plugin should feel cohesive from the outside. If OpenClaw has shared
contracts for models, speech, media understanding, and web search, a vendor can
contracts for models, speech, realtime voice, media understanding,
image generation, video generation, web fetch, and web search, a vendor can
own all of its surfaces in one place:
```ts

View File

@ -231,6 +231,7 @@ Each list is optional:
| `realtimeVoiceProviders` | `string[]` | Realtime-voice provider ids this plugin owns. |
| `mediaUnderstandingProviders` | `string[]` | Media-understanding provider ids this plugin owns. |
| `imageGenerationProviders` | `string[]` | Image-generation provider ids this plugin owns. |
| `videoGenerationProviders` | `string[]` | Video-generation provider ids this plugin owns. |
| `webFetchProviders` | `string[]` | Web-fetch provider ids this plugin owns. |
| `webSearchProviders` | `string[]` | Web-search provider ids this plugin owns. |
| `tools` | `string[]` | Agent tool names this plugin owns for bundled contract checks. |
@ -305,10 +306,13 @@ Fields:
| `modelPrefixes` | `string[]` | Prefixes matched with `startsWith` against shorthand model ids. |
| `modelPatterns` | `string[]` | Regex sources matched against shorthand model ids after profile suffix removal. |
Legacy top-level `speechProviders`, `mediaUnderstandingProviders`, and
`imageGenerationProviders` are deprecated. Use `openclaw doctor --fix` to move
them under `contracts`; normal manifest loading no longer treats them as
capability ownership.
Legacy top-level capability keys are deprecated. Use `openclaw doctor --fix` to
move `speechProviders`, `realtimeTranscriptionProviders`,
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
`imageGenerationProviders`, `videoGenerationProviders`,
`webFetchProviders`, and `webSearchProviders` under `contracts`; normal
manifest loading no longer treats those top-level fields as capability
ownership.
## Manifest versus package.json