(Experimental) This PR adds a first MVP for hooks, with SessionStart and Stop The core design is: - hooks live in a dedicated engine under codex-rs/hooks - each hook type has its own event-specific file - hook execution is synchronous and blocks normal turn progression while running - matching hooks run in parallel, then their results are aggregated into a normalized HookRunSummary On the AppServer side, hooks are exposed as operational metadata rather than transcript-native items: - new live notifications: hook/started, hook/completed - persisted/replayed hook results live on Turn.hookRuns - we intentionally did not add hook-specific ThreadItem variants Hooks messages are not persisted, they remain ephemeral. The context changes they add are (they get appended to the user's prompt)
11 lines
316 B
Text
11 lines
316 B
Text
load("//:defs.bzl", "codex_rust_crate")
|
|
|
|
SCHEMA_FIXTURES = glob(["schema/generated/*.json"], allow_empty = False)
|
|
|
|
codex_rust_crate(
|
|
name = "hooks",
|
|
crate_name = "codex_hooks",
|
|
compile_data = SCHEMA_FIXTURES,
|
|
integration_compile_data_extra = SCHEMA_FIXTURES,
|
|
test_data_extra = SCHEMA_FIXTURES,
|
|
)
|