mirror of
https://github.com/headroomlabs-ai/headroom.git
synced 2026-08-27 14:17:10 -04:00
## Summary - add `contracts.tools` to the OpenClaw plugin manifest - declare `headroom_retrieve` so the manifest matches the tool registered at runtime - remove the OpenClaw `contracts.tools` warning during startup ## Testing - npm test - npm run typecheck <!-- headroom-maintainer-template-completion:start --> ## Description This PR prepares `fix(openclaw): declare headroom_retrieve tool contract` for review by documenting the intended change, validation evidence, and remaining merge-readiness context. Linked issues: None declared. ## Type of Change - [x] Bug fix - [ ] New feature - [ ] Documentation - [ ] Refactor - [ ] Tests only ## Changes Made - Commit: fix(openclaw): declare headroom_retrieve tool contract - Touches `plugins/openclaw/openclaw.plugin.json` ## Testing - [x] GitHub checks reviewed - [x] Metadata/template validation - [ ] Local functional testing ### Test Output ```text gh pr view 947 --repo chopratejas/headroom --json statusCheckRollup - PR Governance / template: FAILURE - PR Governance / label: SUCCESS - external / GitGuardian Security Checks: SUCCESS ``` ## Real Behavior Proof - Environment: GitHub PR metadata and checks for `chopratejas/headroom` PR #947. - Exact command / steps: Reviewed PR title, commits, changed files, linked issues, labels, and check rollup; appended this maintainer template completion block without replacing the author's original description. - Observed result: PR body now contains all required governance sections, checked readiness fields, and a non-placeholder validation evidence block. - Not tested: This pass updated PR metadata only; code validation remains represented by the linked GitHub checks and any author-provided evidence above. ## Review Readiness - [x] I have performed a self-review - [x] This PR is ready for human review <!-- headroom-maintainer-template-completion:end -->
98 lines
3 KiB
JSON
98 lines
3 KiB
JSON
{
|
|
"id": "headroom",
|
|
"kind": "context-engine",
|
|
"uiHints": {
|
|
"proxyUrl": {
|
|
"label": "Proxy URL",
|
|
"help": "Optional. URL of a Headroom proxy (example: http://127.0.0.1:8787 or https://headroom.example.com). If omitted, plugin auto-detects on localhost. Auto-start only works for local addresses."
|
|
},
|
|
"proxyPort": {
|
|
"label": "Proxy Port",
|
|
"help": "Default port used for auto-detect/auto-start when proxyUrl is not set (default: 8787)."
|
|
},
|
|
"pythonPath": {
|
|
"label": "Python Path",
|
|
"help": "Optional explicit python executable for python fallback launcher (for example: python, python3, py, or full path)."
|
|
},
|
|
"retryMaxAttempts": {
|
|
"label": "Retry Max Attempts",
|
|
"help": "Optional maximum number of upstream retry attempts for connection/read/5xx failures when the plugin auto-starts a local Headroom proxy. Lower values fail faster for interactive chat."
|
|
},
|
|
"connectTimeoutSeconds": {
|
|
"label": "Connect Timeout Seconds",
|
|
"help": "Optional upstream connection timeout for the auto-started local Headroom proxy. Lower values surface network failures sooner."
|
|
},
|
|
"routeCodexViaProxy": {
|
|
"label": "Route OpenAI Codex Via Headroom",
|
|
"help": "When enabled, OpenClaw will use the active Headroom proxy as the in-memory upstream base URL for the built-in openai-codex provider so provider traffic flows through Headroom."
|
|
},
|
|
"gatewayProviderIds": {
|
|
"label": "Gateway Provider IDs",
|
|
"help": "Optional list of OpenClaw provider ids to route through the active Headroom proxy in memory. Friendly aliases codex, claude, copilot, and gemini are also accepted. When set, this overrides the default openai-codex-only routing."
|
|
}
|
|
},
|
|
"configSchema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"proxyUrl": {
|
|
"type": "string",
|
|
"pattern": "^https?:\\/\\/.+(:\\d+)?\\/?$"
|
|
},
|
|
"proxyPort": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535,
|
|
"default": 8787
|
|
},
|
|
"pythonPath": {
|
|
"type": "string"
|
|
},
|
|
"autoStart": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"startupTimeoutMs": {
|
|
"type": "integer",
|
|
"minimum": 1000,
|
|
"maximum": 120000,
|
|
"default": 20000
|
|
},
|
|
"retryMaxAttempts": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"connectTimeoutSeconds": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"routeCodexViaProxy": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"gatewayProviderIds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": []
|
|
}
|
|
}
|
|
},
|
|
"capabilities": {
|
|
"network": {
|
|
"allow": [
|
|
"http://*:*",
|
|
"https://*:*"
|
|
]
|
|
}
|
|
},
|
|
"contracts": {
|
|
"tools": [
|
|
"headroom_retrieve"
|
|
]
|
|
}
|
|
}
|