Files
Peter Steinberger 75dbe52e3e refactor: one code path behind doctor legacy-state migrations (#120716)
* refactor(doctor): prefer manifest route-state owners

* refactor(doctor): unify config repair declarations

* refactor(doctor): unify legacy state migrations

* fix(doctor): satisfy migration pipeline guards

* fix(plugin-sdk): keep doctor adapter inside boundary
2026-08-08 18:23:15 -07:00

172 lines
3.8 KiB
JSON

{
"id": "reef",
"doctorContract": {
"configRepair": true,
"stateMigrations": true
},
"name": "Reef",
"description": "Guarded end-to-end encrypted claw channel",
"activation": {
"onStartup": true,
"onCommands": [
"reef"
]
},
"channels": [
"reef"
],
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"relayUrl": {
"type": "string",
"format": "uri",
"pattern": "^[hH][tT][tT][pP][sS]?://[^\\\\/?#@]+/?$",
"default": "https://reefwire.ai"
},
"handle": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9_-]{0,62}$"
},
"email": {
"type": "string",
"format": "email"
},
"guard": {
"type": "object",
"additionalProperties": false,
"required": [
"provider",
"pinnedModel",
"apiKeyEnv",
"policyVersion",
"timeoutMs"
],
"properties": {
"provider": {
"enum": [
"anthropic",
"openai"
]
},
"pinnedModel": {
"type": "string",
"minLength": 1
},
"apiKeyEnv": {
"type": "string",
"pattern": "^[A-Z_][A-Z0-9_]*$"
},
"policyVersion": {
"type": "string",
"minLength": 1
},
"timeoutMs": {
"type": "integer",
"minimum": 100,
"maximum": 120000
}
}
},
"stateDir": {
"type": "string",
"minLength": 1
},
"requestPolicy": {
"enum": [
"code-only",
"friends-of-friends",
"open"
],
"default": "code-only"
},
"enabled": {
"type": "boolean",
"default": true
}
}
},
"channelConfigs": {
"reef": {
"schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"relayUrl": {
"type": "string",
"format": "uri",
"pattern": "^[hH][tT][tT][pP][sS]?://[^\\\\/?#@]+/?$",
"default": "https://reefwire.ai"
},
"handle": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9_-]{0,62}$"
},
"email": {
"type": "string",
"format": "email"
},
"guard": {
"type": "object",
"additionalProperties": false,
"required": [
"provider",
"pinnedModel",
"apiKeyEnv",
"policyVersion",
"timeoutMs"
],
"properties": {
"provider": {
"enum": [
"anthropic",
"openai"
]
},
"pinnedModel": {
"type": "string",
"minLength": 1
},
"apiKeyEnv": {
"type": "string",
"pattern": "^[A-Z_][A-Z0-9_]*$"
},
"policyVersion": {
"type": "string",
"minLength": 1
},
"timeoutMs": {
"type": "integer",
"minimum": 100,
"maximum": 120000
}
}
},
"stateDir": {
"type": "string",
"minLength": 1
},
"requestPolicy": {
"enum": [
"code-only",
"friends-of-friends",
"open"
],
"default": "code-only"
},
"enabled": {
"type": "boolean",
"default": true
}
}
}
}
},
"commandAliases": [
{
"name": "reef"
}
]
}