Skip to content

Commit bc14d72

Browse files
committed
Keep Codex app-server event recording focused
1 parent 267f602 commit bc14d72

2 files changed

Lines changed: 32 additions & 28 deletions

File tree

src/codealmanac/integrations/harnesses/codex/app_server.py

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
)
1010
from codealmanac.engine.harnesses.requests import RunHarnessRequest
1111
from codealmanac.integrations.harnesses.codex.errors import CodexAppServerError
12+
from codealmanac.integrations.harnesses.codex.event_sink import (
13+
record_harness_event,
14+
record_harness_events,
15+
)
1216
from codealmanac.integrations.harnesses.codex.events import (
1317
CodexRunState,
1418
done_event,
@@ -20,9 +24,7 @@
2024
as_record,
2125
string_field,
2226
)
23-
from codealmanac.integrations.harnesses.codex.responses import (
24-
noninteractive_response,
25-
)
27+
from codealmanac.integrations.harnesses.codex.responses import noninteractive_response
2628
from codealmanac.integrations.harnesses.codex.rpc import (
2729
JsonRpcLineProcess,
2830
is_server_request,
@@ -121,8 +123,8 @@ def _run(self, request: RunHarnessRequest) -> HarnessRunResult:
121123
)
122124
state.provider_session_id = thread_id
123125
state.root_thread_id = thread_id
124-
self.record_harness_event(
125-
request,
126+
record_harness_event(
127+
request.event_sink,
126128
events,
127129
provider_session_event(thread_id),
128130
)
@@ -184,8 +186,8 @@ def request_rpc(
184186
raise CodexAppServerError(f"Codex app-server {method}: {detail}")
185187
return message.get("result")
186188
if string_field(message, "method") is not None:
187-
self.record_harness_events(
188-
request,
189+
record_harness_events(
190+
request.event_sink,
189191
events,
190192
map_codex_notification(message, state),
191193
)
@@ -209,32 +211,13 @@ def read_turn(
209211
continue
210212
is_root_completion = root_turn_completion(message, state)
211213
mapped = map_codex_notification(message, state, is_root_completion)
212-
self.record_harness_events(request, events, mapped)
214+
record_harness_events(request.event_sink, events, mapped)
213215
if method == "error":
214216
return result_from_state(state, events)
215217
if method == "turn/completed" and is_root_completion:
216-
self.record_harness_event(request, events, done_event(state))
218+
record_harness_event(request.event_sink, events, done_event(state))
217219
return result_from_state(state, events)
218220

219-
def record_harness_events(
220-
self,
221-
request: RunHarnessRequest,
222-
events: list[HarnessEvent],
223-
new_events: tuple[HarnessEvent, ...],
224-
) -> None:
225-
for event in new_events:
226-
self.record_harness_event(request, events, event)
227-
228-
def record_harness_event(
229-
self,
230-
request: RunHarnessRequest,
231-
events: list[HarnessEvent],
232-
event: HarnessEvent,
233-
) -> None:
234-
events.append(event)
235-
if request.event_sink is not None:
236-
request.event_sink(event)
237-
238221
def respond_to_server_request(
239222
self,
240223
process: "JsonRpcLineProcess",
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from codealmanac.engine.harnesses.models import HarnessEvent
2+
from codealmanac.engine.harnesses.requests import HarnessEventSink
3+
4+
5+
def record_harness_events(
6+
sink: HarnessEventSink | None,
7+
events: list[HarnessEvent],
8+
new_events: tuple[HarnessEvent, ...],
9+
) -> None:
10+
for event in new_events:
11+
record_harness_event(sink, events, event)
12+
13+
14+
def record_harness_event(
15+
sink: HarnessEventSink | None,
16+
events: list[HarnessEvent],
17+
event: HarnessEvent,
18+
) -> None:
19+
events.append(event)
20+
if sink is not None:
21+
sink(event)

0 commit comments

Comments
 (0)