Show runtime guidance in transcript
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user