diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100755 index 0000000..1dfd709 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,5 @@ +# Changesets + +Add a changeset for every user-visible change. On `main`, the release workflow +creates a version PR; merging that PR updates the changelog and publishes the +new package to npm. diff --git a/.changeset/breezy-cooks-make.md b/.changeset/breezy-cooks-make.md new file mode 100644 index 0000000..cdf6ac8 --- /dev/null +++ b/.changeset/breezy-cooks-make.md @@ -0,0 +1,5 @@ +--- +"@rushdb/javascript-sdk": major +--- + +Direct mode for 3.0 rust native engine (rc) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100755 index 0000000..f4d3254 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.4/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.changeset/direct-engine-sdk.md b/.changeset/direct-engine-sdk.md new file mode 100755 index 0000000..06937ce --- /dev/null +++ b/.changeset/direct-engine-sdk.md @@ -0,0 +1,5 @@ +--- +'@rushdb/javascript-sdk': minor +--- + +Add direct mode for the standalone RushDB engine, including record replacement, deletion by ID, and single-record lookups. diff --git a/.changeset/direct-mode-cloud-boundary.md b/.changeset/direct-mode-cloud-boundary.md new file mode 100644 index 0000000..c07859f --- /dev/null +++ b/.changeset/direct-mode-cloud-boundary.md @@ -0,0 +1,32 @@ +--- +'@rushdb/javascript-sdk': minor +--- + +Direct mode (a standalone engine) and RushDB Cloud are one SDK with one code path. + +- In direct mode every method is answered from the engine: records (including `find` with + `orderBy`, `select` and `groupBy`, `upsert`, `set`, `findOne`/`findUniq`, `findById` of several + ids), relationships, labels, properties, JSON and CSV import, CSV export, text indexes and keyword + search, external vector indexes, vector and hybrid search with a `queryVector`, raw openCypher, the + schema and transactions. Nothing is ever sent to RushDB Cloud: before, a method without direct + support sent the engine token to `api.rushdb.com`. +- The Cloud-only features (managed embeddings, `ai.search`, `relationships.patterns.*`, + `settings.get`) throw `CloudOnlyError` before sending anything. `CLOUD_ONLY_METHODS`, + `CLOUD_ONLY_FORMS` and `isCloudOnlyMethod` list them. +- In a transaction, direct mode stages record creates, `update`, `set`, `deleteById`, `attach`, + `importJson` and `importCsv` (records are named by id; the engine resolves them inside the + transaction). Writes the engine cannot stage (bulk deletes, `detach`, upserts and merge imports, + inline vectors) throw `DirectModeError` instead of running outside the transaction; the engine + refuses a merge import or inline vectors in a staged import. +- `records.detach` without `typeOrTypes` removes relationships of every type, and without + `direction` removes them both ways, as RushDB 2.x on Neo4j did. `records.attach` and + `relationships.createMany` without a type create `__RUSHDB__RELATION__DEFAULT__` relationships, + as before, instead of `RELATED_TO`. +- `direct: true` without `engineUrl` throws instead of falling back to RushDB Cloud. New `scope` + option for a multitenant engine; the unused `engineToken` option is gone. +- Fixed: direct mode never sent the request body, so every call failed against a real engine. +- Fixed in both modes: `records.findById([...ids])` posted to the create endpoint; it now searches + by id. +- The package declares `exports`: under Node, `import` gets an ES module build (`dist/index.node.mjs`) + whose default export is the `RushDB` class; before, an ESM `import RushDB from` received the + CommonJS module object. diff --git a/.changeset/hybrid-fusion.md b/.changeset/hybrid-fusion.md new file mode 100644 index 0000000..f86a0ed --- /dev/null +++ b/.changeset/hybrid-fusion.md @@ -0,0 +1,9 @@ +--- +'@rushdb/javascript-sdk': minor +--- + +Hybrid search fusion controls. `fusion: 'dbsf'` fuses each leg's scores normalized by its own +distribution (mean ± 3σ, as Qdrant defines DBSF) instead of ranks (`rrf`, the default, with +`rrfK`). Each leg takes a `weight` (its share of the fused score) and a `prefetchLimit` (hits it +ranks before fusion, 1–10,000). On `vectorSearch`, the top-level `weight`/`prefetchLimit` are the +vector leg's and `text.weight`/`text.prefetchLimit` the text leg's; the result reports `fusion`. diff --git a/.changeset/named-embedding-indexes.md b/.changeset/named-embedding-indexes.md new file mode 100644 index 0000000..ffd5876 --- /dev/null +++ b/.changeset/named-embedding-indexes.md @@ -0,0 +1,9 @@ +--- +'@rushdb/javascript-sdk': minor +--- + +Embedding indexes have names. A name is unique within a project, defaults to +`