mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-12 21:53:00 -06:00
feat(claws): apply schema-v1 profile requirements (#115962)
* test(claws): model provenance columns in CLI state mock * fix(claws): normalize owned upgrade preflight * fix(claws): normalize owned upgrade preflight * fix(claws): normalize owned upgrade preflight * fix(claws): satisfy current validation gates
This commit is contained in:
+58
-18
@@ -63,12 +63,17 @@ concise handoff with evidence.
|
||||
```
|
||||
|
||||
OpenClaw automatically discovers the optional `profiles/openclaw.yml` file.
|
||||
There is no manifest pointer. Other harnesses may discover their own
|
||||
No manifest pointer is required. Other harnesses may discover their own
|
||||
conventional profile, such as `profiles/codex.yml`, without changing the
|
||||
portable manifest.
|
||||
|
||||
Experimental packages that used `metadata.openclaw.config` must move that file
|
||||
to `profiles/openclaw.yml` and remove the metadata entry.
|
||||
The older `metadata.openclaw.config` pointer is deprecated but still read, so
|
||||
packages published against it keep working. Reading one reports a
|
||||
`deprecated_openclaw_profile_pointer` warning; move that file to
|
||||
`profiles/openclaw.yml` and remove the metadata entry. A pointer that is not a
|
||||
package-relative `.yml`/`.yaml` path is rejected, and a pointer that references
|
||||
a different file while `profiles/openclaw.yml` also exists is rejected as a
|
||||
conflict.
|
||||
|
||||
```yaml
|
||||
schemaVersion: 1
|
||||
@@ -110,6 +115,35 @@ The conventional profile is limited to 256 KiB, must be JSON-compatible YAML, ma
|
||||
not use aliases, anchors, tags, or merge keys, and must be a regular,
|
||||
non-symlinked, non-hardlinked file inside the package.
|
||||
|
||||
An OpenClaw profile may also declare harness-specific extension requirements:
|
||||
|
||||
```yaml
|
||||
schemaVersion: 1
|
||||
agent: {}
|
||||
extensions:
|
||||
- id: incident-tools
|
||||
kind: plugin
|
||||
format: claude
|
||||
source: clawhub
|
||||
ref: "@acme/incident-tools"
|
||||
version: 2.0.0
|
||||
```
|
||||
|
||||
`format` asserts the artifact format that OpenClaw must detect (`openclaw`,
|
||||
`claude`, `codex`, or `cursor`). The canonical plugin preflight resolves the
|
||||
exact artifact and reports which components the current OpenClaw adapter maps
|
||||
and which remain unavailable. Missing identity, integrity, format detection, or
|
||||
adapter identity blocks apply. Extension-backed plugins use the existing
|
||||
plugin installer and ownership model; they are shared host requirements, not
|
||||
Claw-owned members or a second package system.
|
||||
|
||||
OpenClaw ignores foreign harness profiles during apply. Package integrity still
|
||||
covers every published package byte, while a development snapshot binds the
|
||||
portable manifest, bootstrap and workspace sources, and the selected OpenClaw
|
||||
profile. Status and doctor report adapter mapping drift or unavailable
|
||||
inspection. Export writes extension-backed plugins to `profiles/openclaw.yml`
|
||||
and does not duplicate them in the portable `packages` list.
|
||||
|
||||
Package and workspace paths must remain inside the package root. Manifests are
|
||||
limited to 1 MiB, package metadata to 256 KiB, and workspace sources enforce
|
||||
separate per-file and aggregate limits. Workspace sources also reject symlinked
|
||||
@@ -174,10 +208,13 @@ Skills and plugins use exact ClawHub versions:
|
||||
|
||||
The dry run uses the existing skill and plugin preflight paths to resolve the
|
||||
exact artifact, integrity, and any ClawHub trust warning before consent. The
|
||||
warning remains visible in the integrity-bound plan. Apply installs missing artifacts
|
||||
or reuses matching ones and records whether the Claw introduced or referenced
|
||||
each resource. Plugins remain process-wide OpenClaw capabilities rather than
|
||||
per-agent installations.
|
||||
warning remains visible in the integrity-bound plan. Each requirement is shown
|
||||
as satisfied, missing-installable, conflicting, or setup-required. The exact
|
||||
plan consent approves missing installs; OpenClaw completes those canonical
|
||||
plugin actions before creating the agent or workspace. Apply reuses matching
|
||||
artifacts and records whether the Claw introduced or referenced each resource.
|
||||
Plugins remain process-wide OpenClaw capabilities rather than per-agent
|
||||
installations.
|
||||
|
||||
Cron jobs declare scheduled work for the new agent:
|
||||
|
||||
@@ -222,7 +259,9 @@ removal follow the same ownership policy as other Claw resources.
|
||||
|
||||
## Inspect and preview
|
||||
|
||||
Validate the source without planning local changes:
|
||||
Validate the source without planning local changes. For OpenClaw profile
|
||||
extensions, inspect also performs the canonical read-only artifact probe and
|
||||
reports mapped and unavailable components:
|
||||
|
||||
```bash
|
||||
openclaw claws inspect ./incident-triage.claw.json
|
||||
@@ -252,11 +291,11 @@ defaults collide with local state. For disposable profiles and parallel validati
|
||||
pass an explicit `--workspace`; `OPENCLAW_STATE_DIR` relocates runtime state but
|
||||
does not change the default workspace location.
|
||||
|
||||
Adding a Claw creates the new agent and workspace configuration, seeds optional
|
||||
first-run instructions, writes declared workspace assets, installs or reuses
|
||||
declared skill and plugin artifacts, and records package, MCP, and cron
|
||||
provenance. Existing files are not overwritten, and retries fail closed when
|
||||
owned content drifted.
|
||||
Adding a Claw first realizes consented shared plugin requirements, then creates
|
||||
the new agent and workspace configuration, seeds optional first-run
|
||||
instructions, writes declared workspace assets, realizes workspace skills, and
|
||||
records package, MCP, and cron provenance. Existing files are not overwritten,
|
||||
and retries fail closed when owned content drifted.
|
||||
|
||||
## Inspect installed state
|
||||
|
||||
@@ -300,9 +339,9 @@ The plan compares current provenance and live state with the target manifest.
|
||||
It reports agent, workspace, package, MCP, cron, and ownership changes,
|
||||
including capability escalations and blockers. Capability escalations have
|
||||
separate machine-readable records and `!` lines with exact redacted effects in
|
||||
human output. Resolved package integrity, install identity, and any trust
|
||||
warning are included. Removing a package declaration releases this Claw's edge
|
||||
without uninstalling the artifact during update. The eventual
|
||||
human output. Resolved package integrity, install identity, trust warnings, and
|
||||
remaining local setup prerequisites are included. Removing a package declaration
|
||||
releases this Claw's edge without uninstalling the artifact during update. The eventual
|
||||
exact `planIntegrity` confirmation binds that disclosed set as well as ordinary
|
||||
content changes. Hosts may use the same records for a separate dialog or an
|
||||
aggregate multi-agent review. Apply the exact reviewed plan with explicit
|
||||
@@ -339,8 +378,9 @@ The default removes eligible managed state and releases referenced state.
|
||||
Modified files and resources with another current owner are retained or
|
||||
blocked. Cleanup choices are part of the plan digest; `--yes` never broadens
|
||||
them. Globally installed plugins are retained while this Claw's reference is
|
||||
released; use the ordinary plugin lifecycle separately when you intend to
|
||||
uninstall a process-wide plugin.
|
||||
released. Removal reports which retained requirements Claw add introduced; use
|
||||
the ordinary plugin lifecycle separately when you intend to uninstall a
|
||||
process-wide plugin.
|
||||
|
||||
To remove unchanged Claw-introduced references that have no other current
|
||||
owner, include `--remove-unused` in both preview and apply. To select exact
|
||||
|
||||
Reference in New Issue
Block a user