@anvia/core 1.0.0-rc.1 → 1.0.0-rc.11
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/README.md +433 -85
- package/dist/agent/index.d.ts +57 -19
- package/dist/agent/index.js +32 -17
- package/dist/agent/interactions/index.d.ts +122 -0
- package/dist/agent/interactions/index.js +20 -0
- package/dist/agent-qRKa3ibC.d.ts +154 -0
- package/dist/chunk-3RM57ZT2.js +31 -0
- package/dist/chunk-3RM57ZT2.js.map +1 -0
- package/dist/chunk-3RWESPUG.js +331 -0
- package/dist/chunk-3RWESPUG.js.map +1 -0
- package/dist/{chunk-DMPUP4R3.js → chunk-3SKZ2BKP.js} +7 -5
- package/dist/chunk-3SKZ2BKP.js.map +1 -0
- package/dist/chunk-3XQGVDU5.js +69 -0
- package/dist/chunk-3XQGVDU5.js.map +1 -0
- package/dist/chunk-3ZLM6OAZ.js +4773 -0
- package/dist/chunk-3ZLM6OAZ.js.map +1 -0
- package/dist/chunk-6BBOCFHV.js +323 -0
- package/dist/chunk-6BBOCFHV.js.map +1 -0
- package/dist/chunk-7JLAIN6E.js +15 -0
- package/dist/chunk-7JLAIN6E.js.map +1 -0
- package/dist/chunk-7PHMK7W4.js +1516 -0
- package/dist/chunk-7PHMK7W4.js.map +1 -0
- package/dist/chunk-AHLKV6KP.js +86 -0
- package/dist/chunk-AHLKV6KP.js.map +1 -0
- package/dist/{chunk-FNQB2JEH.js → chunk-AZB6N7P4.js} +94 -65
- package/dist/chunk-AZB6N7P4.js.map +1 -0
- package/dist/{chunk-I6G7BC42.js → chunk-D4PACGPA.js} +2 -6
- package/dist/chunk-D4PACGPA.js.map +1 -0
- package/dist/chunk-EFLT7XZD.js +51 -0
- package/dist/chunk-EFLT7XZD.js.map +1 -0
- package/dist/{chunk-R2LJSQUW.js → chunk-EMZKPRE6.js} +267 -107
- package/dist/chunk-EMZKPRE6.js.map +1 -0
- package/dist/chunk-I3Q7XSBB.js +59 -0
- package/dist/chunk-I3Q7XSBB.js.map +1 -0
- package/dist/chunk-J6LVLV6P.js +13 -0
- package/dist/chunk-J6LVLV6P.js.map +1 -0
- package/dist/chunk-LTXABCOO.js +127 -0
- package/dist/chunk-LTXABCOO.js.map +1 -0
- package/dist/chunk-OJBFDBLG.js +164 -0
- package/dist/chunk-OJBFDBLG.js.map +1 -0
- package/dist/chunk-QGX73TSQ.js +177 -0
- package/dist/chunk-QGX73TSQ.js.map +1 -0
- package/dist/chunk-SJMSS5SI.js +171 -0
- package/dist/chunk-SJMSS5SI.js.map +1 -0
- package/dist/chunk-SPD4XVR7.js +29 -0
- package/dist/chunk-SPD4XVR7.js.map +1 -0
- package/dist/chunk-T2C3CGDQ.js +56 -0
- package/dist/chunk-T2C3CGDQ.js.map +1 -0
- package/dist/{chunk-5XKDW36Z.js → chunk-YA7BMX7D.js} +99 -57
- package/dist/chunk-YA7BMX7D.js.map +1 -0
- package/dist/chunk-ZA564323.js +331 -0
- package/dist/chunk-ZA564323.js.map +1 -0
- package/dist/completion/index.d.ts +5 -4
- package/dist/completion/index.js +34 -28
- package/dist/documents/index.d.ts +34 -0
- package/dist/documents/index.js +340 -0
- package/dist/documents/index.js.map +1 -0
- package/dist/{dynamic-tools-i9woysFa.d.ts → dynamic-tools-aIZlg5x1.d.ts} +21 -9
- package/dist/embeddings/index.d.ts +11 -9
- package/dist/embeddings/index.js +3 -3
- package/dist/evals/index.d.ts +54 -25
- package/dist/evals/index.js +197 -114
- package/dist/evals/index.js.map +1 -1
- package/dist/extractor/index.d.ts +23 -26
- package/dist/extractor/index.js +9 -8
- package/dist/guardrails/index.d.ts +7 -129
- package/dist/guardrails/index.js +1 -1
- package/dist/image-generation/index.d.ts +18 -16
- package/dist/image-generation/index.js +4 -2
- package/dist/index.d.ts +24 -25
- package/dist/index.js +80 -56
- package/dist/internal/agent.d.ts +33 -30
- package/dist/internal/agent.js +50 -15
- package/dist/internal/agent.js.map +1 -1
- package/dist/mcp/index.d.ts +7 -15
- package/dist/mcp/index.js +3 -348
- package/dist/mcp/index.js.map +1 -1
- package/dist/memory/index.d.ts +23 -6
- package/dist/memory/index.js +14 -10
- package/dist/{middleware-KynLg_RW.d.ts → middleware-kcF8AusP.d.ts} +10 -7
- package/dist/model-call-options-CZkSw_xN.d.ts +6 -0
- package/dist/model-listing/index.d.ts +3 -1
- package/dist/observability/index.d.ts +22 -6
- package/dist/observability/index.js +10 -5
- package/dist/observability/index.js.map +1 -1
- package/dist/pipeline/index.d.ts +103 -58
- package/dist/pipeline/index.js +421 -236
- package/dist/pipeline/index.js.map +1 -1
- package/dist/provider-output-error-BEwDgVv3.d.ts +99 -0
- package/dist/{retry-D3Ruy-ba.d.ts → retry-CjvSlKGW.d.ts} +2 -1
- package/dist/skills/index.d.ts +5 -4
- package/dist/skills/index.js +8 -7
- package/dist/speech-generation/index.d.ts +37 -0
- package/dist/speech-generation/index.js +10 -0
- package/dist/text-ZLECpQE7.d.ts +32 -0
- package/dist/{think-tool-DZqZj2LV.d.ts → think-tool-BwCsJ365.d.ts} +16 -2
- package/dist/tool/index.d.ts +10 -7
- package/dist/tool/index.js +13 -10
- package/dist/{tool-C_8GudXn.d.ts → tool-BpqpoRSE.d.ts} +17 -8
- package/dist/transcription/index.d.ts +23 -14
- package/dist/transcription/index.js +4 -2
- package/dist/{index-DxB74ybJ.d.ts → types-CLCLFpAL.d.ts} +153 -91
- package/dist/types-CSYt7-It.d.ts +170 -0
- package/dist/types-CXNE592e.d.ts +130 -0
- package/dist/types-Cr4uiYo5.d.ts +99 -0
- package/dist/{types-DhQfwiZn.d.ts → types-DC1U1XwW.d.ts} +1 -1
- package/dist/types-DgvozfPc.d.ts +349 -0
- package/dist/types-DhkodEft.d.ts +105 -0
- package/dist/types-DjqRHeAi.d.ts +31 -0
- package/dist/vector-store/index.d.ts +34 -34
- package/dist/vector-store/index.js +10 -6
- package/package.json +22 -16
- package/dist/agent-DGYY_onS.d.ts +0 -145
- package/dist/audio-generation/index.d.ts +0 -31
- package/dist/audio-generation/index.js +0 -8
- package/dist/chunk-5XKDW36Z.js.map +0 -1
- package/dist/chunk-6WGGTJE6.js +0 -139
- package/dist/chunk-6WGGTJE6.js.map +0 -1
- package/dist/chunk-A3UBYTJT.js +0 -157
- package/dist/chunk-A3UBYTJT.js.map +0 -1
- package/dist/chunk-ADH7NNCS.js +0 -512
- package/dist/chunk-ADH7NNCS.js.map +0 -1
- package/dist/chunk-CQNNSZPG.js +0 -9
- package/dist/chunk-CQNNSZPG.js.map +0 -1
- package/dist/chunk-DMPUP4R3.js.map +0 -1
- package/dist/chunk-DZ3CKYTH.js +0 -267
- package/dist/chunk-DZ3CKYTH.js.map +0 -1
- package/dist/chunk-FNQB2JEH.js.map +0 -1
- package/dist/chunk-I6G7BC42.js.map +0 -1
- package/dist/chunk-IL3ZSNJI.js +0 -3748
- package/dist/chunk-IL3ZSNJI.js.map +0 -1
- package/dist/chunk-J6GNQART.js +0 -122
- package/dist/chunk-J6GNQART.js.map +0 -1
- package/dist/chunk-M3IOWB4Y.js +0 -280
- package/dist/chunk-M3IOWB4Y.js.map +0 -1
- package/dist/chunk-QY5GZ7HR.js +0 -39
- package/dist/chunk-QY5GZ7HR.js.map +0 -1
- package/dist/chunk-R2LJSQUW.js.map +0 -1
- package/dist/chunk-RFDVKCIE.js +0 -12
- package/dist/chunk-RFDVKCIE.js.map +0 -1
- package/dist/chunk-RMUBRRSK.js +0 -34
- package/dist/chunk-RMUBRRSK.js.map +0 -1
- package/dist/chunk-RXKHOYEH.js +0 -466
- package/dist/chunk-RXKHOYEH.js.map +0 -1
- package/dist/chunk-XDRSPSR7.js +0 -38
- package/dist/chunk-XDRSPSR7.js.map +0 -1
- package/dist/chunk-XWUC7CIT.js +0 -1
- package/dist/chunk-XWUC7CIT.js.map +0 -1
- package/dist/errors-CYKUcU89.d.ts +0 -17
- package/dist/json-Zo7K3xmt.d.ts +0 -40
- package/dist/loaders/index.d.ts +0 -86
- package/dist/loaders/index.js +0 -299
- package/dist/loaders/index.js.map +0 -1
- package/dist/types-B3A4YxaA.d.ts +0 -354
- package/dist/types-BBEGKB9m.d.ts +0 -119
- package/dist/types-DT3nEemY.d.ts +0 -79
- package/dist/types-DulRCYdB.d.ts +0 -70
- package/dist/types-p55Jc-sr.d.ts +0 -47
- package/dist/ui/index.d.ts +0 -107
- package/dist/ui/index.js +0 -10
- /package/dist/{audio-generation → agent/interactions}/index.js.map +0 -0
- /package/dist/{ui → speech-generation}/index.js.map +0 -0
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Message
|
|
3
|
-
} from "./chunk-ADH7NNCS.js";
|
|
4
|
-
|
|
5
1
|
// src/completion/documents.ts
|
|
6
2
|
function normalizeDocuments(documents) {
|
|
7
3
|
if (documents.length === 0) {
|
|
8
4
|
return void 0;
|
|
9
5
|
}
|
|
10
|
-
return
|
|
6
|
+
return { role: "user", content: documents.map(formatDocument).join("\n") };
|
|
11
7
|
}
|
|
12
8
|
function formatDocument(document) {
|
|
13
9
|
return `<file id: ${document.id}>
|
|
@@ -38,4 +34,4 @@ export {
|
|
|
38
34
|
normalizeDocuments,
|
|
39
35
|
formatDocument
|
|
40
36
|
};
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
37
|
+
//# sourceMappingURL=chunk-D4PACGPA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/completion/documents.ts"],"sourcesContent":["import type { Document, Message } from \"./types\";\n\nexport function normalizeDocuments(documents: Document[]): Message | undefined {\n if (documents.length === 0) {\n return undefined;\n }\n\n return { role: \"user\", content: documents.map(formatDocument).join(\"\\n\") };\n}\n\nexport function formatDocument(document: Document): string {\n return `<file id: ${document.id}>\\n${formatDocumentBody(document)}\\n</file>\\n`;\n}\n\nfunction formatDocumentBody(document: Document): string {\n const metadata = formatMetadata(document.additionalProps);\n return metadata === undefined ? document.text : `${metadata}\\n${document.text}`;\n}\n\nfunction formatMetadata(additionalProps: Record<string, string> | undefined): string | undefined {\n if (additionalProps === undefined) {\n return undefined;\n }\n\n const entries = Object.entries(additionalProps).sort(([left], [right]) =>\n left.localeCompare(right),\n );\n if (entries.length === 0) {\n return undefined;\n }\n\n const metadata = entries.map(([key, value]) => `${key}: ${JSON.stringify(value)}`).join(\" \");\n return `<metadata ${metadata} />`;\n}\n"],"mappings":";AAEO,SAAS,mBAAmB,WAA4C;AAC7E,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,MAAM,QAAQ,SAAS,UAAU,IAAI,cAAc,EAAE,KAAK,IAAI,EAAE;AAC3E;AAEO,SAAS,eAAe,UAA4B;AACzD,SAAO,aAAa,SAAS,EAAE;AAAA,EAAM,mBAAmB,QAAQ,CAAC;AAAA;AAAA;AACnE;AAEA,SAAS,mBAAmB,UAA4B;AACtD,QAAM,WAAW,eAAe,SAAS,eAAe;AACxD,SAAO,aAAa,SAAY,SAAS,OAAO,GAAG,QAAQ;AAAA,EAAK,SAAS,IAAI;AAC/E;AAEA,SAAS,eAAe,iBAAyE;AAC/F,MAAI,oBAAoB,QAAW;AACjC,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,OAAO,QAAQ,eAAe,EAAE;AAAA,IAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAClE,KAAK,cAAc,KAAK;AAAA,EAC1B;AACA,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,KAAK,UAAU,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG;AAC3F,SAAO,aAAa,QAAQ;AAC9B;","names":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assertJsonObject
|
|
3
|
+
} from "./chunk-7JLAIN6E.js";
|
|
4
|
+
import {
|
|
5
|
+
resolveRetryOptions,
|
|
6
|
+
runWithRetries,
|
|
7
|
+
throwIfAborted
|
|
8
|
+
} from "./chunk-3RWESPUG.js";
|
|
9
|
+
|
|
10
|
+
// src/speech-generation/generate-speech.ts
|
|
11
|
+
async function generateSpeech(options) {
|
|
12
|
+
assertNonEmptyString(options.text, "Speech text");
|
|
13
|
+
assertNonEmptyString(options.voice, "Speech voice");
|
|
14
|
+
throwIfAborted(options.abortSignal);
|
|
15
|
+
const speed = options.speed ?? 1;
|
|
16
|
+
if (!Number.isFinite(speed) || speed <= 0) {
|
|
17
|
+
throw new RangeError("Speech speed must be a positive finite number.");
|
|
18
|
+
}
|
|
19
|
+
const request = { text: options.text, voice: options.voice, speed };
|
|
20
|
+
if (options.providerOptions !== void 0) {
|
|
21
|
+
assertJsonObject(options.providerOptions, "providerOptions");
|
|
22
|
+
request.providerOptions = options.providerOptions;
|
|
23
|
+
}
|
|
24
|
+
return runWithRetries(
|
|
25
|
+
() => {
|
|
26
|
+
throwIfAborted(options.abortSignal);
|
|
27
|
+
return options.model.speechGeneration(
|
|
28
|
+
request,
|
|
29
|
+
modelCallOptions(options.abortSignal)
|
|
30
|
+
);
|
|
31
|
+
},
|
|
32
|
+
resolveRetries(options.retries),
|
|
33
|
+
{ streaming: false, abortSignal: options.abortSignal }
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
function resolveRetries(setting) {
|
|
37
|
+
return setting === void 0 || setting === false ? void 0 : resolveRetryOptions(setting);
|
|
38
|
+
}
|
|
39
|
+
function modelCallOptions(abortSignal) {
|
|
40
|
+
return abortSignal === void 0 ? void 0 : { abortSignal };
|
|
41
|
+
}
|
|
42
|
+
function assertNonEmptyString(value, name) {
|
|
43
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
44
|
+
throw new TypeError(`${name} must be a non-empty string.`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export {
|
|
49
|
+
generateSpeech
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=chunk-EFLT7XZD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/speech-generation/generate-speech.ts"],"sourcesContent":["import type { JsonObject } from \"../completion/types\";\nimport { throwIfAborted } from \"../internal/abort\";\nimport { assertJsonObject } from \"../internal/json-object\";\nimport type { ModelCallOptions } from \"../model-call-options\";\nimport {\n type ResolvedRetryOptions,\n type RetrySetting,\n resolveRetryOptions,\n runWithRetries,\n} from \"../retry\";\nimport type {\n SpeechGenerationModel,\n SpeechGenerationRequest,\n SpeechGenerationResult,\n} from \"./types\";\n\nexport type GenerateSpeechOptions<Model extends SpeechGenerationModel = SpeechGenerationModel> = {\n model: Model;\n text: string;\n voice: string;\n speed?: number | undefined;\n providerOptions?: JsonObject | undefined;\n retries?: RetrySetting | undefined;\n abortSignal?: AbortSignal | undefined;\n};\n\ntype RawResponseOf<Model> =\n Model extends SpeechGenerationModel<infer RawResponse> ? RawResponse : unknown;\n\nexport async function generateSpeech<Model extends SpeechGenerationModel>(\n options: GenerateSpeechOptions<Model>,\n): Promise<SpeechGenerationResult<RawResponseOf<Model>>> {\n assertNonEmptyString(options.text, \"Speech text\");\n assertNonEmptyString(options.voice, \"Speech voice\");\n throwIfAborted(options.abortSignal);\n const speed = options.speed ?? 1;\n if (!Number.isFinite(speed) || speed <= 0) {\n throw new RangeError(\"Speech speed must be a positive finite number.\");\n }\n\n const request: SpeechGenerationRequest = { text: options.text, voice: options.voice, speed };\n if (options.providerOptions !== undefined) {\n assertJsonObject(options.providerOptions, \"providerOptions\");\n request.providerOptions = options.providerOptions;\n }\n return runWithRetries(\n () => {\n throwIfAborted(options.abortSignal);\n return options.model.speechGeneration(\n request,\n modelCallOptions(options.abortSignal),\n ) as Promise<SpeechGenerationResult<RawResponseOf<Model>>>;\n },\n resolveRetries(options.retries),\n { streaming: false, abortSignal: options.abortSignal },\n );\n}\n\nfunction resolveRetries(setting: RetrySetting | undefined): ResolvedRetryOptions | undefined {\n return setting === undefined || setting === false ? undefined : resolveRetryOptions(setting);\n}\n\nfunction modelCallOptions(abortSignal: AbortSignal | undefined): ModelCallOptions | undefined {\n return abortSignal === undefined ? undefined : { abortSignal };\n}\n\nfunction assertNonEmptyString(value: string, name: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} must be a non-empty string.`);\n }\n}\n"],"mappings":";;;;;;;;;;AA6BA,eAAsB,eACpB,SACuD;AACvD,uBAAqB,QAAQ,MAAM,aAAa;AAChD,uBAAqB,QAAQ,OAAO,cAAc;AAClD,iBAAe,QAAQ,WAAW;AAClC,QAAM,QAAQ,QAAQ,SAAS;AAC/B,MAAI,CAAC,OAAO,SAAS,KAAK,KAAK,SAAS,GAAG;AACzC,UAAM,IAAI,WAAW,gDAAgD;AAAA,EACvE;AAEA,QAAM,UAAmC,EAAE,MAAM,QAAQ,MAAM,OAAO,QAAQ,OAAO,MAAM;AAC3F,MAAI,QAAQ,oBAAoB,QAAW;AACzC,qBAAiB,QAAQ,iBAAiB,iBAAiB;AAC3D,YAAQ,kBAAkB,QAAQ;AAAA,EACpC;AACA,SAAO;AAAA,IACL,MAAM;AACJ,qBAAe,QAAQ,WAAW;AAClC,aAAO,QAAQ,MAAM;AAAA,QACnB;AAAA,QACA,iBAAiB,QAAQ,WAAW;AAAA,MACtC;AAAA,IACF;AAAA,IACA,eAAe,QAAQ,OAAO;AAAA,IAC9B,EAAE,WAAW,OAAO,aAAa,QAAQ,YAAY;AAAA,EACvD;AACF;AAEA,SAAS,eAAe,SAAqE;AAC3F,SAAO,YAAY,UAAa,YAAY,QAAQ,SAAY,oBAAoB,OAAO;AAC7F;AAEA,SAAS,iBAAiB,aAAoE;AAC5F,SAAO,gBAAgB,SAAY,SAAY,EAAE,YAAY;AAC/D;AAEA,SAAS,qBAAqB,OAAe,MAAoB;AAC/D,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW,GAAG;AAC1D,UAAM,IAAI,UAAU,GAAG,IAAI,8BAA8B;AAAA,EAC3D;AACF;","names":[]}
|
|
@@ -1,18 +1,38 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cosineSimilarity,
|
|
3
|
+
embedSparseQuery,
|
|
3
4
|
embedText
|
|
4
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ZA564323.js";
|
|
5
6
|
import {
|
|
7
|
+
parseMessage,
|
|
6
8
|
toProviderJsonSchema
|
|
7
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-QGX73TSQ.js";
|
|
8
10
|
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
isJsonValue
|
|
12
|
+
} from "./chunk-3XQGVDU5.js";
|
|
13
|
+
import {
|
|
14
|
+
resolveRetryOptions,
|
|
15
|
+
runWithRetries,
|
|
16
|
+
throwIfAborted
|
|
17
|
+
} from "./chunk-3RWESPUG.js";
|
|
12
18
|
|
|
13
19
|
// src/vector-store/index.ts
|
|
14
20
|
import { z } from "zod";
|
|
15
21
|
|
|
22
|
+
// src/internal/vector-search-options.ts
|
|
23
|
+
function assertPositiveSearchLimit(value, name = "topK") {
|
|
24
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
25
|
+
throw new RangeError(`${name} must be a positive safe integer.`);
|
|
26
|
+
}
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
function assertFiniteMinScore(value, name = "minScore") {
|
|
30
|
+
if (value !== void 0 && !Number.isFinite(value)) {
|
|
31
|
+
throw new RangeError(`${name} must be a finite number.`);
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
|
|
16
36
|
// src/internal/agent-runtime/approval-requirement.ts
|
|
17
37
|
function toolMayRequireApproval(requirement) {
|
|
18
38
|
return requirement !== void 0 && requirement !== false;
|
|
@@ -62,22 +82,63 @@ var ToolJsonError = class extends Error {
|
|
|
62
82
|
};
|
|
63
83
|
|
|
64
84
|
// src/tool/tool.ts
|
|
85
|
+
var richToolOutput = /* @__PURE__ */ Symbol("anvia.tool-output.content");
|
|
86
|
+
var ToolResultSerializationError = class extends TypeError {
|
|
87
|
+
constructor(output) {
|
|
88
|
+
super("Tool output must be a string, a strict JSON value, or ToolOutput.content(...).");
|
|
89
|
+
this.output = output;
|
|
90
|
+
this.name = "ToolResultSerializationError";
|
|
91
|
+
}
|
|
92
|
+
output;
|
|
93
|
+
};
|
|
65
94
|
var ToolOutput = {
|
|
66
95
|
content(content) {
|
|
67
|
-
return content;
|
|
96
|
+
return { [richToolOutput]: true, content };
|
|
68
97
|
}
|
|
69
98
|
};
|
|
70
99
|
function normalizeToolResultOutput(output) {
|
|
71
|
-
|
|
100
|
+
if (typeof output === "string") {
|
|
101
|
+
return { type: "text", value: output };
|
|
102
|
+
}
|
|
103
|
+
if (isRichToolOutput(output)) {
|
|
104
|
+
try {
|
|
105
|
+
const message = parseMessage({
|
|
106
|
+
role: "tool",
|
|
107
|
+
content: [
|
|
108
|
+
{
|
|
109
|
+
type: "tool-result",
|
|
110
|
+
toolCallId: "validation",
|
|
111
|
+
toolName: "validation",
|
|
112
|
+
output: { type: "content", value: output.content }
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
});
|
|
116
|
+
if (message.role !== "tool") throw new TypeError("Unexpected message role");
|
|
117
|
+
const result = message.content[0];
|
|
118
|
+
if (result?.type !== "tool-result") throw new TypeError("Unexpected tool result part");
|
|
119
|
+
if (result?.output.type !== "content") throw new TypeError("Unexpected tool output");
|
|
120
|
+
return result.output;
|
|
121
|
+
} catch {
|
|
122
|
+
throw new ToolResultSerializationError(output);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (isJsonValue(output)) {
|
|
126
|
+
return { type: "json", value: output };
|
|
127
|
+
}
|
|
128
|
+
throw new ToolResultSerializationError(output);
|
|
72
129
|
}
|
|
73
130
|
function toolResultContentToText(content) {
|
|
74
|
-
return content.map((item) => item.type === "text" ? item.text : `[
|
|
131
|
+
return content.map((item) => item.type === "text" ? item.text : `[file:${item.mediaType}]`).join("\n");
|
|
132
|
+
}
|
|
133
|
+
function isRichToolOutput(value) {
|
|
134
|
+
return typeof value === "object" && value !== null && richToolOutput in value;
|
|
75
135
|
}
|
|
76
136
|
function parseToolArgs(args) {
|
|
77
|
-
|
|
78
|
-
|
|
137
|
+
const value = JSON.parse(args);
|
|
138
|
+
if (!isJsonValue(value)) {
|
|
139
|
+
throw new TypeError("Tool arguments must be a JSON value.");
|
|
79
140
|
}
|
|
80
|
-
return
|
|
141
|
+
return value;
|
|
81
142
|
}
|
|
82
143
|
|
|
83
144
|
// src/internal/agent-runtime/prepared-tool-call.ts
|
|
@@ -119,6 +180,9 @@ function prepareToolCall(tool, args) {
|
|
|
119
180
|
} catch (error) {
|
|
120
181
|
throw asToolCallError(tool.name, error);
|
|
121
182
|
}
|
|
183
|
+
return prepareToolCallFromInput(tool, input);
|
|
184
|
+
}
|
|
185
|
+
function prepareToolCallFromInput(tool, input) {
|
|
122
186
|
return {
|
|
123
187
|
input,
|
|
124
188
|
async call(context) {
|
|
@@ -299,6 +363,75 @@ function seededRandom(seed) {
|
|
|
299
363
|
};
|
|
300
364
|
}
|
|
301
365
|
|
|
366
|
+
// src/vector-store/retrieve.ts
|
|
367
|
+
async function retrieveDocuments(options) {
|
|
368
|
+
assertPositiveSearchLimit(options.topK);
|
|
369
|
+
assertFiniteMinScore(options.minScore);
|
|
370
|
+
throwIfAborted(options.abortSignal);
|
|
371
|
+
const retries = resolveRetries(options.retries);
|
|
372
|
+
const search = (operation) => runWithRetries(operation, retries, {
|
|
373
|
+
streaming: false,
|
|
374
|
+
abortSignal: options.abortSignal
|
|
375
|
+
});
|
|
376
|
+
if ("model" in options && options.model !== void 0) {
|
|
377
|
+
const { embedding } = await embedText({
|
|
378
|
+
model: options.model,
|
|
379
|
+
text: options.query,
|
|
380
|
+
retries: options.retries,
|
|
381
|
+
abortSignal: options.abortSignal
|
|
382
|
+
});
|
|
383
|
+
return deduplicateResults(
|
|
384
|
+
await search(
|
|
385
|
+
() => options.store.search({
|
|
386
|
+
vector: embedding.vector,
|
|
387
|
+
topK: options.topK,
|
|
388
|
+
minScore: options.minScore,
|
|
389
|
+
filter: options.filter,
|
|
390
|
+
abortSignal: options.abortSignal
|
|
391
|
+
})
|
|
392
|
+
)
|
|
393
|
+
);
|
|
394
|
+
}
|
|
395
|
+
const [{ embedding: dense }, { embedding: sparse }] = await Promise.all([
|
|
396
|
+
embedText({
|
|
397
|
+
model: options.models.dense,
|
|
398
|
+
text: options.query,
|
|
399
|
+
retries: options.retries,
|
|
400
|
+
abortSignal: options.abortSignal
|
|
401
|
+
}),
|
|
402
|
+
embedSparseQuery({
|
|
403
|
+
model: options.models.sparse,
|
|
404
|
+
query: options.query,
|
|
405
|
+
retries: options.retries,
|
|
406
|
+
abortSignal: options.abortSignal
|
|
407
|
+
})
|
|
408
|
+
]);
|
|
409
|
+
return deduplicateResults(
|
|
410
|
+
await search(
|
|
411
|
+
() => options.store.searchHybrid({
|
|
412
|
+
vector: dense.vector,
|
|
413
|
+
sparseVector: sparse.vector,
|
|
414
|
+
fusion: options.fusion,
|
|
415
|
+
topK: options.topK,
|
|
416
|
+
minScore: options.minScore,
|
|
417
|
+
filter: options.filter,
|
|
418
|
+
abortSignal: options.abortSignal
|
|
419
|
+
})
|
|
420
|
+
)
|
|
421
|
+
);
|
|
422
|
+
}
|
|
423
|
+
function deduplicateResults(results) {
|
|
424
|
+
const bestById = /* @__PURE__ */ new Map();
|
|
425
|
+
for (const result of results) {
|
|
426
|
+
const current = bestById.get(result.id);
|
|
427
|
+
if (current === void 0 || result.score > current.score) bestById.set(result.id, result);
|
|
428
|
+
}
|
|
429
|
+
return [...bestById.values()].sort((left, right) => right.score - left.score);
|
|
430
|
+
}
|
|
431
|
+
function resolveRetries(setting) {
|
|
432
|
+
return setting === void 0 || setting === false ? void 0 : resolveRetryOptions(setting);
|
|
433
|
+
}
|
|
434
|
+
|
|
302
435
|
// src/vector-store/index.ts
|
|
303
436
|
var InMemoryVectorStore = class _InMemoryVectorStore {
|
|
304
437
|
documents = /* @__PURE__ */ new Map();
|
|
@@ -307,22 +440,25 @@ var InMemoryVectorStore = class _InMemoryVectorStore {
|
|
|
307
440
|
embeddingDimension;
|
|
308
441
|
constructor(options = {}) {
|
|
309
442
|
this.indexStrategy = options.index ?? { type: "bruteForce" };
|
|
443
|
+
if (options.dimensions !== void 0 && (!Number.isSafeInteger(options.dimensions) || options.dimensions < 1)) {
|
|
444
|
+
throw new RangeError("Vector dimensions must be a positive safe integer.");
|
|
445
|
+
}
|
|
446
|
+
this.embeddingDimension = options.dimensions;
|
|
310
447
|
}
|
|
311
|
-
static fromDocuments(
|
|
448
|
+
static fromDocuments(options) {
|
|
312
449
|
const store = new _InMemoryVectorStore(options);
|
|
313
|
-
store.
|
|
450
|
+
store.replaceDocuments(options.documents);
|
|
314
451
|
return store;
|
|
315
452
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
this.documents.set(document.id, document);
|
|
320
|
-
}
|
|
321
|
-
this.rebuildLshIndex();
|
|
322
|
-
return this;
|
|
453
|
+
async ensure() {
|
|
454
|
+
}
|
|
455
|
+
async validate() {
|
|
323
456
|
}
|
|
324
|
-
|
|
325
|
-
|
|
457
|
+
async upsert(options) {
|
|
458
|
+
this.replaceDocuments(options.documents);
|
|
459
|
+
}
|
|
460
|
+
get(options) {
|
|
461
|
+
return this.documents.get(options.id);
|
|
326
462
|
}
|
|
327
463
|
values() {
|
|
328
464
|
return [...this.documents.values()];
|
|
@@ -333,18 +469,75 @@ var InMemoryVectorStore = class _InMemoryVectorStore {
|
|
|
333
469
|
isEmpty() {
|
|
334
470
|
return this.documents.size === 0;
|
|
335
471
|
}
|
|
336
|
-
|
|
337
|
-
|
|
472
|
+
async search(request) {
|
|
473
|
+
throwIfAborted2(request.abortSignal);
|
|
474
|
+
assertPositiveSearchLimit(request.topK);
|
|
475
|
+
assertFiniteMinScore(request.minScore);
|
|
476
|
+
const queryEmbedding = { document: "", vector: request.vector };
|
|
477
|
+
const results = this.candidates(queryEmbedding).filter((document) => matchesVectorFilter(document.metadata, request.filter)).flatMap((document) => {
|
|
478
|
+
const score = bestScore(queryEmbedding, document.embeddings);
|
|
479
|
+
if (score === void 0 || request.minScore !== void 0 && score < request.minScore) {
|
|
480
|
+
return [];
|
|
481
|
+
}
|
|
482
|
+
let result = {
|
|
483
|
+
score,
|
|
484
|
+
id: document.id,
|
|
485
|
+
document: document.document
|
|
486
|
+
};
|
|
487
|
+
if (document.metadata !== void 0) {
|
|
488
|
+
result = { ...result, metadata: document.metadata };
|
|
489
|
+
}
|
|
490
|
+
return [result];
|
|
491
|
+
}).sort((left, right) => right.score - left.score).slice(0, request.topK);
|
|
492
|
+
throwIfAborted2(request.abortSignal);
|
|
493
|
+
return results;
|
|
494
|
+
}
|
|
495
|
+
async inspect(request) {
|
|
496
|
+
throwIfAborted2(request.abortSignal);
|
|
497
|
+
const limit = assertPositiveSearchLimit(request.limit);
|
|
498
|
+
const start = Math.max(0, Math.trunc(Number(request.cursor ?? "0")));
|
|
499
|
+
const documents = this.values().filter(
|
|
500
|
+
(document) => matchesVectorFilter(document.metadata, request.filter)
|
|
501
|
+
);
|
|
502
|
+
const page = documents.slice(start, start + limit);
|
|
503
|
+
const nextOffset = start + page.length;
|
|
504
|
+
const result = {
|
|
505
|
+
items: page.map((document) => {
|
|
506
|
+
let item = {
|
|
507
|
+
id: document.id,
|
|
508
|
+
document: document.document
|
|
509
|
+
};
|
|
510
|
+
if (document.metadata !== void 0) {
|
|
511
|
+
item = { ...item, metadata: document.metadata };
|
|
512
|
+
}
|
|
513
|
+
return item;
|
|
514
|
+
}),
|
|
515
|
+
totalCount: documents.length
|
|
516
|
+
};
|
|
517
|
+
if (nextOffset < documents.length) result.nextCursor = String(nextOffset);
|
|
518
|
+
throwIfAborted2(request.abortSignal);
|
|
519
|
+
return result;
|
|
520
|
+
}
|
|
521
|
+
replaceDocuments(documents) {
|
|
522
|
+
const ids = /* @__PURE__ */ new Set();
|
|
523
|
+
for (const document of documents) {
|
|
524
|
+
if (ids.has(document.id)) throw new TypeError(`Duplicate vector document id: ${document.id}`);
|
|
525
|
+
ids.add(document.id);
|
|
526
|
+
if (document.embeddings.length === 0) {
|
|
527
|
+
throw new TypeError(`Vector document ${document.id} must contain at least one embedding.`);
|
|
528
|
+
}
|
|
529
|
+
for (const embedding of document.embeddings)
|
|
530
|
+
assertFiniteVector(embedding.vector, document.id);
|
|
531
|
+
}
|
|
532
|
+
this.validateDocumentDimensions(documents);
|
|
533
|
+
for (const document of documents) this.documents.set(document.id, document);
|
|
534
|
+
this.rebuildLshIndex();
|
|
338
535
|
}
|
|
339
536
|
candidates(queryEmbedding) {
|
|
340
537
|
this.validateQueryDimension(queryEmbedding);
|
|
341
|
-
if (this.indexStrategy.type !== "lsh" || this.lshIndex === void 0)
|
|
342
|
-
return this.values();
|
|
343
|
-
}
|
|
538
|
+
if (this.indexStrategy.type !== "lsh" || this.lshIndex === void 0) return this.values();
|
|
344
539
|
const candidateIds = this.lshIndex.query(queryEmbedding.vector);
|
|
345
|
-
if (candidateIds.size === 0)
|
|
346
|
-
return this.values();
|
|
347
|
-
}
|
|
540
|
+
if (candidateIds.size === 0) return this.values();
|
|
348
541
|
return [...candidateIds].flatMap((id) => {
|
|
349
542
|
const document = this.documents.get(id);
|
|
350
543
|
return document === void 0 ? [] : [document];
|
|
@@ -362,9 +555,7 @@ var InMemoryVectorStore = class _InMemoryVectorStore {
|
|
|
362
555
|
}
|
|
363
556
|
const index = new LshIndex(firstEmbedding.vector.length, this.indexStrategy);
|
|
364
557
|
for (const document of this.documents.values()) {
|
|
365
|
-
for (const embedding of document.embeddings)
|
|
366
|
-
index.insert(document.id, embedding.vector);
|
|
367
|
-
}
|
|
558
|
+
for (const embedding of document.embeddings) index.insert(document.id, embedding.vector);
|
|
368
559
|
}
|
|
369
560
|
this.lshIndex = index;
|
|
370
561
|
}
|
|
@@ -378,77 +569,26 @@ var InMemoryVectorStore = class _InMemoryVectorStore {
|
|
|
378
569
|
this.embeddingDimension = dimension;
|
|
379
570
|
}
|
|
380
571
|
validateQueryDimension(queryEmbedding) {
|
|
381
|
-
if (this.embeddingDimension
|
|
382
|
-
|
|
572
|
+
if (this.embeddingDimension !== void 0) {
|
|
573
|
+
validateEmbeddingDimension(this.embeddingDimension, queryEmbedding, "query");
|
|
383
574
|
}
|
|
384
|
-
validateEmbeddingDimension(this.embeddingDimension, queryEmbedding, "query");
|
|
385
575
|
}
|
|
386
576
|
};
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
model;
|
|
393
|
-
store;
|
|
394
|
-
async search(request) {
|
|
395
|
-
const queryEmbedding = await embedText(this.model, request.query);
|
|
396
|
-
return this.store.candidates(queryEmbedding).filter((document) => matchesVectorFilter(document.metadata, request.filter)).flatMap((document) => {
|
|
397
|
-
const score = bestScore(queryEmbedding, document.embeddings);
|
|
398
|
-
if (score === void 0) {
|
|
399
|
-
return [];
|
|
400
|
-
}
|
|
401
|
-
if (request.threshold !== void 0 && score < request.threshold) {
|
|
402
|
-
return [];
|
|
403
|
-
}
|
|
404
|
-
const result = {
|
|
405
|
-
score,
|
|
406
|
-
id: document.id,
|
|
407
|
-
document: document.document
|
|
408
|
-
};
|
|
409
|
-
if (document.metadata !== void 0) {
|
|
410
|
-
result.metadata = document.metadata;
|
|
411
|
-
}
|
|
412
|
-
return [result];
|
|
413
|
-
}).sort((left, right) => right.score - left.score).slice(0, Math.max(0, Math.trunc(request.topK)));
|
|
577
|
+
function throwIfAborted2(signal) {
|
|
578
|
+
if (signal?.aborted) {
|
|
579
|
+
const error = new Error("The operation was aborted.");
|
|
580
|
+
error.name = "AbortError";
|
|
581
|
+
throw error;
|
|
414
582
|
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
const limit = Math.max(0, Math.trunc(request.limit));
|
|
420
|
-
const start = Math.max(0, Math.trunc(Number(request.cursor ?? "0")));
|
|
421
|
-
const documents = this.store.values().filter((document) => matchesVectorFilter(document.metadata, request.filter));
|
|
422
|
-
const page = documents.slice(start, start + limit);
|
|
423
|
-
const nextOffset = start + page.length;
|
|
424
|
-
const result = {
|
|
425
|
-
items: page.map((document) => {
|
|
426
|
-
const item = {
|
|
427
|
-
id: document.id,
|
|
428
|
-
document: document.document
|
|
429
|
-
};
|
|
430
|
-
if (document.metadata !== void 0) {
|
|
431
|
-
item.metadata = document.metadata;
|
|
432
|
-
}
|
|
433
|
-
return item;
|
|
434
|
-
})
|
|
435
|
-
};
|
|
436
|
-
if (nextOffset < documents.length) {
|
|
437
|
-
result.nextCursor = String(nextOffset);
|
|
438
|
-
}
|
|
439
|
-
result.totalCount = documents.length;
|
|
440
|
-
return result;
|
|
441
|
-
}
|
|
442
|
-
asTool(options) {
|
|
443
|
-
return createVectorSearchTool(this, options);
|
|
444
|
-
}
|
|
445
|
-
};
|
|
446
|
-
function createVectorSearchTool(index, options) {
|
|
583
|
+
}
|
|
584
|
+
function createVectorSearchTool(options) {
|
|
585
|
+
const configuredTopK = assertPositiveSearchLimit(options.topK ?? 5);
|
|
586
|
+
assertFiniteMinScore(options.minScore);
|
|
447
587
|
return createTool({
|
|
448
588
|
name: options.name,
|
|
449
589
|
description: options.description ?? "Search a vector store for documents relevant to the provided query.",
|
|
450
590
|
inputSchema: z.object({
|
|
451
|
-
query: z.string().describe("The query string to search for relevant documents."),
|
|
591
|
+
query: z.string().min(1).describe("The query string to search for relevant documents."),
|
|
452
592
|
topK: z.number().int().positive().optional().describe("The maximum number of results.")
|
|
453
593
|
}),
|
|
454
594
|
outputSchema: z.array(
|
|
@@ -459,12 +599,22 @@ function createVectorSearchTool(index, options) {
|
|
|
459
599
|
metadata: z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()])).optional()
|
|
460
600
|
})
|
|
461
601
|
),
|
|
462
|
-
execute: ({ query, topK }) =>
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
602
|
+
execute: ({ query, topK }, context) => {
|
|
603
|
+
const request = {
|
|
604
|
+
query,
|
|
605
|
+
topK: topK ?? configuredTopK,
|
|
606
|
+
minScore: options.minScore,
|
|
607
|
+
filter: options.filter,
|
|
608
|
+
retries: options.retries,
|
|
609
|
+
abortSignal: context.abortSignal
|
|
610
|
+
};
|
|
611
|
+
return "models" in options && options.models !== void 0 ? retrieveDocuments({
|
|
612
|
+
...request,
|
|
613
|
+
store: options.store,
|
|
614
|
+
models: options.models,
|
|
615
|
+
fusion: options.fusion
|
|
616
|
+
}) : retrieveDocuments({ ...request, store: options.store, model: options.model });
|
|
617
|
+
}
|
|
468
618
|
});
|
|
469
619
|
}
|
|
470
620
|
function bestScore(queryEmbedding, embeddings) {
|
|
@@ -476,9 +626,8 @@ function bestScore(queryEmbedding, embeddings) {
|
|
|
476
626
|
return best;
|
|
477
627
|
}
|
|
478
628
|
function validateEmbeddingDimension(expectedDimension, embedding, id) {
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
}
|
|
629
|
+
assertFiniteVector(embedding.vector, id);
|
|
630
|
+
if (expectedDimension === void 0) return embedding.vector.length;
|
|
482
631
|
if (embedding.vector.length !== expectedDimension) {
|
|
483
632
|
throw new Error(
|
|
484
633
|
`Vector dimension mismatch: expected ${expectedDimension} dimensions but received ${embedding.vector.length} for ${id}`
|
|
@@ -486,6 +635,12 @@ function validateEmbeddingDimension(expectedDimension, embedding, id) {
|
|
|
486
635
|
}
|
|
487
636
|
return expectedDimension;
|
|
488
637
|
}
|
|
638
|
+
function assertFiniteVector(vector, id) {
|
|
639
|
+
if (vector.length === 0) throw new TypeError(`Vector for ${id} must not be empty.`);
|
|
640
|
+
if (!vector.every(Number.isFinite)) {
|
|
641
|
+
throw new TypeError(`Vector for ${id} must contain only finite numbers.`);
|
|
642
|
+
}
|
|
643
|
+
}
|
|
489
644
|
|
|
490
645
|
export {
|
|
491
646
|
toolMayRequireApproval,
|
|
@@ -493,15 +648,20 @@ export {
|
|
|
493
648
|
ToolCallError,
|
|
494
649
|
ToolNotFoundError,
|
|
495
650
|
ToolJsonError,
|
|
651
|
+
ToolResultSerializationError,
|
|
496
652
|
ToolOutput,
|
|
497
653
|
normalizeToolResultOutput,
|
|
498
654
|
toolResultContentToText,
|
|
499
655
|
parseToolArgs,
|
|
500
656
|
prepareToolCall,
|
|
657
|
+
prepareToolCallFromInput,
|
|
501
658
|
createTool,
|
|
659
|
+
assertPositiveSearchLimit,
|
|
660
|
+
assertFiniteMinScore,
|
|
502
661
|
vectorFilter,
|
|
662
|
+
matchesVectorFilter,
|
|
663
|
+
retrieveDocuments,
|
|
503
664
|
InMemoryVectorStore,
|
|
504
|
-
InMemoryVectorIndex,
|
|
505
665
|
createVectorSearchTool
|
|
506
666
|
};
|
|
507
|
-
//# sourceMappingURL=chunk-
|
|
667
|
+
//# sourceMappingURL=chunk-EMZKPRE6.js.map
|