コンテンツにスキップ

Events

Reyn はすべての状態変化に対して構造化イベントを発行します。完全なイベントログは JSONL で、.reyn/events/<run_id>.jsonl に書き込まれ、reyn events <log_file> でリプレイ可能です。

イベントエンベロープ

すべてのイベントは以下を持ちます:

{
  "ts": "2026-04-30T10:00:00.123Z",
  "kind": "<event_kind>",
  "phase": "<current_phase>",
  "run_id": "<uuid>",
  ... // kind 固有のペイロード
}

Agent ID フィールド(全イベント共通)

reyn.yamlagent.id が設定されているセッションから発行されるすべてのイベントのペイロードには、自動的に agent_id フィールドが付与されます。デフォルト値は reyn/<hostname> です。これにより、SOC2 / ISO 27001 / METI v1.1 要件に準拠した RBAC およびマルチエージェント監査証跡が実現されます。

詳細は コンセプト: マルチエージェント の「Agent ID 伝播」を参照してください。

ライフサイクルイベント

種類 タイミング 主要なペイロード
workflow_started 最初の Phase が入ったとき entry_phaseinput_typedefault_model
workflow_finished Skill がクリーンに完了したとき phasereasonconfidencetotal_phase_countfinal_output_keys
phase_started 各 Phase 訪問の開始時 phasevisit_count
phase_completed 各 Phase 訪問の終了時 phasenext_phasedecision
phase_failed Phase が回復不能なエラーを発生させたとき phaseerror
loop_limit_exceeded Phase が limits.phase.max_visits を超えたとき phasevisit_countmax
phase_budget_exceeded Phase がウォールクロックバジェット(limits.phase.max_wall_seconds)を超えたとき phaseelapsedbudget

LLM とコンテキスト

種類 主要なペイロード
context_built phasecandidate_countprompt_token_estimate
llm_called phasemodelinput_tokensoutput_tokenslatency_ms
validation_error LLM が出力して OS が拒否したもの
normalization_error LLM の出力をまったくパースできなかった

Control IR

各 Control IR op の種類は独自のイベントを発行します:

種類 タイミング
read_filewrite_fileedit_filedelete_fileglob_filesgrepregenerate_index file op のバリアント — すべて tool_executedop=<sub_op>)経由
shell_startedshell(完了)、shell_timeoutshell_not_allowed shell op
sandboxed_exec_startedsandboxed_exec_completed sandboxed_exec op — started: argvbackend; completed: argvbackendreturncode
run_skill_startedskill_run_spawnedskill_run_failed run_skill op — run_skill_startedskill_version_hash: str(実行時の skill.md 内容の sha256 hex。skill.md が存在しない場合は "unknown")を持つ
mcp_calledmcp_completedmcp_failed MCP ツール op
mcp_server_installed mcp_install op — name、キー名のみ(値は含まない)
web_search_startedweb_search_completedweb_search_failedweb_fetch_started 検索 op
embed_progress embed op(Form B artifact 参照のみ)— バッチごとの embedded: intskipped: int 累積カウント
recall_embed_failed recall op — embed サブ op が失敗したとき: queryerror
index_dropped index_drop op — sourcechunks_dropped: int
skill_resolve_completed skill_resolve op — nameresolved: boolsource: "local"\|"project"\|"stdlib"\|null
control_ir_skippedcontrol_ir_failedcontrol_ir_validation_error ディスパッチ失敗(control_ir_skipped の理由は shell_not_allowedhandler_not_implementednot_allowed_in_phase を含む)
permission_denied op がリゾルバーに拒否されたとき

クレデンシャルと OAuth

種類 トリガー 主要なペイロード
sub_skill_credential_scope run_skill op ハンドラーがサブスキル入口で、OS が有効なクレデンシャルスコープ(サブスキルの required_credentials と親スコープの交差)を算出した後に発行されます。 skill: str — サブスキル参照(op.skill と同じ値); allowed_keys: list[str] — 許可されたシークレットキーのソート済み重複排除リスト。有効スコープが無制限の場合は ["*"]
token_refreshed reyn.secrets.get_valid_token(key) がプロバイダーのトークンエンドポイント(RFC 6749 §6)に対して OAuth リフレッシュに成功した後に発行されます。 key: str — OAuth トークンキー(~/.reyn/oauth_tokens.json エントリと同じ); expires_at: str — 新しいアクセストークンの有効期限の ISO-8601 タイムスタンプ。
token_refresh_failed get_valid_token がトークンエンドポイントから非 2xx レスポンスを受け取るか、レスポンスペイロードが不正な形式の場合に発行されます。OAuthRefreshError を raise します。 key: str; error: str — 短いエラー説明(HTTP ステータス + 利用可能な場合はプロバイダーエラーコード)。

注記: - sub_skill_credential_scope は監査グレードのイベントで、ネストされたスキル実行間のクレデンシャル認可チェーンを再構築するために使用されます。同じ skill 名の run_skill_started とペアになります。 - token_refresh_failedtoken_refreshed とペアになります — ネットワークリフレッシュを実行する get_valid_token 呼び出しごとに、どちらか一方のみ発行されます。

関連情報: コンセプト: シークレット処理 — OAuth ライフサイクルとクレデンシャルスコープ; コンセプト: パーミッションモデル — スキルごとのクレデンシャルスコープ; DSL リファレンス: required_credentials

アクションカタログルーティング

種類 トリガー 主要なペイロード
routing_decided アクションラッパー(list_actions / search_actions / describe_action / invoke_action)がリクエストをルーティングするとき、ユニバーサルアクションカタログのディスパッチパスから発行されます(FP-0034 Phase 1–3)。 action_name: str; source: str"catalog" | "hot_alias" | "direct"; outcome: str"dispatched" | "deflected" | "error"; chain_id: str — クロスコール相関用リクエストチェーン識別子。

注記: ラッパーオンリーのルーティングパスの監査が可能です。chain_id を使って、アクションのダウンストリームイベントとのクロスコリレーションが行えます。

ユーザーインタラクション

種類 タイミング
user_message_received 新しいユーザーターンがランタイムに入ったとき。chain_idsubmit_user_text がミントし、このターンが生成するすべての agent 間メッセージに伝播される uuid)を持つ
user_intervention_received ask_user op が回答を受け取ったとき
chat_startedchat_stopped chat セッションのライフサイクル

Skill スポーニング(chat)

種類 タイミング
skill_run_spawned ルーターの決定から Skill が起動されたとき(run_idskill
skill_spawn_refused _spawn_skill が agent の allowed_skills にない Skill を拒否したとき。ペイロード: reason="allowlist"skillagent

agent 間メッセージング

種類 タイミング 主要なペイロード
agent_message_sent _send_to_agent または _send_agent_response がペイロードを届けたとき kind=agent_request\|agent_responsefrom_agentto_agentdepthchain_id
agent_request_received 受信 agent が受信トレイから agent_request を取り出したとき from_agentdepthchain_id
agent_response_received 発信元 agent が受信トレイから agent_response を取り出したとき from_agentdepthchain_id
agent_message_refused 送信が拒否されたとき(例: safety.loop.max_agent_hops を超えた) reasonto_agentdepthchain_id
chain_timeout 保留中のチェーンが safety.timeout.chain_seconds を超え、上流の合成エラーレスポンスで強制解決されたとき chain_idwaiting_on(返信していなかった agent のソート済みリスト)、timeout_secondsorigin_agent

chain_id は uuid4 hex。トップレベルのユーザー送信ごとに 1 つ、すべてのホップを通じて変更されずに伝播します。クロス agent の再構築は各 agent の events.jsonlhistory.jsonl に対する grep <chain_id> です。

Workspace

種類 タイミング
workspace_updated 任意の artifact が書き込まれたとき
tool / tool_executed 汎用ツールディスパッチ

スキル管理

種類 ペイロードフィールド 発行タイミング
skill_rolled_back skill: strfrom_version: intto_version: intreason: str(デフォルト "user rollback via CLI" reyn skill rollback が以前のバージョンを復元したとき。.reyn/events/direct/cli/<YYYY-MM-DD>.jsonl に書き込まれます。リファレンス: CLI — reyn skill rollback を参照。

リプレイ

reyn events .reyn/events/<run_id>.jsonl

保存されたログをライブランと同じフォーマットでコンソールに再レンダリングします。LLM は再呼び出しされません。リプレイは検査のみを目的としています。

すべてがイベントである理由

「すべての状態変化が発行する」から 2 つの帰結が生まれます:

  • 再現性。 保存されたログは実行の完全な記録です。将来のチェックポイント/再開の設計(ロードマップ参照)はこれに基づいて構築されます。
  • ボルトオンなしの Observability。 個別のロガー、トレーサー、テレメトリフックなし。同じチャネルがデバッグ出力、リプレイ、(将来的には)eval アナリティクスを動かします。

関連情報