openclaw/extensions/visitor-access/openclaw.plugin.json
Patrick Erichsen 9c32bda3c0
feat: group bundled plugin settings by authored manifest metadata (#149331)
* feat: add contextual plugin help to Ask OpenClaw

Punchcard-Session: crisp-summit-lantern-qk

* fix(ui): redact URL credentials from plugin Ask drafts

Reuse the canonical URL policy in the bounded help-value scan, including
serialized map keys. Keep the editable config value intact and prove
rejected Save → Ask → Send on desktop and phone.

Punchcard-Session: crisp-summit-lantern-qk

* test: reuse the complete Custodian context fixture

Punchcard-Session: crisp-summit-lantern-qk

* refactor(ui): narrow plugin help selection input

Accept only the loaded selection facts consumed by the help controller, removing its type dependency on the complete page renderer model.

Punchcard-Session: crisp-summit-lantern-qk

* perf(ui): keep plugin help preparation off startup

Separate synchronous dock state and session ownership from lazy question preparation and session persistence helpers. Register plugin-only English copy with its lazy consumers while preserving source catalog order.

Punchcard-Session: crisp-summit-lantern-qk

* style: normalize contextual help rebase spacing

Punchcard-Session: crisp-summit-lantern-qk

* perf(ui): keep attachment media preparation off startup

Punchcard-Session: crisp-summit-lantern-qk

* test(qwen): fix the clock for default timeout assertions

Punchcard-Session: crisp-summit-lantern-qk

* test(ui): wait for side-chat opening focus

Punchcard-Session: crisp-summit-lantern-qk

* chore(pr): deduplicate wrapper dependency inventory

Punchcard-Session: crisp-summit-lantern-qk

* test(qwen): drop superseded default-clock workaround

* feat: group bundled plugin settings by authored manifest metadata

Punchcard-Session: crisp-summit-lantern-qk
2026-09-16 22:03:41 -07:00

79 lines
2.2 KiB
JSON

{
"id": "visitor-access",
"categories": ["security"],
"name": "Visitor Access",
"description": "Manage expiring visitor grants through one Cloudflare Access email policy.",
"activation": {
"onStartup": true
},
"contracts": {
"tools": ["visitor_invite", "visitor_revoke", "visitor_list"]
},
"uiHints": {
"apiToken": {
"label": "Cloudflare API token",
"sensitive": true
}
},
"configGroups": [
{
"id": "cloudflare-access",
"title": "Cloudflare Access",
"order": 10,
"properties": ["accountId", "appId", "apiToken", "policyName"]
},
{
"id": "visitor-grants",
"title": "Visitor grants",
"order": 20,
"properties": ["defaultTtlDays", "maxVisitors"]
}
],
"configSchema": {
"type": "object",
"additionalProperties": false,
"required": ["accountId", "appId", "apiToken"],
"properties": {
"accountId": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[a-zA-Z0-9_-]+$",
"description": "Cloudflare account containing the Access application."
},
"appId": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[a-zA-Z0-9_-]+$",
"description": "Access application whose dedicated visitor policy is managed."
},
"apiToken": {
"type": "string",
"minLength": 1,
"description": "Resolved Cloudflare API token with Access policy read and write permissions."
},
"policyName": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"default": "Visitors (openclaw-managed)",
"description": "Exact name of the only policy this plugin may manage."
},
"defaultTtlDays": {
"type": ["integer", "null"],
"minimum": 0,
"maximum": 3650,
"default": 14,
"description": "Default grant duration in days. Zero or null requires explicit days or forever on each invite."
},
"maxVisitors": {
"type": "integer",
"minimum": 1,
"maximum": 500,
"default": 50,
"description": "Maximum number of visitor emails allowed by this plugin."
}
}
}
}