Codex Python SDK 0.154.0、更新前にイベント処理の互換対応が必要
Codex Python SDK 0.154.0では、実行イベントの参照先、通知データの読み方、途中から接続した実行の履歴取得が変わりました。これらを使う連携は、SDK更新前に自分の連携に該当する移行項目を新仕様へ合わせる必要があります。
AT A GLANCE
まず知りたいこと
MAIN CHANGE
一番大きい変化
Codex Python SDK 0.154.0では、実行イベントを直接扱う連携の一部でデータの参照方法と履歴の受け取り方が変わりました。該当する連携はSDKを更新する前に互換対応が必要です。
KEY POINTS
このリリースの注目点
実行時に呼ばれる処理の情報は参照先が変わる
実行前後などに呼ぶhookの情報を表す`HookMetadata`では、handlerが`.root`の下へ移りました。従来の`hook.command`のような参照は、handlerの種類を確認したうえで`hook.root.command`のように読み替える必要があります。
通知データは名前付き項目を読む
これまで未分類だった通知の一部が型付きのデータになりました。対象の通知を処理する連携は、汎用の`.params`だけを前提にせず、定義された名前付き項目を読む形へ合わせる必要があります。
途中参加では過去の実行出力を受け取らない
実行単位(turn)へ途中から接続する処理は、その時点より前のイベントを再受信しません。保存済みの履歴が必要な場合は`thread.read(include_turns=True)`を使います。
BENEFIT
ここがいい
SDK更新後に古い項目参照で処理が止まったり、途中参加した実行の出力を完全な履歴だと誤認したりするのを避け、影響する連携だけを更新前に直せます。
RELEVANT TO
こんな人に関係する
- Python SDKで実行前後のhook情報を直接処理している開発者
- Python SDKの通知イベントを直接処理している開発者
- 実行中の処理(turn)へ途中から接続して結果を収集する仕組みを運用している人
Codex Python SDK 0.154.0では、SDKの実行イベントを直接処理する連携で、実行時に呼ばれる処理の参照先、通知データの読み方、途中から実行へ接続したときに受け取れる履歴が変わります。
たとえば、実行中の処理(turn)へ監視処理を後から接続し、それ以前の出力も同じ接続から回収できる前提で結果を組み立てている場合です。0.154.0では、手動で作成したturn handleや途中から参加したturn handleは、接続した時点以降のイベントだけを受け取ります。以前の出力は再送されないため、そのhandleだけを完全な履歴として扱うと結果が欠けます。
更新前に、使っている経路だけを確認してください。
- 実行前後のhook情報を読む連携:
HookMetadataのhandlerを.root配下から読む - 型が付いた通知を処理する連携: 汎用の
.paramsだけを前提にせず、定義された名前付き項目を読む - 実行単位(turn)へ途中参加する連携: 途中参加したhandleを過去の完全な履歴として扱わず、保存済みの履歴が必要なら
thread.read(include_turns=True)を使う
hookは.rootの下から読む
hookの情報を表すHookMetadataは、handlerを.rootの下に持つ形へ変わりました。たとえば従来hook.commandを読んでいた処理は、handlerの種類を確認したうえでhook.root.commandのように参照します。
この変更は、hookの内容を記録したり、種類に応じて処理を分けたりする連携に関係します。0.154.0へ更新する前に、HookMetadataの項目を直接参照している箇所を新しい構造へ合わせる必要があります。
通知の一部は型付きデータになった
これまで未分類として扱われていた通知の一部には、0.154.0で型付きのデータが追加されました。対象の通知では、汎用の.paramsだけを読むのではなく、定義された名前付き項目を使います。
一方、未知または不正な通知は引き続きUnknownNotificationとして扱われます。すべての通知が同じ形へ変わったわけではないため、処理している通知の種類に合わせて読み方を分ける必要があります。
途中からturnへ接続しても過去の出力は再送されない
手動で作成したturn handleや途中から参加したturn handleは、接続した時点より前のイベントを受け取りません。完了済みのturnへ後から接続しようとするとTransportClosedErrorになる場合もあります。
保存済みの履歴を含めて読みたい場合は、thread.read(include_turns=True)を使います。thread.turn(...)から直接得たhandleは、リクエストを送信した時点からのイベントを保持するため、途中参加のhandleとは扱いが異なります。
公式情報
制作: AI-assisted