# retoor from __future__ import annotations from .spec import Action, Param def arg( name: str, description: str, required: bool = False, kind: str = "string" ) -> Param: return Param( name=name, location="body", description=description, required=required, type=kind, ) AI_MODIFIER_ACTIONS: tuple[Action, ...] = ( Action( name="ai_modifier_get", method="LOCAL", path="", summary="Show the user's AI modifier setting and prompt", description=( "Returns whether the AI modifier is enabled for the user and the instruction in use. " "The modifier runs only when authored text contains an inline '@ai ' " "directive: it executes that instruction and replaces the marked part. Use this before " "changing the setting." ), handler="ai_modifier", requires_auth=True, read_only=True, ), Action( name="ai_modifier_set", method="LOCAL", path="", summary="Enable or disable the AI modifier and set its prompt", description=( "Turns the AI modifier on or off for the user. When enabled, prose the user authors " "(posts, comments, projects, gists, direct messages, profile bio) is rewritten using the " "supplied instruction and the user's own API key, but ONLY where the text contains an " "inline '@ai ' directive: that part is executed and the '@ai' marker removed. " "By default the modification runs synchronously (the save waits); pass sync=false to apply " "it in the background just after saving. Pass 'prompt' to change the instruction; omit it to " "keep the current one." ), handler="ai_modifier", requires_auth=True, params=( arg( "enabled", "true to enable the AI modifier, false to disable it.", required=True, kind="boolean", ), arg( "sync", "true to apply the modification synchronously (the save waits), false for background. " "Omit to keep the current mode.", kind="boolean", ), arg( "prompt", "The modifier instruction (max 20000 chars). Omit to keep the current one.", ), ), ), )