Repository navigation
Conversation
Tiny Sweeper reviewFindingsNo active actionable findings. Advisory notes
Resolved this pass
Verdict: Incomplete · Priority: none Diagnostics and supporting detailsFull summaryPull request purpose (title): feat(llm)!: add native Perplexity Agent API support. The description frames it as adding a native Perplexity Agent provider so callers use one explicit key with a provider-qualified model, fallback models, or a preset, preserving rich output and delivering real incremental stream events with explicit background recovery and generated-file access. The tests lane reported no new blocking defect in the incremental diff but flagged that live provider behaviours remain unverified; the description lane reports one remaining finding and two earlier findings still open; the commits lane reports no sensitive content in committed files while 13 earlier findings remain open. Unreviewed paths
Partial review reasons
Review snapshot
Completeness: Incomplete What changedThe change adds a native Perplexity Agent provider: `PerplexityModel` is built from an explicit key plus a `PerplexitySelection`, defaults to the `/v1/agent` creation route with an optional `/v1/responses` creation alias, and keeps retrieval, reconnect, cancel and file routes on the canonical Agent paths. Responses gain ordered `output` and `execution` metadata; streams gain an `OutputEvent` channel and retain progress; provider errors gain `partial_response`; `DeferredStatus` gains structured provider-failure and cancellation states; tool calls and tool messages gain replay/context fields; and `ProviderKind::Perplexity` is added, with the OpenAI-compatible constructor rejecting Perplexity specs. Hosted MCP, search and sandbox activity stays remote, application functions are returned to the caller with original argument bytes and thought signatures, and the adapter performs no local file writes or tool execution. Background submit/retrieve/resume/cancel and response-scoped file listing/download are added with bounded sizes, timeouts and retry classification that retries creation only on explicit rate limits. The OpenAI Responses adapter now populates ordered output and execution metadata. Latest-push-delta: unavailable — the evidence provides the prior reviewed head `00380d5f2dc9` and the current head `d18a99731f1f`, but states there is no trusted base-to-head diff comparison, so no push delta is reported here; the whole-pull-request behavior above is not a push delta. Features
Tests
Before merge
Agent review detailscritique
security
tests
commits
description
Evidence and run details
|
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
|
@senamakel pls review |
There was a problem hiding this comment.
Requesting changes: 2 lane(s) blocking, worst finding is critical.
Fix or reply to the findings below and push. The next review clears this automatically once they are gone — you should not need to dismiss anything by hand.
$0.0731 · 1,237,432 in / 56,882 out · 96,922 cached (8%) · gpt-5.6-luna, glm-5.3-flash, , gpt-6-luna
critique: $0.0480 · 673,614 in / 36,421 out · 61,146 cached (9%) · gpt-5.6-luna, glm-5.3-flash,
security: $0.0200 · 292,907 in / 14,956 out · 35,776 cached (12%) · gpt-5.6-luna
tests: $0.0008 · 87,709 in / 1,465 out · 0 cached (0%) · glm-5.3-flash
description: $0.0008 · 87,349 in / 80 out · 0 cached (0%) · glm-5.3-flash
There was a problem hiding this comment.
Requesting changes: 2 lane(s) blocking, worst finding is high.
Fix or reply to the findings below and push. The next review clears this automatically once they are gone — you should not need to dismiss anything by hand.
$0.0516 · 953,109 in / 59,743 out · 62,840 cached (7%) · gpt-5.6-luna, glm-5.3-flash, deepseek-v4.1-flash
critique: $0.0227 · 373,734 in / 23,986 out · 34,580 cached (9%) · gpt-5.6-luna, glm-5.3-flash
security: $0.0196 · 307,923 in / 23,321 out · 26,852 cached (9%) · gpt-5.6-luna
tests: $0.0000 · 85,561 in / 229 out · 1,408 cached (2%) · deepseek-v4.1-flash
description: $0.0091 · 89,644 in / 9,460 out · 0 cached (0%) · glm-5.3-flash
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nctions Forced hosted tool choices must now be declared in PerplexityOptions.tools even with a preset, and an explicit function may not redefine a system-declared tool of the same name. Lifecycle routes are documented as always using the canonical /agent collection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… guard Lifecycle calls share one RESOURCE_COLLECTION constant for the canonical /agent routes, the Perplexity ProviderSpec documents why its model is empty and is pinned by a test, and the integration test restores the network guard on drop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve conflicts with the 0.5.0 line: keep upstream's dependency set (dropping the unused sha2) plus the raw_value feature and http dev-dependency Perplexity needs, export both the new dispatch/finish-reason APIs and the output types, and keep canonical finish reasons alongside the full partial response on stream failures. Upstream's new response conversion and tests now initialize the output, execution, and replay fields this branch added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
everything's fixed @senamakel |
Summary
Add a native Perplexity Agent API provider so callers can use one explicit key with a provider-qualified model, fallback models, or a preset. Preserve rich output and deliver real incremental stream events, with explicit background recovery and generated-file access.
Related issue
None.
API or behavior changes
PerplexityModel, typed configuration/options, andProviderKind::Perplexity. Use/v1/agent, with an explicit/v1/responsescreation alias.Provider limitation observed live
Direct HTTP probes independently reproduced HTTP 400 when
previous_response_idreferences a response ending in a custom function call, for both Google and OpenAI. Even plain user follow-ups to those parents failed; completed assistant-text parents worked. Explicit full call/result replay succeeded. The adapter preserves that error without silently resubmitting or changing strategies. The exact internal provider cause is unconfirmed.Cancellation was acknowledged as
cancelling, followed byincomplete; the adapter preserves the reported status rather than treating acknowledgement as confirmed cancellation.Validation
cargo fmt --all -- --checkcargo clippy --all-targets --all-features -- -D warningscargo build --all-targets --all-featurescargo test --all-features— 1,082 passing unit, integration, and documentation testsRUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-featuresgit diff --cached --checkLive verification covered Google
/agent, OpenAI/responses, preset web search with source/citation-marker preservation, incremental text, signed function calls/replay, ordinary conversation continuation, background reconnect/retrieval, cancellation acknowledgement, and CSV generation/listing/download.cargo run -p tinyinference-llm --example perplexity_function_replaycompleted successfully with explicitly supplied credentials.Rust 1.88 MSRV, default-feature-only tests, cargo-deny, and coverage measurement were not run locally. The corresponding extra toolchain/tools are not installed locally.
Tests
Offline fixtures cover request validation, known and unknown output, exact decimal cost rounding, split UTF-8/SSE frames, provisional null content/empty model fields observed live, function argument/signature preservation, authoritative snapshots, partial failures, size/deadline bounds, retry classification, credential redaction, scoped recovery handles, file access, and the public network guard.
Remote MCP/connector integrations and every model/hosted-tool combination have not been tested live.
Documentation
docs/migrations/perplexity-agent.md: contracts, migration changes, retries, storage, and live limitations.crates/tinyinference-llm/examples/perplexity_function_replay.rs: explicit signed call/result replay.Checklist
#[allow(...)],#[ignore], or relaxed lints.envcontents in the diff or the descriptionReview follow-up
Reviewed all ten inline threads (including the two duplicated lane findings) and both additional concerns in the test-lane summary against the full source. The automated reviewer reported unavailable code retrieval; several findings were based on incomplete context.
apply_toresponses_aliascontrols creation only, with canonical Agent recovery routes. Expanded the submit/poll/cancel test to exercise alias creation followed by/agent/{id}recovery.OpenAiModel::from_specrejects Perplexity. Clarified theProviderSpec.modelrustdoc. A Sonar default would select a different API contract.Transport::send, which checks the guard. The isolated public integration test exercises invoke, stream, submit, retrieve, resume, cancel, list, download, and deferred polling.tests/perplexity_api.rsis a separate Cargo integration-test binary containing one test. Other integration files and unit tests execute in different processes. No concurrent unrelated case shares this process.timeout_at(deadline, work)wraps the entire send/retry future. Added a paused-clock regression proving a pending transport send is cancelled at the request deadline.starting_after, with a complete authoritative terminal response. The existing reconnect regression verifies old events are skipped, new deltas survive, and the final answer is complete.All five required local checks passed again after these changes (1,082 tests). No live paid calls were needed for this follow-up. Review threads have not been manually marked resolved.