Show runtime guidance in transcript

This commit is contained in:
wuyang6
2026-06-12 18:37:04 +08:00
parent 5bcc22622e
commit cdf27e5bd2
3 changed files with 124 additions and 1 deletions
+47
View File
@@ -71,6 +71,7 @@ from src.run_state_store import ACTIVE_RUN_STATUSES, RunStateStore
from src.session_store import (
DEFAULT_AGENT_SESSION_DIR,
StoredAgentSession,
append_agent_display_message,
agent_session_delta,
cancel_session_input_queue,
consume_session_guidance,
@@ -1834,6 +1835,12 @@ def create_app(state: AgentState) -> FastAPI:
content=content,
metadata=payload.metadata,
)
if item.get('kind') == 'guidance':
_append_guidance_display_message(
safe_id,
directory=directory,
item=item,
)
return {'session_id': safe_id, 'item': item}
@app.patch('/api/sessions/{session_id}/input-queue/{item_id}')
@@ -1857,6 +1864,12 @@ def create_app(state: AgentState) -> FastAPI:
)
if item is None:
raise HTTPException(status_code=404, detail='Queue item not found')
if item.get('kind') == 'guidance' and item.get('status') == 'pending':
_append_guidance_display_message(
safe_id,
directory=directory,
item=item,
)
return {'session_id': safe_id, 'item': item}
@app.delete('/api/sessions/{session_id}/input-queue/{item_id}')
@@ -3050,6 +3063,40 @@ def _normalize_transcript_entry(entry: dict[str, Any]) -> dict[str, Any]:
return out
def _append_guidance_display_message(
session_id: str,
*,
directory: Path,
item: dict[str, Any],
) -> None:
content = str(item.get('content') or '').strip()
item_id = item.get('id')
if (
not content
or not isinstance(item_id, int)
or isinstance(item_id, bool)
):
return
message_id = f'user_guidance_{item_id}'
append_agent_display_message(
session_id,
{
'role': 'user',
'content': content,
'state': 'final',
'message_id': message_id,
'metadata': {
'kind': 'runtime_guidance_display',
'queue_item_id': item_id,
'lineage_id': message_id,
'run_id': str(item.get('run_id') or ''),
'created_at': float(item.get('created_at') or time.time()),
},
},
directory=directory,
)
def _truncate_api_text(text: str, limit: int) -> str:
if len(text) <= limit:
return text