Skip to content

feat(vector-db): add REST-only Qdrant client with live integration tests - #664

Open
BillTheHuman wants to merge 1 commit into
arakoodev:tsfrom
BillTheHuman:feat/qdrant-rest-client-20260918
Open

BillTheHuman wants to merge 1 commit into
arakoodev:tsfrom
BillTheHuman:feat/qdrant-rest-client-20260918

Conversation

@BillTheHuman

Copy link
Copy Markdown

Fixes #273.

Adds a Qdrant client through the current @arakoodev/edgechains.js/vector-db entry point. The older paths in the issue have moved; this change targets JS/edgechains/arakoodev/src/vector-db on the checked ts baseline 8d79cb4bbf23a9dbc305152fc225bd50db48a0de.

Implementation

  • Native fetch calls directly to the REST API; no Qdrant SDK or added runtime dependency.
  • Collection create/read/delete; dense and named-dense vector upsert; nearest-neighbor queries with payload filters, thresholds and named-vector selection; point retrieval; explicit scroll pagination; payload merge; explicit-ID deletion.
  • Requests preserve reverse-proxy path prefixes, encode collection names, use api-key headers and apply a client-side deadline. No automatic replay of failed writes; timeout/transport errors explain that the server may already have applied a write.
  • Finite vectors, safe integer/UUID point IDs, expected response envelopes and result shapes are checked. IDs outside JavaScript's safe integer range are rejected rather than silently rounded. Scroll returns one page and its continuation, not a claim that all matching points were fetched.
  • This is a focused dense-vector client, not every Qdrant API: sparse/hybrid/multivector queries, model inference and cluster administration are outside this patch.

Actual verification

Tested revision: 6717dfd695b506193a24657689d5067b6b0a272a.
Node 22.21.1, TypeScript 5.9.3, Vitest 2.1.9, real Qdrant 1.19.1 in an isolated local container. Synthetic vectors and a local test key only; no cloud account or model API was used.

  • 50 unit/transport tests passed. These inject the HTTP transport but execute the actual exported client.
  • Three real REST integration scenarios passed, covering full collection/point lifecycle, query ranking and filtering, pagination, payload merge, overwrites/deletion, named vectors and UUIDs, plus real authentication, dimension, duplicate-create and missing-collection errors. The focused run totals 53 pass / zero fail / zero skipped.
  • Both unchanged baseline and candidate SDK builds pass. The new test files also pass a separate TypeScript check, because the SDK build excludes test files. Formatting and git diff --check pass.
  • npm pack --dry-run confirms the client JS, declarations and vector-db export are included. Nothing was published to npm.
  • The whole legacy SDK test run is not green. Both baseline and candidate have the same 15 failing test files and three failing test assertions. The failures involve obsolete built-module paths, absent Jest/global bindings, and existing scraper/browser setup or network failures. Their normalized failure signatures were compared and match. The final full run has 50 passing new unit tests and three opt-in integration cases skipped; those three were separately enabled and passed as recorded above. No repository-wide or hosted-CI success claim is made.

Example, documentation and required demo

Usage, API scope and reproduction instructions

Validation summary

16-second running demo, MP4

The demo is an actual terminal recording of examples/qdrant.cjs importing the compiled package export and asserting live Qdrant results. It creates and removes only its own temporary collection. It is not an animation of invented output.

Contribution and bounty status

The implementation, testing and description were prepared with AI assistance on behalf of William (BillTheHuman). No independent manual human code review is claimed. Existing competing submissions are acknowledged; no competing implementation was copied. This follows the posted attempt plan: #273 (comment).

The advertised $30 is submitted for maintainer/reward-creator consideration, not represented as assigned, awarded or owed. No CLA signature or agreement acceptance is asserted on William's behalf here; any required personal signature remains for him to review.

/claim #273

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@github-actions

github-actions Bot commented Sep 18, 2026

Copy link
Copy Markdown

CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅

@BillTheHuman

Copy link
Copy Markdown
Author

I have read the Arakoo CLA Document and I hereby sign the CLA

Copy link
Copy Markdown
Author

recheck

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.

BOUNTY: add support for qdrant vector database in javascript sdk

1 participant