@anuma/sdk 7.0.4 → 7.0.5
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/dist/expo/index.cjs +101 -58
- package/dist/expo/index.d.mts +1 -8
- package/dist/expo/index.d.ts +1 -8
- package/dist/expo/index.mjs +99 -58
- package/dist/index.cjs +29 -7
- package/dist/index.mjs +29 -7
- package/dist/react/index.cjs +101 -58
- package/dist/react/index.d.mts +1 -8
- package/dist/react/index.d.ts +1 -8
- package/dist/react/index.mjs +99 -58
- package/dist/server/index.cjs +84 -47
- package/dist/server/index.d.mts +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.mjs +82 -47
- package/dist/tools/selection/index.cjs +29 -7
- package/dist/tools/selection/index.mjs +29 -7
- package/package.json +2 -2
package/dist/server/index.mjs
CHANGED
|
@@ -18478,6 +18478,22 @@ var postApiV1Embeddings = (options) => (options.client ?? client).post({
|
|
|
18478
18478
|
}
|
|
18479
18479
|
});
|
|
18480
18480
|
|
|
18481
|
+
// src/lib/memoryEngine/embeddingCacheState.ts
|
|
18482
|
+
var EMBEDDING_CACHE_STATE_KEY = /* @__PURE__ */ Symbol.for("@anuma/sdk/embedding-cache/v1");
|
|
18483
|
+
var cacheGlobal = globalThis;
|
|
18484
|
+
var fallbackState = {
|
|
18485
|
+
scopedViews: /* @__PURE__ */ new WeakMap(),
|
|
18486
|
+
inFlightByCache: /* @__PURE__ */ new WeakMap(),
|
|
18487
|
+
cachedEmbeddingModels: /* @__PURE__ */ new WeakMap()
|
|
18488
|
+
};
|
|
18489
|
+
function getEmbeddingCacheState() {
|
|
18490
|
+
try {
|
|
18491
|
+
return cacheGlobal[EMBEDDING_CACHE_STATE_KEY] ?? (cacheGlobal[EMBEDDING_CACHE_STATE_KEY] = fallbackState);
|
|
18492
|
+
} catch {
|
|
18493
|
+
return fallbackState;
|
|
18494
|
+
}
|
|
18495
|
+
}
|
|
18496
|
+
|
|
18481
18497
|
// src/lib/memoryEngine/generate.ts
|
|
18482
18498
|
var EMBED_MAX_ATTEMPTS = 4;
|
|
18483
18499
|
var DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS = 15e3;
|
|
@@ -18569,15 +18585,18 @@ async function generateEmbedding(text12, options) {
|
|
|
18569
18585
|
if (total === void 0) return embedOne(text12, options, void 0);
|
|
18570
18586
|
return withDeadline((signal) => embedOne(text12, options, signal), total, "embedding");
|
|
18571
18587
|
}
|
|
18572
|
-
var inFlightByCache
|
|
18588
|
+
var { inFlightByCache, cachedEmbeddingModels } = getEmbeddingCacheState();
|
|
18573
18589
|
async function embedOne(text12, options, outer) {
|
|
18574
18590
|
const { cache } = options;
|
|
18575
18591
|
if (!cache) return Array.from(await requestEmbedding(text12, options, outer));
|
|
18592
|
+
const model = options.model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
18576
18593
|
const cached = cache.get(text12);
|
|
18577
|
-
|
|
18594
|
+
const cachedModel = cached && cachedEmbeddingModels.get(cached);
|
|
18595
|
+
if (cached && (cachedModel === void 0 || cachedModel === model)) return Array.from(cached);
|
|
18578
18596
|
const inFlight = inFlightByCache.get(cache) ?? /* @__PURE__ */ new Map();
|
|
18579
18597
|
inFlightByCache.set(cache, inFlight);
|
|
18580
|
-
const
|
|
18598
|
+
const requestKey = JSON.stringify([model, text12]);
|
|
18599
|
+
const pending = inFlight.get(requestKey);
|
|
18581
18600
|
if (pending) {
|
|
18582
18601
|
try {
|
|
18583
18602
|
return Array.from(await pending);
|
|
@@ -18586,13 +18605,14 @@ async function embedOne(text12, options, outer) {
|
|
|
18586
18605
|
}
|
|
18587
18606
|
}
|
|
18588
18607
|
const request = requestEmbedding(text12, options, outer);
|
|
18589
|
-
inFlight.set(
|
|
18608
|
+
inFlight.set(requestKey, request);
|
|
18590
18609
|
try {
|
|
18591
18610
|
const embedding = await request;
|
|
18611
|
+
cachedEmbeddingModels.set(embedding, model);
|
|
18592
18612
|
cache.set(text12, embedding);
|
|
18593
18613
|
return Array.from(embedding);
|
|
18594
18614
|
} finally {
|
|
18595
|
-
if (inFlight.get(
|
|
18615
|
+
if (inFlight.get(requestKey) === request) inFlight.delete(requestKey);
|
|
18596
18616
|
}
|
|
18597
18617
|
}
|
|
18598
18618
|
async function requestEmbedding(text12, options, outer) {
|
|
@@ -18675,13 +18695,15 @@ async function embedMany(texts, options, outer) {
|
|
|
18675
18695
|
const { baseUrl = BASE_URL, model, batchSize, cache } = options;
|
|
18676
18696
|
const timeoutMs = options.timeoutMs ?? DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS;
|
|
18677
18697
|
const chunkSize = batchSize ?? DEFAULT_EMBEDDING_BATCH_SIZE;
|
|
18698
|
+
const embeddingModel = model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
18678
18699
|
const results = new Array(texts.length).fill(null);
|
|
18679
18700
|
const uncachedIndices = [];
|
|
18680
18701
|
const uncachedTexts = [];
|
|
18681
18702
|
for (let i = 0; i < texts.length; i++) {
|
|
18682
18703
|
if (cache) {
|
|
18683
18704
|
const cached = cache.get(texts[i]);
|
|
18684
|
-
|
|
18705
|
+
const cachedModel = cached && cachedEmbeddingModels.get(cached);
|
|
18706
|
+
if (cached && (cachedModel === void 0 || cachedModel === embeddingModel)) {
|
|
18685
18707
|
results[i] = Array.from(cached);
|
|
18686
18708
|
continue;
|
|
18687
18709
|
}
|
|
@@ -18697,7 +18719,6 @@ async function embedMany(texts, options, outer) {
|
|
|
18697
18719
|
...taskTypeHeader(options.taskType)
|
|
18698
18720
|
};
|
|
18699
18721
|
if (outer?.aborted) throw outer.reason;
|
|
18700
|
-
const embeddingModel = model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
18701
18722
|
let newEmbeddings;
|
|
18702
18723
|
if (uncachedTexts.length <= chunkSize) {
|
|
18703
18724
|
newEmbeddings = await generateEmbeddingsBatch(
|
|
@@ -18745,6 +18766,7 @@ async function embedMany(texts, options, outer) {
|
|
|
18745
18766
|
const f32Embedding = Float32Array.from(newEmbeddings[i]);
|
|
18746
18767
|
results[uncachedIndices[i]] = Array.from(f32Embedding);
|
|
18747
18768
|
if (cache) {
|
|
18769
|
+
cachedEmbeddingModels.set(f32Embedding, embeddingModel);
|
|
18748
18770
|
cache.set(uncachedTexts[i], f32Embedding);
|
|
18749
18771
|
}
|
|
18750
18772
|
}
|
|
@@ -32532,7 +32554,7 @@ var MaskScopedEmbeddingCache = class extends Map {
|
|
|
32532
32554
|
return this;
|
|
32533
32555
|
}
|
|
32534
32556
|
};
|
|
32535
|
-
var scopedViews =
|
|
32557
|
+
var { scopedViews } = getEmbeddingCacheState();
|
|
32536
32558
|
function maskScopedEmbeddingCache(cache, masked) {
|
|
32537
32559
|
const views = scopedViews.get(cache) ?? {};
|
|
32538
32560
|
scopedViews.set(cache, views);
|
|
@@ -32954,44 +32976,48 @@ async function recall(query, ctx, options = {}) {
|
|
|
32954
32976
|
embeddingOptions,
|
|
32955
32977
|
ctx.vaultCache,
|
|
32956
32978
|
searchOptions
|
|
32957
|
-
)))(
|
|
32958
|
-
|
|
32959
|
-
|
|
32960
|
-
|
|
32961
|
-
|
|
32962
|
-
|
|
32963
|
-
|
|
32964
|
-
|
|
32965
|
-
|
|
32966
|
-
|
|
32967
|
-
|
|
32968
|
-
|
|
32969
|
-
|
|
32970
|
-
|
|
32971
|
-
|
|
32972
|
-
|
|
32973
|
-
|
|
32974
|
-
|
|
32975
|
-
|
|
32976
|
-
|
|
32977
|
-
|
|
32978
|
-
|
|
32979
|
-
|
|
32980
|
-
|
|
32979
|
+
)))(
|
|
32980
|
+
query,
|
|
32981
|
+
{
|
|
32982
|
+
limit: types.includes("chunk") ? Math.max(limit * 2, 16) : limit,
|
|
32983
|
+
minSimilarity: vaultMinScore,
|
|
32984
|
+
useFusion: true,
|
|
32985
|
+
rerank: flags.rerank,
|
|
32986
|
+
...options.rerankTopN !== void 0 && { rerankTopN: options.rerankTopN },
|
|
32987
|
+
...options.ceWeight !== void 0 && { ceWeight: options.ceWeight },
|
|
32988
|
+
...options.rerankLoadTimeoutMs !== void 0 && {
|
|
32989
|
+
rerankLoadTimeoutMs: options.rerankLoadTimeoutMs
|
|
32990
|
+
},
|
|
32991
|
+
...options.recencyAlpha !== void 0 && { recencyAlpha: options.recencyAlpha },
|
|
32992
|
+
...options.recency && { recency: options.recency },
|
|
32993
|
+
...options.mmr !== void 0 && { mmr: options.mmr },
|
|
32994
|
+
...options.supersessionBoost !== void 0 && {
|
|
32995
|
+
supersessionBoost: options.supersessionBoost
|
|
32996
|
+
},
|
|
32997
|
+
...options.supersessionWindow !== void 0 && {
|
|
32998
|
+
supersessionWindow: options.supersessionWindow
|
|
32999
|
+
},
|
|
33000
|
+
...options.proofCountAlpha !== void 0 && {
|
|
33001
|
+
proofCountAlpha: options.proofCountAlpha
|
|
33002
|
+
},
|
|
33003
|
+
...options.bm25AdmissionDivisor !== void 0 && {
|
|
33004
|
+
bm25AdmissionDivisor: options.bm25AdmissionDivisor
|
|
33005
|
+
},
|
|
33006
|
+
...options.rrfK !== void 0 && { rrfK: options.rrfK },
|
|
33007
|
+
...options.decryptLast !== void 0 && { decryptLast: options.decryptLast },
|
|
33008
|
+
...subQueries && { subQueries },
|
|
33009
|
+
...options.scopes && { scopes: options.scopes },
|
|
33010
|
+
...options.folderId !== void 0 && { folderId: options.folderId },
|
|
33011
|
+
...options.factTypes?.length && { factTypes: options.factTypes },
|
|
33012
|
+
...options.memoryIds !== void 0 && { memoryIds: options.memoryIds },
|
|
33013
|
+
...options.factTypeWeights && { factTypeWeights: options.factTypeWeights },
|
|
33014
|
+
...entityRanking.length > 0 && { entityRanking },
|
|
33015
|
+
...temporalRanking.length > 0 && { temporalRanking },
|
|
33016
|
+
...needsChunkEmbedding && { queryEmbedding: queryEmbedding ?? [] },
|
|
33017
|
+
queryEmbedTotalTimeoutMs
|
|
32981
33018
|
},
|
|
32982
|
-
|
|
32983
|
-
|
|
32984
|
-
...subQueries && { subQueries },
|
|
32985
|
-
...options.scopes && { scopes: options.scopes },
|
|
32986
|
-
...options.folderId !== void 0 && { folderId: options.folderId },
|
|
32987
|
-
...options.factTypes?.length && { factTypes: options.factTypes },
|
|
32988
|
-
...options.memoryIds !== void 0 && { memoryIds: options.memoryIds },
|
|
32989
|
-
...options.factTypeWeights && { factTypeWeights: options.factTypeWeights },
|
|
32990
|
-
...entityRanking.length > 0 && { entityRanking },
|
|
32991
|
-
...temporalRanking.length > 0 && { temporalRanking },
|
|
32992
|
-
...needsChunkEmbedding && { queryEmbedding: queryEmbedding ?? [] },
|
|
32993
|
-
queryEmbedTotalTimeoutMs
|
|
32994
|
-
});
|
|
33019
|
+
options.embeddingCache
|
|
33020
|
+
);
|
|
32995
33021
|
factResults.push(
|
|
32996
33022
|
...dedupeBy(
|
|
32997
33023
|
results,
|
|
@@ -34130,10 +34156,19 @@ function createLocalMemoryStore(options) {
|
|
|
34130
34156
|
retainOptions
|
|
34131
34157
|
),
|
|
34132
34158
|
factSource: {
|
|
34133
|
-
search: (query, searchOptions) => searchVaultMemoriesWithSize(
|
|
34159
|
+
search: (query, searchOptions, embeddingCache) => searchVaultMemoriesWithSize(
|
|
34134
34160
|
query,
|
|
34135
34161
|
vaultCtx,
|
|
34136
|
-
{
|
|
34162
|
+
{
|
|
34163
|
+
...options.embeddingOptions,
|
|
34164
|
+
taskType: "memory_recall_embed",
|
|
34165
|
+
...embeddingCache && !options.embeddingOptions.cache && {
|
|
34166
|
+
cache: maskScopedEmbeddingCache(
|
|
34167
|
+
embeddingCache,
|
|
34168
|
+
Boolean(options.embeddingOptions.maskInput)
|
|
34169
|
+
)
|
|
34170
|
+
}
|
|
34171
|
+
},
|
|
34137
34172
|
vaultCache,
|
|
34138
34173
|
searchOptions
|
|
34139
34174
|
),
|
|
@@ -930,6 +930,22 @@ function taskTypeHeader(taskType) {
|
|
|
930
930
|
// src/lib/memoryEngine/constants.ts
|
|
931
931
|
var DEFAULT_API_EMBEDDING_MODEL = "qwen/qwen3-embedding-8b";
|
|
932
932
|
|
|
933
|
+
// src/lib/memoryEngine/embeddingCacheState.ts
|
|
934
|
+
var EMBEDDING_CACHE_STATE_KEY = /* @__PURE__ */ Symbol.for("@anuma/sdk/embedding-cache/v1");
|
|
935
|
+
var cacheGlobal = globalThis;
|
|
936
|
+
var fallbackState = {
|
|
937
|
+
scopedViews: /* @__PURE__ */ new WeakMap(),
|
|
938
|
+
inFlightByCache: /* @__PURE__ */ new WeakMap(),
|
|
939
|
+
cachedEmbeddingModels: /* @__PURE__ */ new WeakMap()
|
|
940
|
+
};
|
|
941
|
+
function getEmbeddingCacheState() {
|
|
942
|
+
try {
|
|
943
|
+
return cacheGlobal[EMBEDDING_CACHE_STATE_KEY] ?? (cacheGlobal[EMBEDDING_CACHE_STATE_KEY] = fallbackState);
|
|
944
|
+
} catch {
|
|
945
|
+
return fallbackState;
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
|
|
933
949
|
// src/lib/memoryEngine/generate.ts
|
|
934
950
|
var EMBED_MAX_ATTEMPTS = 4;
|
|
935
951
|
var DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS = 15e3;
|
|
@@ -1018,15 +1034,18 @@ async function generateEmbedding(text, options) {
|
|
|
1018
1034
|
if (total === void 0) return embedOne(text, options, void 0);
|
|
1019
1035
|
return withDeadline((signal) => embedOne(text, options, signal), total, "embedding");
|
|
1020
1036
|
}
|
|
1021
|
-
var inFlightByCache
|
|
1037
|
+
var { inFlightByCache, cachedEmbeddingModels } = getEmbeddingCacheState();
|
|
1022
1038
|
async function embedOne(text, options, outer) {
|
|
1023
1039
|
const { cache } = options;
|
|
1024
1040
|
if (!cache) return Array.from(await requestEmbedding(text, options, outer));
|
|
1041
|
+
const model = options.model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
1025
1042
|
const cached = cache.get(text);
|
|
1026
|
-
|
|
1043
|
+
const cachedModel = cached && cachedEmbeddingModels.get(cached);
|
|
1044
|
+
if (cached && (cachedModel === void 0 || cachedModel === model)) return Array.from(cached);
|
|
1027
1045
|
const inFlight = inFlightByCache.get(cache) ?? /* @__PURE__ */ new Map();
|
|
1028
1046
|
inFlightByCache.set(cache, inFlight);
|
|
1029
|
-
const
|
|
1047
|
+
const requestKey = JSON.stringify([model, text]);
|
|
1048
|
+
const pending = inFlight.get(requestKey);
|
|
1030
1049
|
if (pending) {
|
|
1031
1050
|
try {
|
|
1032
1051
|
return Array.from(await pending);
|
|
@@ -1035,13 +1054,14 @@ async function embedOne(text, options, outer) {
|
|
|
1035
1054
|
}
|
|
1036
1055
|
}
|
|
1037
1056
|
const request = requestEmbedding(text, options, outer);
|
|
1038
|
-
inFlight.set(
|
|
1057
|
+
inFlight.set(requestKey, request);
|
|
1039
1058
|
try {
|
|
1040
1059
|
const embedding = await request;
|
|
1060
|
+
cachedEmbeddingModels.set(embedding, model);
|
|
1041
1061
|
cache.set(text, embedding);
|
|
1042
1062
|
return Array.from(embedding);
|
|
1043
1063
|
} finally {
|
|
1044
|
-
if (inFlight.get(
|
|
1064
|
+
if (inFlight.get(requestKey) === request) inFlight.delete(requestKey);
|
|
1045
1065
|
}
|
|
1046
1066
|
}
|
|
1047
1067
|
async function requestEmbedding(text, options, outer) {
|
|
@@ -1124,13 +1144,15 @@ async function embedMany(texts, options, outer) {
|
|
|
1124
1144
|
const { baseUrl = BASE_URL, model, batchSize, cache } = options;
|
|
1125
1145
|
const timeoutMs = options.timeoutMs ?? DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS;
|
|
1126
1146
|
const chunkSize = batchSize ?? DEFAULT_EMBEDDING_BATCH_SIZE;
|
|
1147
|
+
const embeddingModel = model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
1127
1148
|
const results = new Array(texts.length).fill(null);
|
|
1128
1149
|
const uncachedIndices = [];
|
|
1129
1150
|
const uncachedTexts = [];
|
|
1130
1151
|
for (let i = 0; i < texts.length; i++) {
|
|
1131
1152
|
if (cache) {
|
|
1132
1153
|
const cached = cache.get(texts[i]);
|
|
1133
|
-
|
|
1154
|
+
const cachedModel = cached && cachedEmbeddingModels.get(cached);
|
|
1155
|
+
if (cached && (cachedModel === void 0 || cachedModel === embeddingModel)) {
|
|
1134
1156
|
results[i] = Array.from(cached);
|
|
1135
1157
|
continue;
|
|
1136
1158
|
}
|
|
@@ -1146,7 +1168,6 @@ async function embedMany(texts, options, outer) {
|
|
|
1146
1168
|
...taskTypeHeader(options.taskType)
|
|
1147
1169
|
};
|
|
1148
1170
|
if (outer?.aborted) throw outer.reason;
|
|
1149
|
-
const embeddingModel = model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
1150
1171
|
let newEmbeddings;
|
|
1151
1172
|
if (uncachedTexts.length <= chunkSize) {
|
|
1152
1173
|
newEmbeddings = await generateEmbeddingsBatch(
|
|
@@ -1194,6 +1215,7 @@ async function embedMany(texts, options, outer) {
|
|
|
1194
1215
|
const f32Embedding = Float32Array.from(newEmbeddings[i]);
|
|
1195
1216
|
results[uncachedIndices[i]] = Array.from(f32Embedding);
|
|
1196
1217
|
if (cache) {
|
|
1218
|
+
cachedEmbeddingModels.set(f32Embedding, embeddingModel);
|
|
1197
1219
|
cache.set(uncachedTexts[i], f32Embedding);
|
|
1198
1220
|
}
|
|
1199
1221
|
}
|
|
@@ -808,6 +808,22 @@ function taskTypeHeader(taskType) {
|
|
|
808
808
|
// src/lib/memoryEngine/constants.ts
|
|
809
809
|
var DEFAULT_API_EMBEDDING_MODEL = "qwen/qwen3-embedding-8b";
|
|
810
810
|
|
|
811
|
+
// src/lib/memoryEngine/embeddingCacheState.ts
|
|
812
|
+
var EMBEDDING_CACHE_STATE_KEY = /* @__PURE__ */ Symbol.for("@anuma/sdk/embedding-cache/v1");
|
|
813
|
+
var cacheGlobal = globalThis;
|
|
814
|
+
var fallbackState = {
|
|
815
|
+
scopedViews: /* @__PURE__ */ new WeakMap(),
|
|
816
|
+
inFlightByCache: /* @__PURE__ */ new WeakMap(),
|
|
817
|
+
cachedEmbeddingModels: /* @__PURE__ */ new WeakMap()
|
|
818
|
+
};
|
|
819
|
+
function getEmbeddingCacheState() {
|
|
820
|
+
try {
|
|
821
|
+
return cacheGlobal[EMBEDDING_CACHE_STATE_KEY] ?? (cacheGlobal[EMBEDDING_CACHE_STATE_KEY] = fallbackState);
|
|
822
|
+
} catch {
|
|
823
|
+
return fallbackState;
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
|
|
811
827
|
// src/lib/memoryEngine/generate.ts
|
|
812
828
|
var EMBED_MAX_ATTEMPTS = 4;
|
|
813
829
|
var DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS = 15e3;
|
|
@@ -896,15 +912,18 @@ async function generateEmbedding(text, options) {
|
|
|
896
912
|
if (total === void 0) return embedOne(text, options, void 0);
|
|
897
913
|
return withDeadline((signal) => embedOne(text, options, signal), total, "embedding");
|
|
898
914
|
}
|
|
899
|
-
var inFlightByCache
|
|
915
|
+
var { inFlightByCache, cachedEmbeddingModels } = getEmbeddingCacheState();
|
|
900
916
|
async function embedOne(text, options, outer) {
|
|
901
917
|
const { cache } = options;
|
|
902
918
|
if (!cache) return Array.from(await requestEmbedding(text, options, outer));
|
|
919
|
+
const model = options.model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
903
920
|
const cached = cache.get(text);
|
|
904
|
-
|
|
921
|
+
const cachedModel = cached && cachedEmbeddingModels.get(cached);
|
|
922
|
+
if (cached && (cachedModel === void 0 || cachedModel === model)) return Array.from(cached);
|
|
905
923
|
const inFlight = inFlightByCache.get(cache) ?? /* @__PURE__ */ new Map();
|
|
906
924
|
inFlightByCache.set(cache, inFlight);
|
|
907
|
-
const
|
|
925
|
+
const requestKey = JSON.stringify([model, text]);
|
|
926
|
+
const pending = inFlight.get(requestKey);
|
|
908
927
|
if (pending) {
|
|
909
928
|
try {
|
|
910
929
|
return Array.from(await pending);
|
|
@@ -913,13 +932,14 @@ async function embedOne(text, options, outer) {
|
|
|
913
932
|
}
|
|
914
933
|
}
|
|
915
934
|
const request = requestEmbedding(text, options, outer);
|
|
916
|
-
inFlight.set(
|
|
935
|
+
inFlight.set(requestKey, request);
|
|
917
936
|
try {
|
|
918
937
|
const embedding = await request;
|
|
938
|
+
cachedEmbeddingModels.set(embedding, model);
|
|
919
939
|
cache.set(text, embedding);
|
|
920
940
|
return Array.from(embedding);
|
|
921
941
|
} finally {
|
|
922
|
-
if (inFlight.get(
|
|
942
|
+
if (inFlight.get(requestKey) === request) inFlight.delete(requestKey);
|
|
923
943
|
}
|
|
924
944
|
}
|
|
925
945
|
async function requestEmbedding(text, options, outer) {
|
|
@@ -1002,13 +1022,15 @@ async function embedMany(texts, options, outer) {
|
|
|
1002
1022
|
const { baseUrl = BASE_URL, model, batchSize, cache } = options;
|
|
1003
1023
|
const timeoutMs = options.timeoutMs ?? DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS;
|
|
1004
1024
|
const chunkSize = batchSize ?? DEFAULT_EMBEDDING_BATCH_SIZE;
|
|
1025
|
+
const embeddingModel = model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
1005
1026
|
const results = new Array(texts.length).fill(null);
|
|
1006
1027
|
const uncachedIndices = [];
|
|
1007
1028
|
const uncachedTexts = [];
|
|
1008
1029
|
for (let i = 0; i < texts.length; i++) {
|
|
1009
1030
|
if (cache) {
|
|
1010
1031
|
const cached = cache.get(texts[i]);
|
|
1011
|
-
|
|
1032
|
+
const cachedModel = cached && cachedEmbeddingModels.get(cached);
|
|
1033
|
+
if (cached && (cachedModel === void 0 || cachedModel === embeddingModel)) {
|
|
1012
1034
|
results[i] = Array.from(cached);
|
|
1013
1035
|
continue;
|
|
1014
1036
|
}
|
|
@@ -1024,7 +1046,6 @@ async function embedMany(texts, options, outer) {
|
|
|
1024
1046
|
...taskTypeHeader(options.taskType)
|
|
1025
1047
|
};
|
|
1026
1048
|
if (outer?.aborted) throw outer.reason;
|
|
1027
|
-
const embeddingModel = model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
1028
1049
|
let newEmbeddings;
|
|
1029
1050
|
if (uncachedTexts.length <= chunkSize) {
|
|
1030
1051
|
newEmbeddings = await generateEmbeddingsBatch(
|
|
@@ -1072,6 +1093,7 @@ async function embedMany(texts, options, outer) {
|
|
|
1072
1093
|
const f32Embedding = Float32Array.from(newEmbeddings[i]);
|
|
1073
1094
|
results[uncachedIndices[i]] = Array.from(f32Embedding);
|
|
1074
1095
|
if (cache) {
|
|
1096
|
+
cachedEmbeddingModels.set(f32Embedding, embeddingModel);
|
|
1075
1097
|
cache.set(uncachedTexts[i], f32Embedding);
|
|
1076
1098
|
}
|
|
1077
1099
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anuma/sdk",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.5",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
"check:excluded-suites": "node scripts/assert-excluded-suites-still-fail.mjs",
|
|
155
155
|
"knip": "knip",
|
|
156
156
|
"check:export-consumers": "node scripts/assert-export-consumers.mjs",
|
|
157
|
-
"check-exports": "publint && attw --pack --ignore-rules no-resolution false-cjs && node scripts/assert-no-client-self-import.mjs && node scripts/assert-shared-logger.mjs",
|
|
157
|
+
"check-exports": "publint && attw --pack --ignore-rules no-resolution false-cjs && node scripts/assert-no-client-self-import.mjs && node scripts/assert-shared-logger.mjs && node scripts/assert-embedding-cross-entrypoints.mjs",
|
|
158
158
|
"check": "pnpm run lint && pnpm run knip && pnpm run check:export-consumers && pnpm run format && pnpm run generate",
|
|
159
159
|
"eval:extraction": "tsx test/memory/src/extraction/benchmark.test.ts",
|
|
160
160
|
"eval:topic": "tsx test/memory/src/topic/benchmark.ts",
|