Skip to content

Add Keenable backend to osaurus.search#162

Open
styskin wants to merge 1 commit into
osaurus-ai:masterfrom
styskin:add-keenable-search-backend
Open

Add Keenable backend to osaurus.search#162
styskin wants to merge 1 commit into
osaurus-ai:masterfrom
styskin:add-keenable-search-backend

Conversation

@styskin

@styskin styskin commented May 20, 2026

Copy link
Copy Markdown

Summary

  • New keenable paid provider in osaurus.search, sitting at the top of paidProviderPriority.
  • Posts to https://api.keenable.ai/v1/search with the user-configured KEENABLE_API_KEY in the X-API-Key header.
  • Keenable is purpose-built web search for AI agents — see https://docs.keenable.ai.
  • CHANGELOG bumped to 2.2.0.

Changes

  • tools/search/Sources/OsaurusSearch/Plugin.swift
    • New keenableSearch(_:) backend mapping title / url / snippet-or-description / published_at-or-acquired_at into SearchHit.
    • mapKeenablePublishedAfter helper converting the d/w/m/y time_range arg into the ISO date Keenable expects under published_after.
    • Wired into runBackend, paidProviderPriority (first), providerHasSecrets.
    • Added optional KEENABLE_API_KEY to the manifest secrets list (same required: false as the other paid backends).
  • tools/search/CHANGELOG.md — 2.2.0 entry.

Verification

  • Endpoint contract verified live: POST /v1/search requires X-API-Key, returns {query, results: [{title, url, description, snippet, published_at?, acquired_at}]}.
  • swift build clean. (Test target needs Xcode env for XCTest — not run from CLI.)

Test plan

  • In a chat, configure KEENABLE_API_KEY in the Search plugin's secrets, then ask the agent to do a web search — confirm a keenable engine entry appears in the result attempts.
  • Without the key, confirm keenable is silently skipped (no error to the user) and the cascade proceeds to other backends.

🤖 Generated with Claude Code

Adds `keenable` as a new paid provider in osaurus.search, sitting at
the top of paidProviderPriority. Posts to https://api.keenable.ai/v1/search
with the user-configured KEENABLE_API_KEY in the X-API-Key header.

Keenable is purpose-built web search for AI agents. See
https://docs.keenable.ai.

- New private keenableSearch(_:) backend mapping title/url/snippet/
  description/published_at/acquired_at into SearchHit
- mapKeenablePublishedAfter helper converts the d/w/m/y time_range
  arg into the ISO date Keenable expects under `published_after`
- Added "keenable" to runBackend dispatch and providerHasSecrets
- Added KEENABLE_API_KEY to manifest secrets (optional, no other
  backend is required either; configure to enable the provider)
- CHANGELOG bumped to 2.2.0

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant