unbrowse 10.1.8 → 10.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unbrowse",
3
- "version": "10.1.8",
3
+ "version": "10.3.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/unbrowse-ai/unbrowse.git"
package/runtime/cli.js CHANGED
@@ -63713,49 +63713,6 @@ function openAiEmbedder(env = process.env) {
63713
63713
  }
63714
63714
  };
63715
63715
  }
63716
- function mrlReduce(v, dim) {
63717
- if (v.length < dim)
63718
- throw new Error(`embedding too short for MRL reduce: got ${v.length}, need >=${dim}`);
63719
- if (v.length === dim)
63720
- return v;
63721
- const head = v.slice(0, dim);
63722
- let n = 0;
63723
- for (const x of head)
63724
- n += x * x;
63725
- n = Math.sqrt(n);
63726
- if (n === 0)
63727
- return head;
63728
- return head.map((x) => x / n);
63729
- }
63730
- function llamaCppEmbedder(env = process.env) {
63731
- const base2 = (env.UNBROWSE_EMBED_URL || env.AIKO_EMBED_URL || "http://127.0.0.1:8090").replace(/\/$/, "");
63732
- const model = env.UNBROWSE_EMBED_MODEL || "Qwen3-Embedding-4B";
63733
- const DIM = 1536;
63734
- return {
63735
- async embed(text) {
63736
- try {
63737
- const nativeSpecifier = "./contract-native.js";
63738
- const { embed1536Native } = await import(nativeSpecifier);
63739
- const native = embed1536Native(text);
63740
- if (native)
63741
- return native;
63742
- } catch {}
63743
- const res = await fetch(`${base2}/v1/embeddings`, {
63744
- method: "POST",
63745
- headers: { "Content-Type": "application/json" },
63746
- body: JSON.stringify({ model, input: text }),
63747
- signal: AbortSignal.timeout(30000)
63748
- });
63749
- const body = await res.text();
63750
- if (!res.ok)
63751
- throw new Error(`llama.cpp embeddings ${res.status}: ${body.slice(0, 200)}`);
63752
- const v = JSON.parse(body).data?.[0]?.embedding;
63753
- if (!v || v.length === 0)
63754
- throw new Error("llama.cpp embeddings: no embedding in response");
63755
- return mrlReduce(v, DIM);
63756
- }
63757
- };
63758
- }
63759
63716
  function nebiusEmbedder(env = process.env) {
63760
63717
  const nk = env.NEBIUS_API_KEY?.trim();
63761
63718
  const ork = env.OPENROUTER_API_KEY?.trim();
@@ -63797,11 +63754,6 @@ function nebiusEmbedder(env = process.env) {
63797
63754
  };
63798
63755
  }
