Repository navigation
feat: expose priced Exa REST routes in public SDK registry #38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -8,9 +8,9 @@ | |
| "url": "https://api.tinyhumans.ai/swagger.json", | ||
| "title": "TinyHumans API", | ||
| "version": "1.0.0", | ||
| "pathCount": 243, | ||
| "totalOperationCount": 269, | ||
| "operationCount": 212, | ||
| "pathCount": 256, | ||
| "totalOperationCount": 286, | ||
| "operationCount": 229, | ||
| "supplementalOperationCount": 13, | ||
| "excludedAdminOperationCount": 49, | ||
| "excludedWebhookOperationCount": 12, | ||
|
|
@@ -34,14 +34,16 @@ | |
| "name": "agentIntegrations", | ||
| "basePath": "/agent-integrations", | ||
| "auth": "mixed", | ||
| "operationCount": 78, | ||
| "operationCount": 94, | ||
| "tags": [ | ||
| "Agent Integrations", | ||
| "OpenHuman parity" | ||
| ], | ||
| "routes": [ | ||
| "DELETE /agent-integrations/composio/connections/{connectionId}", | ||
| "DELETE /agent-integrations/composio/triggers/{triggerId}", | ||
| "DELETE /agent-integrations/exa/agent/runs/{runId}", | ||
| "DELETE /agent-integrations/exa/batches/{batchId}", | ||
| "DELETE /agent-integrations/file-storage/files/{fileId}", | ||
| "GET /agent-integrations/apify/runs/{runId}", | ||
| "GET /agent-integrations/apify/runs/{runId}/results", | ||
|
|
@@ -52,6 +54,11 @@ | |
| "GET /agent-integrations/composio/triggers", | ||
| "GET /agent-integrations/composio/triggers/available", | ||
| "GET /agent-integrations/crypto/routes", | ||
| "GET /agent-integrations/exa/agent/runs", | ||
| "GET /agent-integrations/exa/agent/runs/{runId}", | ||
| "GET /agent-integrations/exa/agent/runs/{runId}/events", | ||
| "GET /agent-integrations/exa/batches", | ||
| "GET /agent-integrations/exa/batches/{batchId}", | ||
| "GET /agent-integrations/file-storage/files", | ||
| "GET /agent-integrations/file-storage/files/{fileId}", | ||
| "GET /agent-integrations/file-storage/files/{fileId}/download", | ||
|
|
@@ -82,6 +89,15 @@ | |
| "POST /agent-integrations/composio/triggers", | ||
| "POST /agent-integrations/crypto/bridge", | ||
| "POST /agent-integrations/crypto/swap", | ||
| "POST /agent-integrations/exa/agent/runs", | ||
| "POST /agent-integrations/exa/agent/runs/{runId}/cancel", | ||
| "POST /agent-integrations/exa/agent/runs/{runId}/stop", | ||
| "POST /agent-integrations/exa/answer", | ||
| "POST /agent-integrations/exa/batches", | ||
| "POST /agent-integrations/exa/batches/{batchId}/cancel", | ||
| "POST /agent-integrations/exa/contents", | ||
| "POST /agent-integrations/exa/findSimilar", | ||
| "POST /agent-integrations/exa/search", | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add the Exa operation to the typed SDK surface This manifest entry introduces a public operation, but no Rust API method or request/response types for [RULE] contract-sync · There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add the Exa operation to the typed SDK surface This adds the Exa search operation to the public contract, but the repository search shows no Exa module, request/response types, or typed client method. Callers can only use the raw escape hatch despite this being presented as part of the stable SDK surface. Add the typed operation in the matching namespace and keep its request and response types aligned with the deployed contract. [RULE] typed-sdk-surface · |
||
| "POST /agent-integrations/file-storage/files", | ||
| "POST /agent-integrations/file-storage/files/{fileId}/link", | ||
| "POST /agent-integrations/financial-apis/commodity", | ||
|
|
@@ -461,6 +477,18 @@ | |
| "PUT /teams/{teamId}/members/{userId}/role" | ||
| ] | ||
| }, | ||
| { | ||
| "name": "telemetry", | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Include the telemetry route in the pull request description The pull request description does not document the newly added telemetry route, even though it introduces a distinct public namespace and ingestion endpoint. Update the pull request description to explain the route, its authentication, and why it is part of the public SDK contract. [RULE] contract-documentation · There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Keep unrelated route families in separate changes This change bundles a large Exa integration expansion with an unrelated Langfuse telemetry namespace. The repository requires small, coherent contract changes; splitting telemetry from the Exa integration would make review, regeneration, and rollback of each route family independent. [RULE] coherent-changes · |
||
| "basePath": "/telemetry", | ||
| "auth": "bearer", | ||
| "operationCount": 1, | ||
| "tags": [ | ||
| "Telemetry" | ||
| ], | ||
| "routes": [ | ||
| "POST /telemetry/langfuse/otel/v1/traces" | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Generate the telemetry route in the SDK registry This adds a public manifest route, but the route is absent from [RULE] generated-surface-sync · There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add typed methods and route tests for the new Exa search and telemetry routes The manifest and generated registry expose these new routes, but the repository contains no typed Exa or telemetry client methods and no mock-server route tests for them. This leaves serialization, paths, and envelope handling unverified and violates the repository rule requiring matching Rust methods, types, and route tests for contract changes. Add those methods and tests before merging. Additional
|
||
| ] | ||
| }, | ||
| { | ||
| "name": "voiceAgent", | ||
| "basePath": "/voice-agent", | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -20,6 +20,22 @@ pub const PUBLIC_ROUTES: &[(&str, &str)] = &[ | |
| ("POST", "/agent-integrations/crypto/bridge"), | ||
| ("GET", "/agent-integrations/crypto/routes"), | ||
| ("POST", "/agent-integrations/crypto/swap"), | ||
| ("GET", "/agent-integrations/exa/agent/runs"), | ||
| ("POST", "/agent-integrations/exa/agent/runs"), | ||
| ("DELETE", "/agent-integrations/exa/agent/runs/{runId}"), | ||
| ("GET", "/agent-integrations/exa/agent/runs/{runId}"), | ||
| ("POST", "/agent-integrations/exa/agent/runs/{runId}/cancel"), | ||
| ("GET", "/agent-integrations/exa/agent/runs/{runId}/events"), | ||
| ("POST", "/agent-integrations/exa/agent/runs/{runId}/stop"), | ||
| ("POST", "/agent-integrations/exa/answer"), | ||
| ("GET", "/agent-integrations/exa/batches"), | ||
| ("POST", "/agent-integrations/exa/batches"), | ||
| ("DELETE", "/agent-integrations/exa/batches/{batchId}"), | ||
| ("GET", "/agent-integrations/exa/batches/{batchId}"), | ||
| ("POST", "/agent-integrations/exa/batches/{batchId}/cancel"), | ||
| ("POST", "/agent-integrations/exa/contents"), | ||
| ("POST", "/agent-integrations/exa/findSimilar"), | ||
| ("POST", "/agent-integrations/exa/search"), | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add typed methods and route tests for the new Exa search and telemetry routes The diff adds [RULE] missing-typed-methods · There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add the Exa operation to the typed SDK surface The Exa search route is now allowlisted in the generated raw-route registry, but there is still no corresponding typed client method anywhere under Additional
|
||
| ("GET", "/agent-integrations/file-storage/files"), | ||
| ("POST", "/agent-integrations/file-storage/files"), | ||
| ("DELETE", "/agent-integrations/file-storage/files/{fileId}"), | ||
|
|
@@ -199,6 +215,7 @@ pub const PUBLIC_ROUTES: &[(&str, &str)] = &[ | |
| ("POST", "/teams/{teamId}/switch"), | ||
| ("POST", "/teams/join"), | ||
| ("GET", "/teams/me/usage"), | ||
| ("POST", "/telemetry/langfuse/otel/v1/traces"), | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add typed methods and route tests for the new Exa and telemetry routes This change adds 16 additional Exa routes and the Langfuse telemetry route to the public contract, but the repository contains no typed methods or route tests for them. The parity test only checks route-list synchronization; it does not exercise request serialization, response handling, or the actual paths. Add the matching typed clients and mock-server tests for the new Exa and telemetry operations. Additional
|
||
| ("GET", "/voice-agent/get-signed-url"), | ||
| ("GET", "/waitlist/download/{token}"), | ||
| ("POST", "/waitlist/join"), | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -167,7 +167,10 @@ fn generated_rust_routes_match_the_public_manifest() { | |
| // 208 -> 211: the Gemini integration — `POST .../gemini/models/{model}/generate-content`, | ||
| // `POST .../gemini/live/sessions` and `GET .../gemini/live/sessions/{sessionId}`. | ||
| // 211 -> 212: the retired orchestration session-list compatibility route. | ||
| assert_eq!(manifest["source"]["operationCount"], 212); | ||
| // 212 -> 214: Exa search plus the authenticated Langfuse telemetry route. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Keep unrelated route families in separate changes This contract change combines the Exa integration's search, batch, contents, answer, and agent-run routes with the unrelated Langfuse telemetry route. Splitting the route families would keep the generated registry, typed implementations, tests, and contract changes reviewable and independently attributable. [RULE] incoherent-change-scope · |
||
| // 214 -> 229: the remaining priced Exa Contents, Answer, Find Similar, | ||
| // Agent run, and Batch operations. | ||
| assert_eq!(manifest["source"]["operationCount"], 229); | ||
| // 14 -> 13: `GET /orchestration/v1/steering` left with that family. | ||
| assert_eq!(manifest["source"]["supplementalOperationCount"], 13); | ||
| // 37 -> 39: the two service-token operations on | ||
|
|
@@ -208,7 +211,10 @@ fn generated_rust_routes_match_the_public_manifest() { | |
| // (`GET /opencompany/companies` and `POST /opencompany/instances/{slug}/update`). | ||
| // 208 -> 211: the three Gemini routes. | ||
| // 211 -> 212: the retired orchestration session-list compatibility route. | ||
| assert_eq!(rust_routes.len(), 212); | ||
| // 212 -> 214: Exa search plus the authenticated Langfuse telemetry route. | ||
| // 214 -> 229: the remaining priced Exa Contents, Answer, Find Similar, | ||
| // Agent run, and Batch operations. | ||
| assert_eq!(rust_routes.len(), 229); | ||
| assert_eq!(rust_routes, manifest_routes); | ||
| assert!(rust_routes | ||
| .iter() | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this SDK ships while the backend implementation is still pending, callers that trust this generated manifest will see
POST /agent-integrations/exa/searchadvertised as part of the deployed contract but receive a missing-route response in production. Keep it out of the public registry until it appears in the deployed Swagger document, or land the backend deployment first.AGENTS.md reference: AGENTS.md:L12-L19
Useful? React with 👍 / 👎.