| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- from __future__ import annotations
- import argparse
- import json
- from shared.config import load_config
- def build_registry_payload() -> dict:
- config = load_config()
- provider = config.get("provider", {})
- generation = config.get("generation", {})
- return {
- "skill": "qwen-image-skill",
- "provider": {
- "name": provider.get("name", "qwen-compatible"),
- "model": provider.get("model", "qwen-image"),
- },
- "workflows": [
- {
- "id": "qwen/text-to-image",
- "name": "Qwen Text to Image",
- "description": "Generate images from natural language prompts through a Qwen-compatible image generation API.",
- "enabled": True,
- "parameters": {
- "prompt": {
- "type": "string",
- "required": True,
- "description": "Main image prompt. Include subject, style, composition, lighting, and quality requirements.",
- },
- "size": {
- "type": "string",
- "required": False,
- "description": "Output size such as 1024x1024, 1280x720, or 720x1280.",
- "default": generation.get("default_size", "1024x1024"),
- },
- "n": {
- "type": "int",
- "required": False,
- "description": "Number of images to generate in one request.",
- "default": generation.get("default_n", 1),
- },
- "quality": {
- "type": "string",
- "required": False,
- "description": "Provider quality hint, for example standard or hd.",
- "default": generation.get("default_quality", "standard"),
- },
- "negative_prompt": {
- "type": "string",
- "required": False,
- "description": "Things to avoid in the generated image.",
- },
- "seed": {
- "type": "int",
- "required": False,
- "description": "Optional deterministic seed if the provider supports it.",
- },
- },
- }
- ],
- }
- def main() -> None:
- parser = argparse.ArgumentParser(description="Workflow Registry for Qwen Image OpenClaw Skill")
- parser.add_argument("action", choices=["list"], help="Action to perform")
- parser.add_argument("--agent", action="store_true", help="Output full JSON schema for agent parsing")
- args = parser.parse_args()
- payload = build_registry_payload()
- if args.agent:
- print(json.dumps(payload, ensure_ascii=False, indent=2))
- return
- workflows = payload["workflows"]
- for workflow in workflows:
- print(f"{workflow['id']}: {workflow['description']}")
- if __name__ == "__main__":
- main()
|