import json import sys from typing import List from pydantic import BaseModel class AlfredOutput(BaseModel): title: str subtitle: str valid: bool arg: str | None = None variables: dict = {} def print_debug(message: str): print(message, file=sys.stderr) def print_out( title: str, subtitle: str, valid: bool, arg: str | None = None, **kwargs ) -> None: print( json.dumps( { "items": [ { "title": title, "subtitle": subtitle, "valid": valid, "arg": arg, "variables": kwargs, } ] } ) ) def print_items(items: List[AlfredOutput]) -> None: """Print a list of items in Alfred's JSON format.""" output_items = [item.model_dump(exclude_none=True) for item in items] print(json.dumps({"items": output_items}))