Skip to content

antikythera_agents.user_interaction ¤

User interaction agent implementation.

Classes¤

UserInteractionAgent ¤

UserInteractionAgent()

Methods:¤

get_user_input ¤
get_user_input(task: Task) -> dict[str, Any]

Prompt for one value per declared output, via stdin.

Stays opaque (task: Task) permanently: it builds its result by iterating task.outputs, whose names and count are declared by the blueprint that uses this tool, not by this tool's own signature (ADR-0002, issue-td-11).

notify ¤
notify(task: Task) -> dict[str, Any]

Display a formatted notification.

Deliberately kept opaque (task: Task), not migrated (ADR-0002, issue-td-11): title/message/level are each read input-or-param-whichever-is-present, a shape the new binder can't express as a single argument, since under the new scheme a parameter is either a task input or a Param[T], never both depending on what the blueprint happens to wire. And title/message are .format()-interpolated against whatever keys the blueprint's own template string references out of task.context and the resolved inputs combined — an arbitrary, blueprint-chosen key set, not a fixed one this tool could declare with Context[T]. Narrowing either behaviour to fit the new binder would change what already-deployed blueprints using notify do, for no benefit; this is the "shape genuinely determined by the blueprint" case the opaque escape hatch exists for, same as system.composite and user_input/user_output above.

show_user_output ¤
show_user_output(task: Task) -> dict[str, Any]

Print every declared input's value.

Stays opaque (task: Task) permanently: it iterates task.inputs and accepts whatever the blueprint wires in, not a fixed set of arguments this tool could declare on its own signature (ADR-0002, issue-td-11).