fix: complete OpenClaw plugin compatibility with test coverage

- Add test OpenClaw plugins: oc-simple (openclaw.plugin.json) and oc-pkg (package.json#extensions)
- Fix plugin.go Start() to detect package.json#openclaw.extensions as OC manifest
- Add hasOCExtensions() helper for package.json OC field detection
- Tests: simulator with manifest entry discovery, package.json extension discovery,
  full Plugin.Start() -> loadOCPlugin() -> register -> call pipeline
This commit is contained in:
root
2026-07-04 13:46:15 +08:00
parent 2d86f37e1f
commit f68c8fff16
7 changed files with 290 additions and 1 deletions

View File

@ -0,0 +1,33 @@
module.exports = {
default: {
id: 'oc-pkg',
name: 'OC Package',
version: '2.0.0',
description: 'Test plugin discovered via package.json extensions',
register(api) {
api.registerTool({
name: 'add',
description: 'Add two numbers',
parameters: {
type: 'object',
properties: {
a: { type: 'number', description: 'First number' },
b: { type: 'number', description: 'Second number' },
},
required: ['a', 'b'],
},
execute(id, params) {
return String(params.a + params.b);
},
});
api.registerTool({
name: 'info',
description: 'Return plugin info',
execute(id, params) {
return JSON.stringify({ id: this.id, name: this.name, version: this.version });
},
});
},
},
};

View File

@ -0,0 +1,8 @@
{
"name": "oc-pkg",
"version": "2.0.0",
"description": "OC plugin with package.json entry discovery",
"openclaw": {
"extensions": ["lib/entry.js"]
}
}

View File

@ -0,0 +1,31 @@
module.exports = {
default: {
id: 'oc-simple',
name: 'OC Simple',
version: '1.0.0',
description: 'Simple test plugin for OpenClaw simulator',
register(api) {
api.registerTool({
name: 'greet',
description: 'Greet someone',
parameters: {
type: 'object',
properties: {
name: { type: 'string', description: 'Name to greet' },
},
required: ['name'],
},
execute(id, params) {
return `Hello, ${params.name}!`;
},
});
api.registerTool({
name: 'ping',
description: 'Health check ping',
execute(id, params) {
return 'pong';
},
});
},
},
};

View File

@ -0,0 +1,6 @@
{
"name": "oc-simple",
"version": "1.0.0",
"entry": "index.js",
"description": "Simple OpenClaw test plugin"
}