PiAI/Hook
- PiAI has no declarative hook component. What other hosts declare as an AI/Agent/Hook is registered here in code, with
pi.on(eventName, handler) inside an extension's default factory function, which receives the ExtensionAPI. - Documented events by category. Session:
project_trust, session_start, session_info_changed, session_before_switch, session_before_fork, session_before_compact, session_compact, session_before_tree, session_tree, session_shutdown. Agent flow: before_agent_start, agent_start, agent_end, agent_settled, turn_start, turn_end. Messages: message_start, message_update, message_end. Tools: tool_execution_start, tool_execution_update, tool_execution_end, tool_call, tool_result. Plus context, before_provider_headers, before_provider_request, after_provider_response, model_select, thinking_level_select, user_bash, input, resources_discover. - Extensions are TypeScript or JavaScript only. There is no
hooks.json for rulesync to emit, so a cross-host build has to generate extension code for Pi. - The most permissive trust model of the hosts surveyed. The docs warn that extensions "run with your full system permissions and can execute arbitrary code. Only install from sources you trust."