[kimi] Add /api/matrix/bark endpoint — HTTP fallback for bark messages (#675) #737
Reference in New Issue
Block a user
Delete Branch "kimi/issue-675"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #675
Summary
This PR adds the POST
/api/matrix/barkendpoint as an HTTP fallback for bark messages when WebSocket is unavailable.Changes
New Endpoint: POST /api/matrix/bark
{text: str, visitor_id: str}produce_bark()format_generate_bark()for response generationRetry-Afterheader if rate limitedImplementation Details
BarkRequestPydantic model for request validation_bark_last_requestdictproduce_bark()format frominfrastructure.presenceTests Added
test_bark_endpoint_requires_text- validates text is requiredtest_bark_endpoint_requires_visitor_id- validates visitor_id is requiredtest_bark_endpoint_returns_bark_format- checks produce_bark formattest_bark_endpoint_uses_generate_bark- verifies bark generationtest_bark_endpoint_rate_limit_blocks_second_request- rate limitingtest_bark_endpoint_rate_limit_per_visitor- per-visitor isolationtest_bark_endpoint_rate_limit_retry_after_header- Retry-After headertest_bark_endpoint_graceful_fallback_on_error- error handlingtest_bark_endpoint_strips_whitespace- input sanitizationtest_bark_endpoint_response_truncation- 280 char truncationVerification
tox -e format✓tox -e unit(2501 passed, 1 skipped) ✓tox -e lint✓Adds POST /api/matrix/bark endpoint that accepts a visitor message and returns Timmy's bark response. This is the HTTP fallback for when WebSocket isn't available. Features: - Accepts JSON {text: str, visitor_id: str} - Returns JSON bark message in produce_bark() format - Uses existing _generate_bark() for response generation - Rate-limited to 1 request per 3 seconds per visitor_id - Returns 429 with Retry-After header if rate limited - Graceful fallback on LLM errors Refs #675