chore(release): version packages - #30
Merged
Merged
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
github-actions
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
September 18, 2026 18:09
7dd83d6 to
d9b0bcd
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
September 18, 2026 18:11
d9b0bcd to
c7118bd
Compare
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
vecstore-sdk@0.1.2
Patch Changes
f245c79: Make
createIndexall-or-nothing on the pgvector, Qdrant, and Cloudflare Vectorize adapters. Each one runs several provider calls in sequence, and a failure partway through used to leave the earlier calls standing, so the caller got an error and a half-built index that reportedalready_existson the retry.The pgvector adapter sends
CREATE EXTENSION,CREATE TABLE, and the twoCREATE INDEXstatements as oneDOblock, which the server runs in a single implicit transaction. The HNSW index caps avectorcolumn at 2000 dimensions, so a 3072-dimension index used to leave a table with no vector index on it and every laterqueryfell back to an exact scan. Nothing changes forPgQueryable, so apgPool, apgClient, and postgres.js throughsql.unsafeall keep working.The Qdrant adapter deletes the collection it just created when the
_namespacetenant index fails, and the Vectorize adapter deletes the index it just created when a metadata index fails. Both return the original error rather than whatever the cleanup call reports.6fc74f0: Batch the Qdrant and Redis writes the way the other adapters already do, and cache the pgvector distance metric on the store.
Qdrant used to put the whole list in one request. Ten thousand records of 1536 dimensions is a body far past the 32 MB the REST API accepts by default, so the call failed where the other adapters split the work.
upsertnow goes out 500 points at a time, andfetchanddelete({ ids })chunk their point ids at 1000 per request.Redis used to issue one
JSON.SETper record with nothing holding the fan-out back, anddelete({ ids })handed the whole key list to a singleUNLINK. Writes now run 500 records at a time, one batch after the previous one resolves, and the unlink keys are chunked the same way.A large
upsertis now several provider requests, so a failure can leave some of the records written. Retry the whole call: an upsert replaces by id.The pgvector adapter read the distance metric from
pg_indexesonce per index handle, sostore.index("docs").query(...), the idiom the docs teach, paid a catalog round trip before every search. The cache now lives on the store, keyed by schema and table, and holds the in-flight promise, so concurrent first queries share one lookup. A lookup that fails is retried on the next query.9835cfc: Align six contract edges where one adapter answered a call differently from the rest.
Qdrant
deleteIndexreturnsnot_foundfor a collection the server does not hold. The client returns the server's boolean and the adapter used to discard it, so deleting a name that never existed came backokwhile the other six adapters reportnot_found.createIndexrejects adimensionthat is not a positive integer on every adapter, with the message pgvector and Supabase already used. The check used to live on those two only, sodimension: 0was a cleaninvalid_argumenton two providers and a provider-shaped error on the rest, and Redis went as far as sendingFT.CREATEwithDIM 0. The check insql/supabase.sqlstays where it is.Pinecone
queryhonorsincludeMetadataandincludeVectoron the records it returns. The adapter used to forward both flags and return whatever came back, and Pinecone answers withvalues: []rather than leaving the field out, so aScoredRecordfrom Pinecone had a different shape than one from the other six adapters.An upsert batch that repeats an id keeps the last record on pgvector and Supabase. Postgres refuses an
INSERT ... ON CONFLICT DO UPDATEthat names the same key twice in one statement, so such a batch used to come back as aprovidererror where the other five adapters accepted it.Supabase reports a
TypeErrorthat is not a failed fetch as aprovidererror. EveryTypeErrorused to count as a connection failure, so a bug in the adapter or insupabase-jsreached the caller askind: "connection"and a retry policy kept retrying a call that can never succeed.Redis delete by filter unlinks only keys under the index prefix, and an index name holding a
:is now rejected withinvalid_argumentoncreateIndexand on every verb.FT.SEARCHscopes on the namespace field rather than on the key prefix, so an index nameddocsand one nameddocs:v2shared a keyspace and a delete in the first took the second one's documents with it. If you already run an index whose name holds a colon, rename it before you upgrade.507195c: Close three gaps in the namespace emulation the Qdrant, Cloudflare Vectorize, and Upstash metadata-mode adapters share.
A default-namespace handle could reach a record that belongs to another namespace through an id. Qdrant
delete({ ids })now sends the_namespacecondition next to ahas_idcondition instead of a bare point list, and Qdrantfetchdrops a point whose payload reports a different namespace. Vectorize and Upstash read a default-namespace delete back before they send it and remove only the ids whose stored record reports no namespace. A handle with a namespace is unchanged, and Upstash native mode, which has real namespaces, keeps its single call.The three adapters join the namespace and the id with a slash when they build a stored id, and the join is ambiguous: namespace
awith id1/band namespacea/3with idbproduce the same string.upsert,query,fetch, anddeletenow returninvalid_argumentfor a namespace that contains a slash rather than letting two tenants collide on one stored id.upsertalso returnsinvalid_argumentfor a record whose metadata sets a key the adapter keeps for itself,_idor_namespace, which previously let a caller decide the id a record reads back under.