|
# retoor <retoor@molodetz.nl>
|
|
|
|
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 <instruction>' "
|
|
"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 <instruction>' 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.",
|
|
),
|
|
),
|
|
),
|
|
)
|