feat(parity): close high-value SDK parity gaps#93
Draft
kxzk wants to merge 1 commit into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DRClose the high-value Ruby SDK parity gaps against the local JS/Python SDKs while keeping the public API flat and dependency-light.
Whylangfuse-rbalready had prompts, traces, scores, datasets, experiments, and Rails-friendly config, but it was missing several high-value surfaces that JS/Python expose: SDK identity headers, prompt deletion, media references, and thin read/admin APIs Rails apps need for operational workflows.This PR follows the local sibling SDKs as evidence for behavior, not as a mandate to copy their generated manager shape. The committed matrix in
docs/PARITY.mdcalls out what shipped, what belongs in separate issues, what is deferred, and what is not applicable to Ruby.ChecklistWhat changedX-Langfuse-Sdk-Name,X-Langfuse-Sdk-Version,X-Langfuse-Public-Keyx-langfuse-sdk-name,x-langfuse-sdk-version,x-langfuse-public-keyclient.delete_prompt(name, version: nil, label: nil)with prompt-name-wide cache invalidation andnilreturn semantics for successful deletes.Langfuse::Media/Langfuse::LangfuseMediasupport:ValidationLocal focused behavior:
Full gates:
Langfuse CLI/API discovery:
npx --yes langfuse-cli api __schema --commands # Resources include prompts, medias, sessions, observations, scores, score-configs, models, metrics, healths. npx --yes langfuse-cli api prompts --help npx --yes langfuse-cli api medias --help npx --yes langfuse-cli api sessions --help npx --yes langfuse-cli api observations --help npx --yes langfuse-cli api scores --help npx --yes langfuse-cli api score-configs --help npx --yes langfuse-cli api models --help npx --yes langfuse-cli api metrics list --help npx --yes langfuse-cli api healths --helpLive platform verifier:
Result:
{ "status": "passed", "prompt_deleted": "aai-129-parity-20260508095438-bdb115e6", "trace_id": "6ae2a195203043936a1466d990c54d2f", "session_id": "aai-129-session-bdb115e6", "media_id": "aoIqTxOv6aPUnUDNJmgxXC", "score_id": "6d03b0cd-a97c-48ca-a625-ab7472f376f2", "score_config_retained": "ed02f84b-f7f4-4d38-8579-fee57c76a357", "model_deleted": "cmowqo53q000ec807z7ut2new", "metrics_keys": ["unavailable"], "platform_caveats": [ "observations-v2 unavailable on this Langfuse host: API request failed (501): v2 APIs are currently in beta and only available on Langfuse Cloud", "metrics-v2 unavailable on this Langfuse host: API request failed (501): v2 APIs are currently in beta and only available on Langfuse Cloud" ] }Cleanup notes:
CaveatsThe current live Langfuse host is not Cloud for beta v2 observations/metrics. It returns 501 for those endpoints. This PR still ships the Ruby flat methods because JS/Python expose those endpoints and the CLI schema advertises them; request paths and query encoding are covered by WebMock specs. Scores-v2 readback did validate live on this host.