๐ฆ Package surface
from orchestkit_hook_contract import (
HOOK_EVENT_NAMES, # tuple of 19 event names
HookEvent, # Pydantic v2 envelope (event, timestamp, ...)
HookEventName, # Literal[...] type
PAYLOAD_MAP, # event name -> payload class
HOOK_EVENT_SCHEMAS, # per-event JSON Schema (draft-07)
validate_hook_event, # structural validator
is_hook_event_name, # type guard
# Per-event payload classes (13 of 19 events covered)
PreToolUsePayload, PostToolUsePayload, PostToolUseFailurePayload,
UserPromptSubmitPayload, NotificationPayload, PermissionRequestPayload,
SubagentStartPayload, SubagentStopPayload, StopPayload,
SessionStartPayload, PreCompactPayload, TeammateIdlePayload,
TaskCompletedPayload,
)
โ
Verified locally
$ python scripts/codegen-py.py
[codegen-py] wrote src/orchestkit_hook_contract/events.py
[codegen-py] wrote src/orchestkit_hook_contract/schemas.py
$ python scripts/codegen-py.py --check
[codegen-py --check] OK: events.py + schemas.py match spec.
$ pytest -v
============================== 82 passed in 0.93s ==============================
$ python -c 'from orchestkit_hook_contract import PreToolUsePayload; PreToolUsePayload(tool_name="Bash", tool_input={"cmd": "ls"})'
# typed Pydantic v2 model โ