@theokit/sdk-memory 0.2.2 → 0.3.1
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/CHANGELOG.md +71 -0
- package/dist/index.cjs +248 -308
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +232 -301
- package/dist/index.js.map +1 -1
- package/dist/internal/active-memory/active-memory-cache.d.ts +1 -1
- package/dist/internal/active-memory/active-memory.d.ts +2 -2
- package/dist/internal/active-memory/composite-scorer.d.ts +1 -1
- package/dist/internal/active-memory/query-analyzer.d.ts +1 -1
- package/dist/internal/adapter-catalog.d.ts +21 -52
- package/dist/internal/adapter-catalog.d.ts.map +1 -1
- package/dist/internal/circuit-breaker.d.ts +1 -1
- package/dist/internal/dreaming/dreaming-run.d.ts +1 -1
- package/dist/internal/embedding/azure-openai-embedding.d.ts +21 -0
- package/dist/internal/embedding/azure-openai-embedding.d.ts.map +1 -0
- package/dist/internal/embedding/batch-encoder.d.ts +1 -1
- package/dist/internal/embedding/cohere-embedding.d.ts +14 -0
- package/dist/internal/embedding/cohere-embedding.d.ts.map +1 -0
- package/dist/internal/embedding/deepinfra-embedding.d.ts +2 -9
- package/dist/internal/embedding/deepinfra-embedding.d.ts.map +1 -1
- package/dist/internal/embedding/embedding-adapter.d.ts +5 -5
- package/dist/internal/embedding/embedding-adapter.d.ts.map +1 -1
- package/dist/internal/embedding/gemini-embedding.d.ts +18 -0
- package/dist/internal/embedding/gemini-embedding.d.ts.map +1 -0
- package/dist/internal/embedding/jina-embedding.d.ts +13 -0
- package/dist/internal/embedding/jina-embedding.d.ts.map +1 -0
- package/dist/internal/embedding/mistral-embedding.d.ts +3 -10
- package/dist/internal/embedding/mistral-embedding.d.ts.map +1 -1
- package/dist/internal/embedding/ollama-embedding.d.ts +3 -10
- package/dist/internal/embedding/ollama-embedding.d.ts.map +1 -1
- package/dist/internal/embedding/openai-compatible.d.ts +24 -23
- package/dist/internal/embedding/openai-compatible.d.ts.map +1 -1
- package/dist/internal/embedding/openai-embedding.d.ts +2 -9
- package/dist/internal/embedding/openai-embedding.d.ts.map +1 -1
- package/dist/internal/embedding/openrouter-embedding.d.ts +2 -9
- package/dist/internal/embedding/openrouter-embedding.d.ts.map +1 -1
- package/dist/internal/embedding/voyage-embedding.d.ts +2 -9
- package/dist/internal/embedding/voyage-embedding.d.ts.map +1 -1
- package/dist/internal/index/index-schema.d.ts +0 -5
- package/dist/internal/index/index-schema.d.ts.map +1 -1
- package/dist/internal/index/memory-index.d.ts +1 -1
- package/dist/internal/index/vec-index.d.ts +1 -1
- package/dist/internal/memory-scope.d.ts +1 -1
- package/dist/internal/memory-types.d.ts +4 -4
- package/dist/internal/store/chunk-markdown.d.ts +2 -2
- package/dist/internal/store/reader.d.ts +1 -1
- package/dist/internal/store/wiki-loader.d.ts +1 -1
- package/dist/internal/tools.d.ts +2 -2
- package/package.json +5 -5
- package/dist/internal/embedding/embedding-cache.d.ts +0 -16
- package/dist/internal/embedding/embedding-cache.d.ts.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -6,6 +6,7 @@ var sdk = require('@theokit/sdk');
|
|
|
6
6
|
var persistence = require('@theokit/sdk/persistence');
|
|
7
7
|
var pathSafety = require('@theokit/sdk/path-safety');
|
|
8
8
|
var crypto = require('crypto');
|
|
9
|
+
var memoryAdapters = require('@theokit/sdk/internal/memory-adapters');
|
|
9
10
|
var errors = require('@theokit/sdk/errors');
|
|
10
11
|
var fs = require('fs');
|
|
11
12
|
var module$1 = require('module');
|
|
@@ -626,296 +627,85 @@ function cacheKey(userText, queryMode, ctx) {
|
|
|
626
627
|
const parts = [queryMode, ctx?.namespace ?? "", ctx?.userId ?? "", ctx?.scope ?? "", userText];
|
|
627
628
|
return crypto.createHash("sha256").update(parts.join("\0")).digest("hex");
|
|
628
629
|
}
|
|
629
|
-
var RAW_MAX_BYTES = 2048;
|
|
630
|
-
function parseRetryAfter(headers) {
|
|
631
|
-
if (headers === void 0) return void 0;
|
|
632
|
-
const raw = headers.get("retry-after");
|
|
633
|
-
if (raw === null) return void 0;
|
|
634
|
-
const n = Number(raw);
|
|
635
|
-
if (Number.isFinite(n) && n >= 0) return Math.ceil(n);
|
|
636
|
-
return void 0;
|
|
637
|
-
}
|
|
638
|
-
function truncateRaw(body) {
|
|
639
|
-
if (body === null || body === void 0) return void 0;
|
|
640
|
-
const s = typeof body === "string" ? body : JSON.stringify(body);
|
|
641
|
-
const truncated = s.length <= RAW_MAX_BYTES ? s : `${s.slice(0, RAW_MAX_BYTES)}\u2026`;
|
|
642
|
-
return redactSecrets(truncated);
|
|
643
|
-
}
|
|
644
|
-
function buildErrorMetadata(args) {
|
|
645
|
-
const retryAfter = parseRetryAfter(args.headers);
|
|
646
|
-
const raw = truncateRaw(args.body);
|
|
647
|
-
return {
|
|
648
|
-
provider: args.provider,
|
|
649
|
-
endpoint: args.endpoint,
|
|
650
|
-
code: args.code,
|
|
651
|
-
statusCode: args.status,
|
|
652
|
-
...retryAfter !== void 0 ? { retryAfter } : {},
|
|
653
|
-
...raw !== void 0 ? { raw } : {}
|
|
654
|
-
};
|
|
655
|
-
}
|
|
656
|
-
function mapOpenAICompatibleError(args) {
|
|
657
|
-
const { providerId, status, body, headers, endpoint } = args;
|
|
658
|
-
const code = mapOpenAiStatusToCode(status, body);
|
|
659
|
-
const message = formatMessage(providerId, status, code);
|
|
660
|
-
const metadata = buildErrorMetadata({
|
|
661
|
-
provider: providerId,
|
|
662
|
-
endpoint,
|
|
663
|
-
code,
|
|
664
|
-
status,
|
|
665
|
-
headers,
|
|
666
|
-
body
|
|
667
|
-
});
|
|
668
|
-
if (status === 401 || status === 403) {
|
|
669
|
-
return new errors.AuthenticationError(message, { code: `${providerId}_auth_failed`, metadata });
|
|
670
|
-
}
|
|
671
|
-
if (status === 429) {
|
|
672
|
-
return new errors.RateLimitError(message, { code: `${providerId}_rate_limit`, metadata });
|
|
673
|
-
}
|
|
674
|
-
if (status === 400) {
|
|
675
|
-
return new errors.ConfigurationError(message, { code: `${providerId}_${code}`, metadata });
|
|
676
|
-
}
|
|
677
|
-
if (status === 408) {
|
|
678
|
-
return new errors.NetworkError(message, { code: `${providerId}_timeout`, metadata });
|
|
679
|
-
}
|
|
680
|
-
if (status >= 500 && status < 600) {
|
|
681
|
-
return new errors.NetworkError(message, { code: `${providerId}_server_error`, metadata });
|
|
682
|
-
}
|
|
683
|
-
return new errors.UnknownAgentError(message, { code: `${providerId}_unknown`, metadata });
|
|
684
|
-
}
|
|
685
|
-
function extractOpenAiErrorCode(body) {
|
|
686
|
-
if (body === null || typeof body !== "object") return void 0;
|
|
687
|
-
const err = body.error;
|
|
688
|
-
if (err === void 0 || err === null) return void 0;
|
|
689
|
-
if (typeof err.code === "string") return err.code;
|
|
690
|
-
if (typeof err.type === "string") return err.type;
|
|
691
|
-
return void 0;
|
|
692
|
-
}
|
|
693
|
-
function mapOpenAiStatusToCode(status, body) {
|
|
694
|
-
const rawCode = extractOpenAiErrorCode(body)?.toLowerCase() ?? "";
|
|
695
|
-
if (rawCode.includes("context_length") || rawCode.includes("context_window") || rawCode.includes("too_many_tokens") || rawCode.includes("max_tokens")) {
|
|
696
|
-
return "context_too_long";
|
|
697
|
-
}
|
|
698
|
-
if (rawCode.includes("content_filter") || rawCode.includes("content_policy") || rawCode.includes("safety")) {
|
|
699
|
-
return "content_filtered";
|
|
700
|
-
}
|
|
701
|
-
if (rawCode.includes("model_not_found") || rawCode.includes("model_unavailable") || rawCode.includes("invalid_model")) {
|
|
702
|
-
return "model_unavailable";
|
|
703
|
-
}
|
|
704
|
-
if (status === 402 || rawCode.includes("insufficient_quota") || rawCode.includes("quota_exceeded")) {
|
|
705
|
-
return "quota_exceeded";
|
|
706
|
-
}
|
|
707
|
-
if (status === 401 || status === 403) return "auth_failed";
|
|
708
|
-
if (status === 429) return "rate_limit";
|
|
709
|
-
if (status === 408) return "timeout";
|
|
710
|
-
if (status === 400) return "invalid_request";
|
|
711
|
-
if (status >= 500 && status < 600) return "server_error";
|
|
712
|
-
return "unknown";
|
|
713
|
-
}
|
|
714
|
-
function formatMessage(providerId, status, code) {
|
|
715
|
-
return `${providerId} API error: ${code} (HTTP ${status})`;
|
|
716
|
-
}
|
|
717
630
|
|
|
718
|
-
// src/internal/embedding/embedding
|
|
719
|
-
var
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
map = /* @__PURE__ */ new Map();
|
|
725
|
-
get(key) {
|
|
726
|
-
const value = this.map.get(key);
|
|
727
|
-
if (value === void 0) return void 0;
|
|
728
|
-
this.map.delete(key);
|
|
729
|
-
this.map.set(key, value);
|
|
730
|
-
return value;
|
|
731
|
-
}
|
|
732
|
-
set(key, value) {
|
|
733
|
-
if (this.map.has(key)) this.map.delete(key);
|
|
734
|
-
else if (this.map.size >= this.capacity) {
|
|
735
|
-
const oldest = this.map.keys().next().value;
|
|
736
|
-
if (oldest !== void 0) this.map.delete(oldest);
|
|
737
|
-
}
|
|
738
|
-
this.map.set(key, value);
|
|
739
|
-
}
|
|
740
|
-
size() {
|
|
741
|
-
return this.map.size;
|
|
742
|
-
}
|
|
631
|
+
// src/internal/embedding/azure-openai-embedding.ts
|
|
632
|
+
var DEFAULT_AZURE_OPENAI_EMBEDDING_MODEL = "text-embedding-3-small";
|
|
633
|
+
var DIMENSION_BY_MODEL = {
|
|
634
|
+
"text-embedding-3-small": 1536,
|
|
635
|
+
"text-embedding-3-large": 3072,
|
|
636
|
+
"text-embedding-ada-002": 1536
|
|
743
637
|
};
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
const embeddingsPath = cfg.embeddingsPath ?? "/v1/embeddings";
|
|
768
|
-
const stats = {
|
|
769
|
-
cacheHits: 0,
|
|
770
|
-
cacheMisses: 0,
|
|
771
|
-
httpCalls: 0,
|
|
772
|
-
retries: 0
|
|
773
|
-
};
|
|
774
|
-
return {
|
|
775
|
-
id: cfg.id,
|
|
776
|
-
model,
|
|
777
|
-
dimension,
|
|
778
|
-
stats: () => ({ ...stats }),
|
|
779
|
-
embed: (texts) => embedTexts({
|
|
780
|
-
texts,
|
|
781
|
-
cache,
|
|
782
|
-
stats,
|
|
783
|
-
model,
|
|
784
|
-
dimension,
|
|
785
|
-
apiKey,
|
|
786
|
-
baseUrl,
|
|
787
|
-
embeddingsPath,
|
|
788
|
-
fetchImpl,
|
|
789
|
-
providerId: cfg.id
|
|
790
|
-
})
|
|
791
|
-
};
|
|
792
|
-
}
|
|
793
|
-
async function embedTexts(input) {
|
|
794
|
-
const { texts, cache, stats, model, dimension } = input;
|
|
795
|
-
const results = new Array(texts.length);
|
|
796
|
-
const pending = [];
|
|
797
|
-
for (let i = 0; i < texts.length; i++) {
|
|
798
|
-
classifyEntry({
|
|
799
|
-
index: i,
|
|
800
|
-
text: texts[i] ?? "",
|
|
801
|
-
model,
|
|
802
|
-
dimension,
|
|
803
|
-
cache,
|
|
804
|
-
stats,
|
|
805
|
-
results,
|
|
806
|
-
pending
|
|
807
|
-
});
|
|
808
|
-
}
|
|
809
|
-
await runBatches(input, pending, results);
|
|
810
|
-
return results.map((v) => v ?? new Array(dimension).fill(0));
|
|
811
|
-
}
|
|
812
|
-
function classifyEntry(args) {
|
|
813
|
-
if (args.text.trim().length === 0) {
|
|
814
|
-
args.results[args.index] = new Array(args.dimension).fill(0);
|
|
815
|
-
return;
|
|
816
|
-
}
|
|
817
|
-
const key = hashKey(args.model, args.text);
|
|
818
|
-
const cached = args.cache.get(key);
|
|
819
|
-
if (cached !== void 0) {
|
|
820
|
-
args.stats.cacheHits += 1;
|
|
821
|
-
args.results[args.index] = cached;
|
|
822
|
-
return;
|
|
823
|
-
}
|
|
824
|
-
args.stats.cacheMisses += 1;
|
|
825
|
-
args.pending.push({ index: args.index, text: args.text, key });
|
|
826
|
-
}
|
|
827
|
-
async function runBatches(input, pending, results) {
|
|
828
|
-
for (let offset = 0; offset < pending.length; offset += MAX_BATCH) {
|
|
829
|
-
const batch = pending.slice(offset, offset + MAX_BATCH);
|
|
830
|
-
const vectors = await embedBatch({
|
|
831
|
-
apiKey: input.apiKey,
|
|
832
|
-
baseUrl: input.baseUrl,
|
|
833
|
-
embeddingsPath: input.embeddingsPath,
|
|
834
|
-
model: input.model,
|
|
835
|
-
inputs: batch.map((b) => b.text),
|
|
836
|
-
fetchImpl: input.fetchImpl,
|
|
837
|
-
stats: input.stats,
|
|
838
|
-
providerId: input.providerId
|
|
839
|
-
});
|
|
840
|
-
for (let j = 0; j < batch.length; j++) {
|
|
841
|
-
const slot = batch[j];
|
|
842
|
-
const vector = vectors[j];
|
|
843
|
-
if (slot === void 0 || vector === void 0) continue;
|
|
844
|
-
results[slot.index] = vector;
|
|
845
|
-
input.cache.set(slot.key, vector);
|
|
846
|
-
}
|
|
847
|
-
}
|
|
848
|
-
}
|
|
849
|
-
async function embedBatch(opts) {
|
|
850
|
-
const url = `${opts.baseUrl.replace(/\/$/, "")}${opts.embeddingsPath}`;
|
|
851
|
-
let attempt = 0;
|
|
852
|
-
while (true) {
|
|
853
|
-
opts.stats.httpCalls += 1;
|
|
854
|
-
const response = await postEmbedRequest(opts, url);
|
|
855
|
-
if (response.ok)
|
|
856
|
-
return await parseEmbedResponse(response, opts.providerId, opts.embeddingsPath);
|
|
857
|
-
if (isRetryable(response.status) && attempt < MAX_RETRIES) {
|
|
858
|
-
attempt += 1;
|
|
859
|
-
opts.stats.retries += 1;
|
|
860
|
-
await sleep(linearBackoffMs(attempt));
|
|
861
|
-
continue;
|
|
862
|
-
}
|
|
863
|
-
const text = await response.text().catch(() => "");
|
|
864
|
-
let body = text;
|
|
865
|
-
try {
|
|
866
|
-
body = JSON.parse(text);
|
|
867
|
-
} catch {
|
|
868
|
-
}
|
|
869
|
-
throw mapOpenAICompatibleError({
|
|
870
|
-
providerId: opts.providerId,
|
|
871
|
-
status: response.status,
|
|
872
|
-
body,
|
|
873
|
-
headers: response.headers,
|
|
874
|
-
endpoint: opts.embeddingsPath
|
|
875
|
-
});
|
|
876
|
-
}
|
|
877
|
-
}
|
|
878
|
-
async function postEmbedRequest(opts, url) {
|
|
879
|
-
return opts.fetchImpl(url, {
|
|
880
|
-
method: "POST",
|
|
881
|
-
headers: {
|
|
882
|
-
"content-type": "application/json",
|
|
883
|
-
authorization: `Bearer ${opts.apiKey}`
|
|
638
|
+
var azureOpenAiMemoryEmbeddingProviderAdapter = {
|
|
639
|
+
id: "azure-openai",
|
|
640
|
+
defaultModel: DEFAULT_AZURE_OPENAI_EMBEDDING_MODEL,
|
|
641
|
+
transport: "remote",
|
|
642
|
+
authProviderId: "azure-openai",
|
|
643
|
+
autoSelectPriority: 25,
|
|
644
|
+
create: (options) => memoryAdapters.createOpenAiCompatibleRuntime(
|
|
645
|
+
{
|
|
646
|
+
id: "azure-openai",
|
|
647
|
+
defaultBaseUrl: "https://your-resource.openai.azure.com",
|
|
648
|
+
apiKeyEnv: "AZURE_OPENAI_API_KEY",
|
|
649
|
+
baseUrlEnv: "AZURE_OPENAI_ENDPOINT",
|
|
650
|
+
defaultModel: DEFAULT_AZURE_OPENAI_EMBEDDING_MODEL,
|
|
651
|
+
embeddingsPath: "/openai/deployments/{model}/embeddings?api-version=2024-02-01",
|
|
652
|
+
dimensionByModel: DIMENSION_BY_MODEL,
|
|
653
|
+
// theokit#159 — Azure is NOT OpenAI on the wire, despite the name. It authenticates an API
|
|
654
|
+
// key with the `api-key` header (`Authorization: Bearer` is for Entra ID tokens, not for
|
|
655
|
+
// AZURE_OPENAI_API_KEY), and the deployment already rides in the path, so `model` has no
|
|
656
|
+
// place in the body. Sending the OpenAI shape meant every request was rejected.
|
|
657
|
+
dialect: {
|
|
658
|
+
authHeaders: (apiKey) => ({ "api-key": apiKey }),
|
|
659
|
+
body: (_model, inputs) => ({ input: inputs })
|
|
660
|
+
}
|
|
884
661
|
},
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
}
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
662
|
+
options
|
|
663
|
+
)
|
|
664
|
+
};
|
|
665
|
+
|
|
666
|
+
// src/internal/embedding/cohere-embedding.ts
|
|
667
|
+
var DEFAULT_COHERE_EMBEDDING_MODEL = "embed-english-v3.0";
|
|
668
|
+
var DIMENSION_BY_MODEL2 = {
|
|
669
|
+
"embed-english-v3.0": 1024,
|
|
670
|
+
"embed-multilingual-v3.0": 1024,
|
|
671
|
+
"embed-english-light-v3.0": 384,
|
|
672
|
+
"embed-multilingual-light-v3.0": 384
|
|
673
|
+
};
|
|
674
|
+
var cohereMemoryEmbeddingProviderAdapter = {
|
|
675
|
+
id: "cohere",
|
|
676
|
+
defaultModel: DEFAULT_COHERE_EMBEDDING_MODEL,
|
|
677
|
+
transport: "remote",
|
|
678
|
+
authProviderId: "cohere",
|
|
679
|
+
autoSelectPriority: 30,
|
|
680
|
+
create: (options) => memoryAdapters.createOpenAiCompatibleRuntime(
|
|
681
|
+
{
|
|
682
|
+
id: "cohere",
|
|
683
|
+
defaultBaseUrl: "https://api.cohere.com",
|
|
684
|
+
apiKeyEnv: "COHERE_API_KEY",
|
|
685
|
+
defaultModel: DEFAULT_COHERE_EMBEDDING_MODEL,
|
|
686
|
+
embeddingsPath: "/v2/embed",
|
|
687
|
+
dimensionByModel: DIMENSION_BY_MODEL2,
|
|
688
|
+
// theokit#159 — `/v2/embed` diverges in BOTH directions: it names the payload `texts`, requires
|
|
689
|
+
// `input_type`, and answers `{embeddings:{float:[[...]]}}` rather than `{data:[{embedding}]}`.
|
|
690
|
+
// `search_document` is the right default here because this runtime embeds material for
|
|
691
|
+
// storage; a query-side embedder would use `search_query`.
|
|
692
|
+
dialect: {
|
|
693
|
+
body: (model, inputs) => ({
|
|
694
|
+
model,
|
|
695
|
+
texts: [...inputs],
|
|
696
|
+
input_type: "search_document",
|
|
697
|
+
embedding_types: ["float"]
|
|
698
|
+
}),
|
|
699
|
+
vectors: (json) => json.embeddings?.float
|
|
898
700
|
}
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
}
|
|
903
|
-
function isRetryable(status) {
|
|
904
|
-
return status === 429 || status >= 500 && status < 600;
|
|
905
|
-
}
|
|
906
|
-
function hashKey(model, text) {
|
|
907
|
-
return crypto.createHash("sha256").update(`${model} ${text}`).digest("hex");
|
|
908
|
-
}
|
|
909
|
-
function linearBackoffMs(attempt) {
|
|
910
|
-
return 50 * attempt;
|
|
911
|
-
}
|
|
912
|
-
function sleep(ms) {
|
|
913
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
914
|
-
}
|
|
701
|
+
},
|
|
702
|
+
options
|
|
703
|
+
)
|
|
704
|
+
};
|
|
915
705
|
|
|
916
706
|
// src/internal/embedding/deepinfra-embedding.ts
|
|
917
707
|
var DEFAULT_DEEPINFRA_EMBEDDING_MODEL = "BAAI/bge-large-en-v1.5";
|
|
918
|
-
var
|
|
708
|
+
var DIMENSION_BY_MODEL3 = {
|
|
919
709
|
"BAAI/bge-large-en-v1.5": 1024,
|
|
920
710
|
"BAAI/bge-base-en-v1.5": 768,
|
|
921
711
|
"BAAI/bge-small-en-v1.5": 384,
|
|
@@ -933,23 +723,75 @@ var deepinfraMemoryEmbeddingProviderAdapter = {
|
|
|
933
723
|
transport: "remote",
|
|
934
724
|
authProviderId: "deepinfra",
|
|
935
725
|
autoSelectPriority: 13,
|
|
936
|
-
create: (options) => createOpenAiCompatibleRuntime(
|
|
726
|
+
create: (options) => memoryAdapters.createOpenAiCompatibleRuntime(
|
|
937
727
|
{
|
|
938
728
|
id: "deepinfra",
|
|
939
729
|
defaultBaseUrl: "https://api.deepinfra.com",
|
|
940
730
|
apiKeyEnv: "DEEPINFRA_API_KEY",
|
|
941
731
|
baseUrlEnv: "DEEPINFRA_API_BASE_URL",
|
|
942
732
|
defaultModel: DEFAULT_DEEPINFRA_EMBEDDING_MODEL,
|
|
943
|
-
dimensionByModel:
|
|
733
|
+
dimensionByModel: DIMENSION_BY_MODEL3,
|
|
944
734
|
embeddingsPath: "/v1/openai/embeddings"
|
|
945
735
|
},
|
|
946
736
|
options
|
|
947
737
|
)
|
|
948
738
|
};
|
|
949
739
|
|
|
740
|
+
// src/internal/embedding/gemini-embedding.ts
|
|
741
|
+
var DEFAULT_GEMINI_EMBEDDING_MODEL = "text-embedding-004";
|
|
742
|
+
var DIMENSION_BY_MODEL4 = {
|
|
743
|
+
"text-embedding-004": 768,
|
|
744
|
+
"embedding-001": 768
|
|
745
|
+
};
|
|
746
|
+
var geminiMemoryEmbeddingProviderAdapter = {
|
|
747
|
+
id: "gemini",
|
|
748
|
+
defaultModel: DEFAULT_GEMINI_EMBEDDING_MODEL,
|
|
749
|
+
transport: "remote",
|
|
750
|
+
authProviderId: "gemini",
|
|
751
|
+
autoSelectPriority: 30,
|
|
752
|
+
create: (options) => memoryAdapters.createOpenAiCompatibleRuntime(
|
|
753
|
+
{
|
|
754
|
+
id: "gemini",
|
|
755
|
+
defaultBaseUrl: "https://generativelanguage.googleapis.com",
|
|
756
|
+
apiKeyEnv: "GEMINI_API_KEY",
|
|
757
|
+
defaultModel: DEFAULT_GEMINI_EMBEDDING_MODEL,
|
|
758
|
+
// theokit#159 — the compat surface is under `/v1beta/openai/`, not the default
|
|
759
|
+
// `/v1/embeddings`; the previous path 404'd on every call.
|
|
760
|
+
embeddingsPath: "/v1beta/openai/embeddings",
|
|
761
|
+
dimensionByModel: DIMENSION_BY_MODEL4
|
|
762
|
+
},
|
|
763
|
+
options
|
|
764
|
+
)
|
|
765
|
+
};
|
|
766
|
+
|
|
767
|
+
// src/internal/embedding/jina-embedding.ts
|
|
768
|
+
var DEFAULT_JINA_EMBEDDING_MODEL = "jina-embeddings-v3";
|
|
769
|
+
var DIMENSION_BY_MODEL5 = {
|
|
770
|
+
"jina-embeddings-v3": 1024,
|
|
771
|
+
"jina-embeddings-v2-base-en": 768,
|
|
772
|
+
"jina-embeddings-v2-small-en": 512
|
|
773
|
+
};
|
|
774
|
+
var jinaMemoryEmbeddingProviderAdapter = {
|
|
775
|
+
id: "jina",
|
|
776
|
+
defaultModel: DEFAULT_JINA_EMBEDDING_MODEL,
|
|
777
|
+
transport: "remote",
|
|
778
|
+
authProviderId: "jina",
|
|
779
|
+
autoSelectPriority: 35,
|
|
780
|
+
create: (options) => memoryAdapters.createOpenAiCompatibleRuntime(
|
|
781
|
+
{
|
|
782
|
+
id: "jina",
|
|
783
|
+
defaultBaseUrl: "https://api.jina.ai",
|
|
784
|
+
apiKeyEnv: "JINA_API_KEY",
|
|
785
|
+
defaultModel: DEFAULT_JINA_EMBEDDING_MODEL,
|
|
786
|
+
dimensionByModel: DIMENSION_BY_MODEL5
|
|
787
|
+
},
|
|
788
|
+
options
|
|
789
|
+
)
|
|
790
|
+
};
|
|
791
|
+
|
|
950
792
|
// src/internal/embedding/mistral-embedding.ts
|
|
951
793
|
var DEFAULT_MISTRAL_EMBEDDING_MODEL = "mistral-embed";
|
|
952
|
-
var
|
|
794
|
+
var DIMENSION_BY_MODEL6 = {
|
|
953
795
|
"mistral-embed": 1024
|
|
954
796
|
};
|
|
955
797
|
var mistralMemoryEmbeddingProviderAdapter = {
|
|
@@ -958,14 +800,14 @@ var mistralMemoryEmbeddingProviderAdapter = {
|
|
|
958
800
|
transport: "remote",
|
|
959
801
|
authProviderId: "mistral",
|
|
960
802
|
autoSelectPriority: 18,
|
|
961
|
-
create: (options) => createOpenAiCompatibleRuntime(
|
|
803
|
+
create: (options) => memoryAdapters.createOpenAiCompatibleRuntime(
|
|
962
804
|
{
|
|
963
805
|
id: "mistral",
|
|
964
806
|
defaultBaseUrl: "https://api.mistral.ai",
|
|
965
807
|
apiKeyEnv: "MISTRAL_API_KEY",
|
|
966
808
|
baseUrlEnv: "MISTRAL_API_BASE_URL",
|
|
967
809
|
defaultModel: DEFAULT_MISTRAL_EMBEDDING_MODEL,
|
|
968
|
-
dimensionByModel:
|
|
810
|
+
dimensionByModel: DIMENSION_BY_MODEL6
|
|
969
811
|
},
|
|
970
812
|
options
|
|
971
813
|
)
|
|
@@ -974,7 +816,7 @@ var mistralMemoryEmbeddingProviderAdapter = {
|
|
|
974
816
|
// src/internal/embedding/ollama-embedding.ts
|
|
975
817
|
var DEFAULT_OLLAMA_EMBEDDING_MODEL = "nomic-embed-text";
|
|
976
818
|
var OLLAMA_LOCAL_SENTINEL_KEY = "ollama-local";
|
|
977
|
-
var
|
|
819
|
+
var DIMENSION_BY_MODEL7 = {
|
|
978
820
|
// Nomic — local default, recommended quality/size balance.
|
|
979
821
|
"nomic-embed-text": 768,
|
|
980
822
|
"nomic-embed-text:latest": 768,
|
|
@@ -1000,14 +842,14 @@ var ollamaMemoryEmbeddingProviderAdapter = {
|
|
|
1000
842
|
autoSelectPriority: 10,
|
|
1001
843
|
create: (options) => {
|
|
1002
844
|
const apiKey = options.apiKey ?? process.env.OLLAMA_API_KEY ?? OLLAMA_LOCAL_SENTINEL_KEY;
|
|
1003
|
-
return createOpenAiCompatibleRuntime(
|
|
845
|
+
return memoryAdapters.createOpenAiCompatibleRuntime(
|
|
1004
846
|
{
|
|
1005
847
|
id: "ollama",
|
|
1006
848
|
defaultBaseUrl: "http://localhost:11434",
|
|
1007
849
|
apiKeyEnv: "OLLAMA_API_KEY",
|
|
1008
850
|
baseUrlEnv: "OLLAMA_HOST",
|
|
1009
851
|
defaultModel: DEFAULT_OLLAMA_EMBEDDING_MODEL,
|
|
1010
|
-
dimensionByModel:
|
|
852
|
+
dimensionByModel: DIMENSION_BY_MODEL7
|
|
1011
853
|
},
|
|
1012
854
|
{ ...options, apiKey }
|
|
1013
855
|
);
|
|
@@ -1016,7 +858,7 @@ var ollamaMemoryEmbeddingProviderAdapter = {
|
|
|
1016
858
|
|
|
1017
859
|
// src/internal/embedding/openai-embedding.ts
|
|
1018
860
|
var DEFAULT_OPENAI_EMBEDDING_MODEL = "text-embedding-3-small";
|
|
1019
|
-
var
|
|
861
|
+
var DIMENSION_BY_MODEL8 = {
|
|
1020
862
|
"text-embedding-3-small": 1536,
|
|
1021
863
|
"text-embedding-3-large": 3072,
|
|
1022
864
|
"text-embedding-ada-002": 1536
|
|
@@ -1027,14 +869,14 @@ var openAiMemoryEmbeddingProviderAdapter = {
|
|
|
1027
869
|
transport: "remote",
|
|
1028
870
|
authProviderId: "openai",
|
|
1029
871
|
autoSelectPriority: 20,
|
|
1030
|
-
create: (options) => createOpenAiCompatibleRuntime(
|
|
872
|
+
create: (options) => memoryAdapters.createOpenAiCompatibleRuntime(
|
|
1031
873
|
{
|
|
1032
874
|
id: "openai",
|
|
1033
875
|
defaultBaseUrl: "https://api.openai.com",
|
|
1034
876
|
apiKeyEnv: "OPENAI_API_KEY",
|
|
1035
877
|
baseUrlEnv: "OPENAI_API_BASE_URL",
|
|
1036
878
|
defaultModel: DEFAULT_OPENAI_EMBEDDING_MODEL,
|
|
1037
|
-
dimensionByModel:
|
|
879
|
+
dimensionByModel: DIMENSION_BY_MODEL8
|
|
1038
880
|
},
|
|
1039
881
|
options
|
|
1040
882
|
)
|
|
@@ -1042,7 +884,7 @@ var openAiMemoryEmbeddingProviderAdapter = {
|
|
|
1042
884
|
|
|
1043
885
|
// src/internal/embedding/openrouter-embedding.ts
|
|
1044
886
|
var DEFAULT_OPENROUTER_EMBEDDING_MODEL = "openai/text-embedding-3-small";
|
|
1045
|
-
var
|
|
887
|
+
var DIMENSION_BY_MODEL9 = {
|
|
1046
888
|
"openai/text-embedding-3-small": 1536,
|
|
1047
889
|
"openai/text-embedding-3-large": 3072,
|
|
1048
890
|
"openai/text-embedding-ada-002": 1536,
|
|
@@ -1054,14 +896,14 @@ var openRouterMemoryEmbeddingProviderAdapter = {
|
|
|
1054
896
|
transport: "remote",
|
|
1055
897
|
authProviderId: "openrouter",
|
|
1056
898
|
autoSelectPriority: 15,
|
|
1057
|
-
create: (options) => createOpenAiCompatibleRuntime(
|
|
899
|
+
create: (options) => memoryAdapters.createOpenAiCompatibleRuntime(
|
|
1058
900
|
{
|
|
1059
901
|
id: "openrouter",
|
|
1060
902
|
defaultBaseUrl: "https://openrouter.ai/api",
|
|
1061
903
|
apiKeyEnv: "OPENROUTER_API_KEY",
|
|
1062
904
|
baseUrlEnv: "OPENROUTER_API_BASE_URL",
|
|
1063
905
|
defaultModel: DEFAULT_OPENROUTER_EMBEDDING_MODEL,
|
|
1064
|
-
dimensionByModel:
|
|
906
|
+
dimensionByModel: DIMENSION_BY_MODEL9
|
|
1065
907
|
},
|
|
1066
908
|
options
|
|
1067
909
|
)
|
|
@@ -1069,7 +911,7 @@ var openRouterMemoryEmbeddingProviderAdapter = {
|
|
|
1069
911
|
|
|
1070
912
|
// src/internal/embedding/voyage-embedding.ts
|
|
1071
913
|
var DEFAULT_VOYAGE_EMBEDDING_MODEL = "voyage-3-lite";
|
|
1072
|
-
var
|
|
914
|
+
var DIMENSION_BY_MODEL10 = {
|
|
1073
915
|
"voyage-3-lite": 512,
|
|
1074
916
|
"voyage-3": 1024,
|
|
1075
917
|
"voyage-3-large": 1024,
|
|
@@ -1082,14 +924,14 @@ var voyageMemoryEmbeddingProviderAdapter = {
|
|
|
1082
924
|
transport: "remote",
|
|
1083
925
|
authProviderId: "voyage",
|
|
1084
926
|
autoSelectPriority: 14,
|
|
1085
|
-
create: (options) => createOpenAiCompatibleRuntime(
|
|
927
|
+
create: (options) => memoryAdapters.createOpenAiCompatibleRuntime(
|
|
1086
928
|
{
|
|
1087
929
|
id: "voyage",
|
|
1088
930
|
defaultBaseUrl: "https://api.voyageai.com",
|
|
1089
931
|
apiKeyEnv: "VOYAGE_API_KEY",
|
|
1090
932
|
baseUrlEnv: "VOYAGE_API_BASE_URL",
|
|
1091
933
|
defaultModel: DEFAULT_VOYAGE_EMBEDDING_MODEL,
|
|
1092
|
-
dimensionByModel:
|
|
934
|
+
dimensionByModel: DIMENSION_BY_MODEL10
|
|
1093
935
|
},
|
|
1094
936
|
options
|
|
1095
937
|
)
|
|
@@ -1102,8 +944,101 @@ var MEMORY_EMBEDDING_ADAPTERS = {
|
|
|
1102
944
|
openrouter: openRouterMemoryEmbeddingProviderAdapter,
|
|
1103
945
|
voyage: voyageMemoryEmbeddingProviderAdapter,
|
|
1104
946
|
deepinfra: deepinfraMemoryEmbeddingProviderAdapter,
|
|
1105
|
-
ollama: ollamaMemoryEmbeddingProviderAdapter
|
|
947
|
+
ollama: ollamaMemoryEmbeddingProviderAdapter,
|
|
948
|
+
// theokit#128 — mirrors sdk-core's T4.10 additions, which the peer had drifted behind.
|
|
949
|
+
"azure-openai": azureOpenAiMemoryEmbeddingProviderAdapter,
|
|
950
|
+
cohere: cohereMemoryEmbeddingProviderAdapter,
|
|
951
|
+
jina: jinaMemoryEmbeddingProviderAdapter,
|
|
952
|
+
gemini: geminiMemoryEmbeddingProviderAdapter
|
|
1106
953
|
};
|
|
954
|
+
var RAW_MAX_BYTES = 2048;
|
|
955
|
+
function parseRetryAfter(headers) {
|
|
956
|
+
if (headers === void 0) return void 0;
|
|
957
|
+
const raw = headers.get("retry-after");
|
|
958
|
+
if (raw === null) return void 0;
|
|
959
|
+
const n = Number(raw);
|
|
960
|
+
if (Number.isFinite(n) && n >= 0) return Math.ceil(n);
|
|
961
|
+
return void 0;
|
|
962
|
+
}
|
|
963
|
+
function truncateRaw(body) {
|
|
964
|
+
if (body === null || body === void 0) return void 0;
|
|
965
|
+
const s = typeof body === "string" ? body : JSON.stringify(body);
|
|
966
|
+
const truncated = s.length <= RAW_MAX_BYTES ? s : `${s.slice(0, RAW_MAX_BYTES)}\u2026`;
|
|
967
|
+
return redactSecrets(truncated);
|
|
968
|
+
}
|
|
969
|
+
function buildErrorMetadata(args) {
|
|
970
|
+
const retryAfter = parseRetryAfter(args.headers);
|
|
971
|
+
const raw = truncateRaw(args.body);
|
|
972
|
+
return {
|
|
973
|
+
provider: args.provider,
|
|
974
|
+
endpoint: args.endpoint,
|
|
975
|
+
code: args.code,
|
|
976
|
+
statusCode: args.status,
|
|
977
|
+
...retryAfter !== void 0 ? { retryAfter } : {},
|
|
978
|
+
...raw !== void 0 ? { raw } : {}
|
|
979
|
+
};
|
|
980
|
+
}
|
|
981
|
+
function mapOpenAICompatibleError(args) {
|
|
982
|
+
const { providerId, status, body, headers, endpoint } = args;
|
|
983
|
+
const code = mapOpenAiStatusToCode(status, body);
|
|
984
|
+
const message = formatMessage(providerId, status, code);
|
|
985
|
+
const metadata = buildErrorMetadata({
|
|
986
|
+
provider: providerId,
|
|
987
|
+
endpoint,
|
|
988
|
+
code,
|
|
989
|
+
status,
|
|
990
|
+
headers,
|
|
991
|
+
body
|
|
992
|
+
});
|
|
993
|
+
if (status === 401 || status === 403) {
|
|
994
|
+
return new errors.AuthenticationError(message, { code: `${providerId}_auth_failed`, metadata });
|
|
995
|
+
}
|
|
996
|
+
if (status === 429) {
|
|
997
|
+
return new errors.RateLimitError(message, { code: `${providerId}_rate_limit`, metadata });
|
|
998
|
+
}
|
|
999
|
+
if (status === 400) {
|
|
1000
|
+
return new errors.ConfigurationError(message, { code: `${providerId}_${code}`, metadata });
|
|
1001
|
+
}
|
|
1002
|
+
if (status === 408) {
|
|
1003
|
+
return new errors.NetworkError(message, { code: `${providerId}_timeout`, metadata });
|
|
1004
|
+
}
|
|
1005
|
+
if (status >= 500 && status < 600) {
|
|
1006
|
+
return new errors.NetworkError(message, { code: `${providerId}_server_error`, metadata });
|
|
1007
|
+
}
|
|
1008
|
+
return new errors.UnknownAgentError(message, { code: `${providerId}_unknown`, metadata });
|
|
1009
|
+
}
|
|
1010
|
+
function extractOpenAiErrorCode(body) {
|
|
1011
|
+
if (body === null || typeof body !== "object") return void 0;
|
|
1012
|
+
const err = body.error;
|
|
1013
|
+
if (err === void 0 || err === null) return void 0;
|
|
1014
|
+
if (typeof err.code === "string") return err.code;
|
|
1015
|
+
if (typeof err.type === "string") return err.type;
|
|
1016
|
+
return void 0;
|
|
1017
|
+
}
|
|
1018
|
+
function mapOpenAiStatusToCode(status, body) {
|
|
1019
|
+
const rawCode = extractOpenAiErrorCode(body)?.toLowerCase() ?? "";
|
|
1020
|
+
if (rawCode.includes("context_length") || rawCode.includes("context_window") || rawCode.includes("too_many_tokens") || rawCode.includes("max_tokens")) {
|
|
1021
|
+
return "context_too_long";
|
|
1022
|
+
}
|
|
1023
|
+
if (rawCode.includes("content_filter") || rawCode.includes("content_policy") || rawCode.includes("safety")) {
|
|
1024
|
+
return "content_filtered";
|
|
1025
|
+
}
|
|
1026
|
+
if (rawCode.includes("model_not_found") || rawCode.includes("model_unavailable") || rawCode.includes("invalid_model")) {
|
|
1027
|
+
return "model_unavailable";
|
|
1028
|
+
}
|
|
1029
|
+
if (status === 402 || rawCode.includes("insufficient_quota") || rawCode.includes("quota_exceeded")) {
|
|
1030
|
+
return "quota_exceeded";
|
|
1031
|
+
}
|
|
1032
|
+
if (status === 401 || status === 403) return "auth_failed";
|
|
1033
|
+
if (status === 429) return "rate_limit";
|
|
1034
|
+
if (status === 408) return "timeout";
|
|
1035
|
+
if (status === 400) return "invalid_request";
|
|
1036
|
+
if (status >= 500 && status < 600) return "server_error";
|
|
1037
|
+
return "unknown";
|
|
1038
|
+
}
|
|
1039
|
+
function formatMessage(providerId, status, code) {
|
|
1040
|
+
return `${providerId} API error: ${code} (HTTP ${status})`;
|
|
1041
|
+
}
|
|
1107
1042
|
var FACTS_HEADING2 = "## Facts";
|
|
1108
1043
|
function createCategorizedMemory(options) {
|
|
1109
1044
|
const { root, categories } = options;
|
|
@@ -1466,11 +1401,6 @@ var SCHEMA_STATEMENTS = [
|
|
|
1466
1401
|
)`,
|
|
1467
1402
|
`CREATE INDEX IF NOT EXISTS idx_chunks_file_id ON chunks(file_id)`
|
|
1468
1403
|
];
|
|
1469
|
-
var MIGRATION_V2_STATEMENTS = [
|
|
1470
|
-
"ALTER TABLE chunks ADD COLUMN created_at INTEGER",
|
|
1471
|
-
"ALTER TABLE chunks ADD COLUMN importance REAL DEFAULT 0.5",
|
|
1472
|
-
"ALTER TABLE chunks ADD COLUMN scope TEXT DEFAULT '/'"
|
|
1473
|
-
];
|
|
1474
1404
|
var PRAGMA_STATEMENTS = [
|
|
1475
1405
|
"PRAGMA synchronous=NORMAL",
|
|
1476
1406
|
"PRAGMA foreign_keys=ON"
|
|
@@ -2597,9 +2527,17 @@ function isPathInside(root, candidate) {
|
|
|
2597
2527
|
return candidate === root || candidate.startsWith(normalizedRoot);
|
|
2598
2528
|
}
|
|
2599
2529
|
|
|
2530
|
+
Object.defineProperty(exports, "createOpenAiCompatibleRuntime", {
|
|
2531
|
+
enumerable: true,
|
|
2532
|
+
get: function () { return memoryAdapters.createOpenAiCompatibleRuntime; }
|
|
2533
|
+
});
|
|
2600
2534
|
exports.ActiveMemoryCache = ActiveMemoryCache;
|
|
2601
2535
|
exports.CircuitBreaker = CircuitBreaker;
|
|
2536
|
+
exports.DEFAULT_AZURE_OPENAI_EMBEDDING_MODEL = DEFAULT_AZURE_OPENAI_EMBEDDING_MODEL;
|
|
2537
|
+
exports.DEFAULT_COHERE_EMBEDDING_MODEL = DEFAULT_COHERE_EMBEDDING_MODEL;
|
|
2602
2538
|
exports.DEFAULT_DEEPINFRA_EMBEDDING_MODEL = DEFAULT_DEEPINFRA_EMBEDDING_MODEL;
|
|
2539
|
+
exports.DEFAULT_GEMINI_EMBEDDING_MODEL = DEFAULT_GEMINI_EMBEDDING_MODEL;
|
|
2540
|
+
exports.DEFAULT_JINA_EMBEDDING_MODEL = DEFAULT_JINA_EMBEDDING_MODEL;
|
|
2603
2541
|
exports.DEFAULT_MEMORY_READ_LINES = DEFAULT_MEMORY_READ_LINES;
|
|
2604
2542
|
exports.DEFAULT_MISTRAL_EMBEDDING_MODEL = DEFAULT_MISTRAL_EMBEDDING_MODEL;
|
|
2605
2543
|
exports.DEFAULT_OLLAMA_EMBEDDING_MODEL = DEFAULT_OLLAMA_EMBEDDING_MODEL;
|
|
@@ -2613,7 +2551,6 @@ exports.MEMORY_EMBEDDING_ADAPTERS = MEMORY_EMBEDDING_ADAPTERS;
|
|
|
2613
2551
|
exports.META_KEY_DIMENSION = META_KEY_DIMENSION;
|
|
2614
2552
|
exports.META_KEY_MODEL = META_KEY_MODEL;
|
|
2615
2553
|
exports.META_KEY_PROVIDER_ID = META_KEY_PROVIDER_ID;
|
|
2616
|
-
exports.MIGRATION_V2_STATEMENTS = MIGRATION_V2_STATEMENTS;
|
|
2617
2554
|
exports.PRAGMA_STATEMENTS = PRAGMA_STATEMENTS;
|
|
2618
2555
|
exports.SCHEMA_STATEMENTS = SCHEMA_STATEMENTS;
|
|
2619
2556
|
exports.VALID_BACKENDS = VALID_BACKENDS;
|
|
@@ -2621,13 +2558,14 @@ exports.appendDiaryEntry = appendDiaryEntry;
|
|
|
2621
2558
|
exports.appendFact = appendFact;
|
|
2622
2559
|
exports.appendFactToMarkdown = appendFactToMarkdown;
|
|
2623
2560
|
exports.assertValidBackend = assertValidBackend;
|
|
2561
|
+
exports.azureOpenAiMemoryEmbeddingProviderAdapter = azureOpenAiMemoryEmbeddingProviderAdapter;
|
|
2624
2562
|
exports.buildErrorMetadata = buildErrorMetadata;
|
|
2625
2563
|
exports.chunkMarkdown = chunkMarkdown;
|
|
2564
|
+
exports.cohereMemoryEmbeddingProviderAdapter = cohereMemoryEmbeddingProviderAdapter;
|
|
2626
2565
|
exports.createCategorizedMemory = createCategorizedMemory;
|
|
2627
2566
|
exports.createInMemoryMarkdownProvider = createInMemoryMarkdownProvider;
|
|
2628
2567
|
exports.createMemoryGetTool = createMemoryGetTool;
|
|
2629
2568
|
exports.createMemorySearchTool = createMemorySearchTool;
|
|
2630
|
-
exports.createOpenAiCompatibleRuntime = createOpenAiCompatibleRuntime;
|
|
2631
2569
|
exports.createVectorIndex = createVectorIndex;
|
|
2632
2570
|
exports.deepPhase = deepPhase;
|
|
2633
2571
|
exports.deepinfraMemoryEmbeddingProviderAdapter = deepinfraMemoryEmbeddingProviderAdapter;
|
|
@@ -2638,9 +2576,11 @@ exports.discoverWikiFiles = discoverWikiFiles;
|
|
|
2638
2576
|
exports.dropVectorIndex = dropVectorIndex;
|
|
2639
2577
|
exports.embedMissingChunks = embedMissingChunks;
|
|
2640
2578
|
exports.entryHash = entryHash;
|
|
2579
|
+
exports.geminiMemoryEmbeddingProviderAdapter = geminiMemoryEmbeddingProviderAdapter;
|
|
2641
2580
|
exports.identityMatches = identityMatches;
|
|
2642
2581
|
exports.isLanceAvailable = isLanceAvailable;
|
|
2643
2582
|
exports.isSqliteVecLoaded = isSqliteVecLoaded;
|
|
2583
|
+
exports.jinaMemoryEmbeddingProviderAdapter = jinaMemoryEmbeddingProviderAdapter;
|
|
2644
2584
|
exports.lanceStoragePath = lanceStoragePath;
|
|
2645
2585
|
exports.legacyMemoryJsonPath = legacyMemoryJsonPath;
|
|
2646
2586
|
exports.lightPhase = lightPhase;
|