When a skill was invoked on a clean slate (no conversation history),
the request sent to the AI provider contained only a system prompt
with zero user messages, causing Bedrock/LiteLLM to reject it with:
'Invalid Message bedrock requires at least one non-system message'
Root cause: extract_new_input_messages() had no handler for
Type::InvokeSkill, so it fell through to the _ => {} wildcard and
produced zero ConversationMessage results.
Fix adds InvokeSkill handling to three functions:
- extract_new_input_messages(): generates a User message with the
skill name and content wrapped in <skill-instructions> tags
- extract_input_messages(): persists the InvokeSkill as a proper
api::Message in task history for conversation continuity
- extract_user_query_text(): returns '/<skill-name>' for the
UserQuery proto event used in conversation title generation