63799
63756
  async function resolveLiveEmbedder(env = process.env) {
63800
- const llama = llamaCppEmbedder(env);
63801
- try {
63802
- await llama.embed("probe");
63803
- return { embed: llama, provider: "llama.cpp/qwen3-embedding-4b" };
63804
- } catch {}
63805
63757
  const oai = openAiEmbedder(env);
63806
63758
  if (oai) {
63807
63759
  try {
@@ -63843,38 +63795,40 @@ function contractCacheKey(id, namespace = DEFAULT_NAMESPACE) {
63843
63795
  function vecMapKey(assignedId, namespace = DEFAULT_NAMESPACE) {
63844
63796
  return `${namespace}:vecmap:${assignedId}`;
63845
63797
  }
63798
+ function stableVectorId(id) {
63799
+ const h = createHash4("sha256").update(id).digest();
63800
+ let n = 0;
63801
+ for (let i = 0;i < 6; i++)
63802
+ n = n * 256 + h[i];
63803
+ return n + 1;
63804
+ }
63846
63805
  function emergentVectorStore(namespace = DEFAULT_NAMESPACE) {
63847
- const headers = () => ({ Authorization: `Bearer ${emergentKey()}`, "Content-Type": "application/json" });
63806
+ const headers = () => ({
63807
+ Authorization: `Bearer ${emergentKey()}`,
63808
+ "Content-Type": "application/json",
63809
+ "User-Agent": "emergentdb-js/0.0.11"
63810
+ });
63848
63811
  return {
63849
63812
  async upsert(id, vector) {
63850
63813
  if (vector.length !== EMERGENTDB_VECTOR_DIM) {
63851
63814
  throw new Error(`emergent vector must be ${EMERGENTDB_VECTOR_DIM}-dim, got ${vector.length}`);
63852
63815
  }
63816
+ const numId = stableVectorId(id);
63853
63817
  const ins = await fetch(`${EMERGENTDB_BASE}/vectors/insert`, {
63854
63818
  method: "POST",
63855
63819
  headers: headers(),
63856
- body: JSON.stringify({ id: 1, vector, namespace }),
63820
+ body: JSON.stringify({ id: numId, vector, namespace }),
63857
63821
  signal: AbortSignal.timeout(emergentTimeoutMs())
63858
63822
  });
63859
63823
  if (!ins.ok)
63860
63824
  throw new Error(`vectors/insert ${ins.status}: ${(await ins.text()).slice(0, 200)}`);
63861
- const sr = await fetch(`${EMERGENTDB_BASE}/vectors/search`, {
63862
- method: "POST",
63863
- headers: headers(),
63864
- body: JSON.stringify({ vector, k: 1, namespace }),
63865
- signal: AbortSignal.timeout(emergentTimeoutMs())
63866
- });
63867
- if (!sr.ok)
63868
- throw new Error(`vectors/search(self) ${sr.status}: ${(await sr.text()).slice(0, 200)}`);
63869
- const assigned = (await sr.json()).results?.[0]?.id;
63870
- if (assigned !== undefined)
63871
- await kvSet(vecMapKey(assigned, namespace), id);
63825
+ await kvSet(vecMapKey(numId, namespace), id);
63872
63826
  },
63873
63827
  async search(vector, k) {
63874
63828
  const sr = await fetch(`${EMERGENTDB_BASE}/vectors/search`, {
63875
63829
  method: "POST",
63876
63830
  headers: headers(),
63877
- body: JSON.stringify({ vector, k, namespace }),
63831
+ body: JSON.stringify({ vector, k, include_metadata: false, namespace }),
63878
63832
  signal: AbortSignal.timeout(emergentTimeoutMs())
63879
63833
  });
63880
63834
  if (!sr.ok)
@@ -64932,7 +64886,7 @@ var init_telemetry = __esm(() => {
64932
64886
  });
64933
64887
 
64934
64888
  // .tmp-runtime-src/build-info.generated.ts
64935
- var BUILD_RELEASE_VERSION = "10.1.8", BUILD_GIT_SHA = "19288fa59909", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMTAuMS44IiwiZ2l0X3NoYSI6IjE5Mjg4ZmE1OTkwOSIsImNvZGVfaGFzaCI6IjVkOWViZjYxOWM2MSIsInRyYWNlX3ZlcnNpb24iOiI1ZDllYmY2MTljNjFAMTkyODhmYTU5OTA5IiwiaXNzdWVkX2F0IjoiMjAyNi0wNi0yM1QxMjozOTowMC41NTRaIn0", BUILD_RELEASE_MANIFEST_SIGNATURE = "sOsI7qC2tg6Pbtm69qJt58JRVAVS4IozNeI50MGo4NI", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai", BUILD_DEFAULT_PROFILE = "";
64889
+ var BUILD_RELEASE_VERSION = "10.3.0", BUILD_GIT_SHA = "f83d7800067c", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMTAuMy4wIiwiZ2l0X3NoYSI6ImY4M2Q3ODAwMDY3YyIsImNvZGVfaGFzaCI6IjVkOWViZjYxOWM2MSIsInRyYWNlX3ZlcnNpb24iOiI1ZDllYmY2MTljNjFAZjgzZDc4MDAwNjdjIiwiaXNzdWVkX2F0IjoiMjAyNi0wNi0yNFQxMzoxODoyMS44MDJaIn0", BUILD_RELEASE_MANIFEST_SIGNATURE = "ecKMJ9MsPEVLVo7Q4WKNqdJ_nF2UP4yu4ktN-ezC6Og", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai", BUILD_DEFAULT_PROFILE = "";
64936
64890
 
64937
64891
  // .tmp-runtime-src/version.ts
64938
64892
  import { createHash as createHash8 } from "crypto";
package/runtime/mcp.js CHANGED
@@ -94805,49 +94805,6 @@ function openAiEmbedder(env = process.env) {
94805
94805
  }
94806
94806
  };
94807
94807
  }
94808
- function mrlReduce(v, dim) {
94809
- if (v.length < dim)
94810
- throw new Error(`embedding too short for MRL reduce: got ${v.length}, need >=${dim}`);
94811
- if (v.length === dim)
94812
- return v;
94813
- const head = v.slice(0, dim);
94814
- let n = 0;
94815
- for (const x of head)
94816
- n += x * x;
94817
- n = Math.sqrt(n);
94818
- if (n === 0)
94819
- return head;
94820
- return head.map((x) => x / n);
94821
- }
94822
- function llamaCppEmbedder(env = process.env) {
94823
- const base2 = (env.UNBROWSE_EMBED_URL || env.AIKO_EMBED_URL || "http://127.0.0.1:8090").replace(/\/$/, "");
94824
- const model = env.UNBROWSE_EMBED_MODEL || "Qwen3-Embedding-4B";
94825
- const DIM = 1536;
94826
- return {
94827
- async embed(text) {
94828
- try {
94829
- const nativeSpecifier = "./contract-native.js";
94830
- const { embed1536Native } = await import(nativeSpecifier);
94831
- const native = embed1536Native(text);
94832
- if (native)
94833
- return native;
94834
- } catch {}
94835
- const res = await fetch(`${base2}/v1/embeddings`, {
94836
- method: "POST",
94837
- headers: { "Content-Type": "application/json" },
94838
- body: JSON.stringify({ model, input: text }),
94839
- signal: AbortSignal.timeout(30000)
94840
- });
94841
- const body = await res.text();
94842
- if (!res.ok)
94843
- throw new Error(`llama.cpp embeddings ${res.status}: ${body.slice(0, 200)}`);
94844
- const v = JSON.parse(body).data?.[0]?.embedding;
94845
- if (!v || v.length === 0)
94846
- throw new Error("llama.cpp embeddings: no embedding in response");
94847
- return mrlReduce(v, DIM);
94848
- }
94849
- };
94850
- }
94851
94808
  function nebiusEmbedder(env = process.env) {
94852
94809
  const nk = env.NEBIUS_API_KEY?.trim();
94853
94810
  const ork = env.OPENROUTER_API_KEY?.trim();
@@ -94889,11 +94846,6 @@ function nebiusEmbedder(env = process.env) {
94889
94846
  };
94890
94847
  }
94891
94848
  async function resolveLiveEmbedder(env = process.env) {
94892
- const llama = llamaCppEmbedder(env);
94893
- try {
94894
- await llama.embed("probe");
94895
- return { embed: llama, provider: "llama.cpp/qwen3-embedding-4b" };
94896
- } catch {}
94897
94849
  const oai = openAiEmbedder(env);
94898
94850
  if (oai) {
94899
94851
  try {
@@ -94935,38 +94887,40 @@ function contractCacheKey(id, namespace = DEFAULT_NAMESPACE) {
94935
94887
  function vecMapKey(assignedId, namespace = DEFAULT_NAMESPACE) {
94936
94888
  return `${namespace}:vecmap:${assignedId}`;
94937
94889
  }
94890
+ function stableVectorId(id) {
94891
+ const h = createHash4("sha256").update(id).digest();
94892
+ let n = 0;
94893
+ for (let i = 0;i < 6; i++)
94894
+ n = n * 256 + h[i];
94895
+ return n + 1;
94896
+ }
94938
94897
  function emergentVectorStore(namespace = DEFAULT_NAMESPACE) {
94939
- const headers = () => ({ Authorization: `Bearer ${emergentKey()}`, "Content-Type": "application/json" });
94898
+ const headers = () => ({
94899
+ Authorization: `Bearer ${emergentKey()}`,
94900
+ "Content-Type": "application/json",
94901
+ "User-Agent": "emergentdb-js/0.0.11"
94902
+ });
94940
94903
  return {
94941
94904
  async upsert(id, vector) {
94942
94905
  if (vector.length !== EMERGENTDB_VECTOR_DIM) {
94943
94906
  throw new Error(`emergent vector must be ${EMERGENTDB_VECTOR_DIM}-dim, got ${vector.length}`);
94944
94907
  }
94908
+ const numId = stableVectorId(id);
94945
94909
  const ins = await fetch(`${EMERGENTDB_BASE}/vectors/insert`, {
94946
94910
  method: "POST",
94947
94911
  headers: headers(),
94948
- body: JSON.stringify({ id: 1, vector, namespace }),
94912
+ body: JSON.stringify({ id: numId, vector, namespace }),
94949
94913
  signal: AbortSignal.timeout(emergentTimeoutMs())
94950
94914
  });
94951
94915
  if (!ins.ok)
94952
94916
  throw new Error(`vectors/insert ${ins.status}: ${(await ins.text()).slice(0, 200)}`);
94953
- const sr = await fetch(`${EMERGENTDB_BASE}/vectors/search`, {
94954
- method: "POST",
94955
- headers: headers(),
94956
- body: JSON.stringify({ vector, k: 1, namespace }),
94957
- signal: AbortSignal.timeout(emergentTimeoutMs())
94958
- });
94959
- if (!sr.ok)
94960
- throw new Error(`vectors/search(self) ${sr.status}: ${(await sr.text()).slice(0, 200)}`);
94961
- const assigned = (await sr.json()).results?.[0]?.id;
94962
- if (assigned !== undefined)
94963
- await kvSet(vecMapKey(assigned, namespace), id);
94917
+ await kvSet(vecMapKey(numId, namespace), id);
94964
94918
  },
94965
94919
  async search(vector, k) {
94966
94920
  const sr = await fetch(`${EMERGENTDB_BASE}/vectors/search`, {
94967
94921
  method: "POST",
94968
94922
  headers: headers(),
94969
- body: JSON.stringify({ vector, k, namespace }),
94923
+ body: JSON.stringify({ vector, k, include_metadata: false, namespace }),
94970
94924
  signal: AbortSignal.timeout(emergentTimeoutMs())
94971
94925
  });
94972
94926
  if (!sr.ok)
@@ -101452,7 +101406,7 @@ async function mergedAuthHeaders(key, signer) {
101452
101406
  var AUTH_DOMAIN = "unbrowse-auth:v1";
101453
101407
 
101454
101408
  // .tmp-runtime-src/build-info.generated.ts
101455
- var BUILD_RELEASE_VERSION = "10.1.8", BUILD_GIT_SHA = "19288fa59909", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMTAuMS44IiwiZ2l0X3NoYSI6IjE5Mjg4ZmE1OTkwOSIsImNvZGVfaGFzaCI6IjVkOWViZjYxOWM2MSIsInRyYWNlX3ZlcnNpb24iOiI1ZDllYmY2MTljNjFAMTkyODhmYTU5OTA5IiwiaXNzdWVkX2F0IjoiMjAyNi0wNi0yM1QxMjozOTowMC41NTRaIn0", BUILD_RELEASE_MANIFEST_SIGNATURE = "sOsI7qC2tg6Pbtm69qJt58JRVAVS4IozNeI50MGo4NI", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai", BUILD_DEFAULT_PROFILE = "";
101409
+ var BUILD_RELEASE_VERSION = "10.3.0", BUILD_GIT_SHA = "f83d7800067c", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMTAuMy4wIiwiZ2l0X3NoYSI6ImY4M2Q3ODAwMDY3YyIsImNvZGVfaGFzaCI6IjVkOWViZjYxOWM2MSIsInRyYWNlX3ZlcnNpb24iOiI1ZDllYmY2MTljNjFAZjgzZDc4MDAwNjdjIiwiaXNzdWVkX2F0IjoiMjAyNi0wNi0yNFQxMzoxODoyMS44MDJaIn0", BUILD_RELEASE_MANIFEST_SIGNATURE = "ecKMJ9MsPEVLVo7Q4WKNqdJ_nF2UP4yu4ktN-ezC6Og", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai", BUILD_DEFAULT_PROFILE = "";
101456
101410
 
101457
101411
  // .tmp-runtime-src/version.ts
101458
101412
  import { createHash as createHash6 } from "crypto";