@anvia/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +101 -0
  2. package/dist/agent/index.d.ts +70 -0
  3. package/dist/agent/index.js +31 -0
  4. package/dist/agent/index.js.map +1 -0
  5. package/dist/agent-C6h6YrRU.d.ts +218 -0
  6. package/dist/audio-generation/index.d.ts +32 -0
  7. package/dist/audio-generation/index.js +9 -0
  8. package/dist/audio-generation/index.js.map +1 -0
  9. package/dist/chunk-7QI6ZAFI.js +61 -0
  10. package/dist/chunk-7QI6ZAFI.js.map +1 -0
  11. package/dist/chunk-A7VDIZQN.js +145 -0
  12. package/dist/chunk-A7VDIZQN.js.map +1 -0
  13. package/dist/chunk-B24Q2ZYM.js +43 -0
  14. package/dist/chunk-B24Q2ZYM.js.map +1 -0
  15. package/dist/chunk-B4QHQN5K.js +37 -0
  16. package/dist/chunk-B4QHQN5K.js.map +1 -0
  17. package/dist/chunk-CP47FBJV.js +324 -0
  18. package/dist/chunk-CP47FBJV.js.map +1 -0
  19. package/dist/chunk-FI2BTRT5.js +86 -0
  20. package/dist/chunk-FI2BTRT5.js.map +1 -0
  21. package/dist/chunk-GNWMOSNR.js +113 -0
  22. package/dist/chunk-GNWMOSNR.js.map +1 -0
  23. package/dist/chunk-I77SDTFE.js +43 -0
  24. package/dist/chunk-I77SDTFE.js.map +1 -0
  25. package/dist/chunk-IA76K5UX.js +142 -0
  26. package/dist/chunk-IA76K5UX.js.map +1 -0
  27. package/dist/chunk-IQBY2GCF.js +1207 -0
  28. package/dist/chunk-IQBY2GCF.js.map +1 -0
  29. package/dist/chunk-KSIY7KJA.js +387 -0
  30. package/dist/chunk-KSIY7KJA.js.map +1 -0
  31. package/dist/chunk-LMBOJMNB.js +304 -0
  32. package/dist/chunk-LMBOJMNB.js.map +1 -0
  33. package/dist/chunk-S55WOHX5.js +9 -0
  34. package/dist/chunk-S55WOHX5.js.map +1 -0
  35. package/dist/chunk-SRGJPXKT.js +256 -0
  36. package/dist/chunk-SRGJPXKT.js.map +1 -0
  37. package/dist/chunk-WZTPK5HV.js +125 -0
  38. package/dist/chunk-WZTPK5HV.js.map +1 -0
  39. package/dist/chunk-X6FBOU2P.js +96 -0
  40. package/dist/chunk-X6FBOU2P.js.map +1 -0
  41. package/dist/chunk-XUUY2L2D.js +42 -0
  42. package/dist/chunk-XUUY2L2D.js.map +1 -0
  43. package/dist/completion/index.d.ts +36 -0
  44. package/dist/completion/index.js +29 -0
  45. package/dist/completion/index.js.map +1 -0
  46. package/dist/embeddings/index.d.ts +34 -0
  47. package/dist/embeddings/index.js +23 -0
  48. package/dist/embeddings/index.js.map +1 -0
  49. package/dist/evals/index.d.ts +153 -0
  50. package/dist/evals/index.js +30 -0
  51. package/dist/evals/index.js.map +1 -0
  52. package/dist/extractor/index.d.ts +45 -0
  53. package/dist/extractor/index.js +19 -0
  54. package/dist/extractor/index.js.map +1 -0
  55. package/dist/image-generation/index.d.ts +37 -0
  56. package/dist/image-generation/index.js +9 -0
  57. package/dist/image-generation/index.js.map +1 -0
  58. package/dist/index.d.ts +24 -0
  59. package/dist/index.js +183 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/loaders/index.d.ts +82 -0
  62. package/dist/loaders/index.js +287 -0
  63. package/dist/loaders/index.js.map +1 -0
  64. package/dist/mcp/index.d.ts +15 -0
  65. package/dist/mcp/index.js +9 -0
  66. package/dist/mcp/index.js.map +1 -0
  67. package/dist/observability/index.d.ts +93 -0
  68. package/dist/observability/index.js +7 -0
  69. package/dist/observability/index.js.map +1 -0
  70. package/dist/pipeline/index.d.ts +51 -0
  71. package/dist/pipeline/index.js +9 -0
  72. package/dist/pipeline/index.js.map +1 -0
  73. package/dist/skills/index.d.ts +12 -0
  74. package/dist/skills/index.js +16 -0
  75. package/dist/skills/index.js.map +1 -0
  76. package/dist/streaming/index.d.ts +6 -0
  77. package/dist/streaming/index.js +7 -0
  78. package/dist/streaming/index.js.map +1 -0
  79. package/dist/tool/index.d.ts +42 -0
  80. package/dist/tool/index.js +33 -0
  81. package/dist/tool/index.js.map +1 -0
  82. package/dist/tool-DhuBQ3yb.d.ts +35 -0
  83. package/dist/transcription/index.d.ts +35 -0
  84. package/dist/transcription/index.js +9 -0
  85. package/dist/transcription/index.js.map +1 -0
  86. package/dist/types-B5B8Sdl4.d.ts +64 -0
  87. package/dist/types-BrxLd7ay.d.ts +250 -0
  88. package/dist/types-HvopERm0.d.ts +30 -0
  89. package/dist/vector-store/index.d.ts +111 -0
  90. package/dist/vector-store/index.js +15 -0
  91. package/dist/vector-store/index.js.map +1 -0
  92. package/dist/zod-schema-DJTEgQBq.d.ts +40 -0
  93. package/package.json +102 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/vector-store/index.ts","../src/vector-store/filter.ts","../src/vector-store/lsh.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n cosineSimilarity,\n type EmbeddedDocument,\n type Embedding,\n type EmbeddingModel,\n embedText,\n type VectorMetadata,\n} from \"../embeddings\";\nimport { createTool } from \"../tool/create-tool\";\nimport type { Tool } from \"../tool/tool\";\nimport { matchesVectorFilter, type VectorFilter } from \"./filter\";\nimport { LshIndex, type LshOptions } from \"./lsh\";\n\nexport { type VectorFilter, vectorFilter } from \"./filter\";\n\nexport type IndexStrategy = { type: \"bruteForce\" } | LshOptions;\n\nexport type VectorSearchRequest = {\n query: string;\n topK: number;\n threshold?: number | undefined;\n filter?: VectorFilter | undefined;\n};\n\nexport type VectorSearchResult<T = unknown, Metadata extends VectorMetadata = VectorMetadata> = {\n score: number;\n id: string;\n document: T;\n metadata?: Metadata | undefined;\n};\n\nexport interface VectorSearchIndex<T = unknown, Metadata extends VectorMetadata = VectorMetadata> {\n search(request: VectorSearchRequest): Promise<Array<VectorSearchResult<T, Metadata>>>;\n searchIds(request: VectorSearchRequest): Promise<Array<{ score: number; id: string }>>;\n asTool(options: VectorSearchToolOptions): Tool<{ query: string; topK?: number }, unknown>;\n}\n\nexport type VectorSearchToolOptions = {\n name: string;\n description?: string | undefined;\n topK?: number | undefined;\n threshold?: number | undefined;\n filter?: VectorFilter | undefined;\n};\n\ntype StoredDocument<T, Metadata extends VectorMetadata> = EmbeddedDocument<T, Metadata>;\n\nexport class InMemoryVectorStore<T, Metadata extends VectorMetadata = VectorMetadata> {\n private readonly documents = new Map<string, StoredDocument<T, Metadata>>();\n private indexStrategy: IndexStrategy;\n private lshIndex: LshIndex | undefined;\n\n constructor(options: { index?: IndexStrategy } = {}) {\n this.indexStrategy = options.index ?? { type: \"bruteForce\" };\n }\n\n static fromDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(\n documents: Array<EmbeddedDocument<T, Metadata>>,\n options: { index?: IndexStrategy } = {},\n ): InMemoryVectorStore<T, Metadata> {\n const store = new InMemoryVectorStore<T, Metadata>(options);\n store.addDocuments(documents);\n return store;\n }\n\n addDocuments(documents: Array<EmbeddedDocument<T, Metadata>>): this {\n for (const document of documents) {\n this.documents.set(document.id, document);\n }\n this.rebuildLshIndex();\n return this;\n }\n\n get(id: string): StoredDocument<T, Metadata> | undefined {\n return this.documents.get(id);\n }\n\n values(): Array<StoredDocument<T, Metadata>> {\n return [...this.documents.values()];\n }\n\n len(): number {\n return this.documents.size;\n }\n\n isEmpty(): boolean {\n return this.documents.size === 0;\n }\n\n index(model: EmbeddingModel): InMemoryVectorIndex<T, Metadata> {\n return new InMemoryVectorIndex(model, this);\n }\n\n candidates(queryEmbedding: Embedding): Array<StoredDocument<T, Metadata>> {\n if (this.indexStrategy.type !== \"lsh\" || this.lshIndex === undefined) {\n return this.values();\n }\n\n const candidateIds = this.lshIndex.query(queryEmbedding.vector);\n if (candidateIds.size === 0) {\n return this.values();\n }\n\n return [...candidateIds].flatMap((id) => {\n const document = this.documents.get(id);\n return document === undefined ? [] : [document];\n });\n }\n\n private rebuildLshIndex(): void {\n if (this.indexStrategy.type !== \"lsh\") {\n this.lshIndex = undefined;\n return;\n }\n\n const firstEmbedding = this.values().flatMap((document) => document.embeddings)[0];\n if (firstEmbedding === undefined) {\n this.lshIndex = undefined;\n return;\n }\n\n const index = new LshIndex(firstEmbedding.vector.length, this.indexStrategy);\n for (const document of this.documents.values()) {\n for (const embedding of document.embeddings) {\n index.insert(document.id, embedding.vector);\n }\n }\n this.lshIndex = index;\n }\n}\n\nexport class InMemoryVectorIndex<T, Metadata extends VectorMetadata = VectorMetadata>\n implements VectorSearchIndex<T, Metadata>\n{\n constructor(\n private readonly model: EmbeddingModel,\n private readonly store: InMemoryVectorStore<T, Metadata>,\n ) {}\n\n async search(request: VectorSearchRequest): Promise<Array<VectorSearchResult<T, Metadata>>> {\n const queryEmbedding = await embedText(this.model, request.query);\n return this.store\n .candidates(queryEmbedding)\n .filter((document) => matchesVectorFilter(document.metadata, request.filter))\n .flatMap((document) => {\n const score = bestScore(queryEmbedding, document.embeddings);\n if (score === undefined) {\n return [];\n }\n if (request.threshold !== undefined && score < request.threshold) {\n return [];\n }\n return [\n {\n score,\n id: document.id,\n document: document.document,\n ...(document.metadata === undefined ? {} : { metadata: document.metadata }),\n },\n ];\n })\n .sort((left, right) => right.score - left.score)\n .slice(0, Math.max(0, Math.trunc(request.topK)));\n }\n\n async searchIds(request: VectorSearchRequest): Promise<Array<{ score: number; id: string }>> {\n return (await this.search(request)).map(({ score, id }) => ({ score, id }));\n }\n\n asTool(options: VectorSearchToolOptions): Tool<{ query: string; topK?: number }, unknown> {\n return createVectorSearchTool(this, options);\n }\n}\n\nexport function createVectorSearchTool<T, Metadata extends VectorMetadata>(\n index: VectorSearchIndex<T, Metadata>,\n options: VectorSearchToolOptions,\n): Tool<{ query: string; topK?: number }, Array<VectorSearchResult<T, Metadata>>> {\n return createTool({\n name: options.name,\n description:\n options.description ?? \"Search a vector store for documents relevant to the provided query.\",\n input: z.object({\n query: z.string().describe(\"The query string to search for relevant documents.\"),\n topK: z.number().int().positive().optional().describe(\"The maximum number of results.\"),\n }),\n output: z.array(\n z.object({\n score: z.number(),\n id: z.string(),\n document: z.any(),\n metadata: z\n .record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()]))\n .optional(),\n }),\n ),\n execute: ({ query, topK }) =>\n index.search({\n query,\n topK: topK ?? options.topK ?? 5,\n threshold: options.threshold,\n filter: options.filter,\n }),\n }) as Tool<{ query: string; topK?: number }, Array<VectorSearchResult<T, Metadata>>>;\n}\n\nfunction bestScore(queryEmbedding: Embedding, embeddings: Embedding[]): number | undefined {\n let best: number | undefined;\n for (const embedding of embeddings) {\n const score = cosineSimilarity(queryEmbedding.vector, embedding.vector);\n best = best === undefined ? score : Math.max(best, score);\n }\n return best;\n}\n","import type { VectorMetadata, VectorMetadataValue } from \"../embeddings\";\n\nexport type VectorFilter =\n | { type: \"eq\"; key: string; value: VectorMetadataValue }\n | { type: \"gt\"; key: string; value: VectorMetadataValue }\n | { type: \"lt\"; key: string; value: VectorMetadataValue }\n | { type: \"and\"; filters: [VectorFilter, VectorFilter] }\n | { type: \"or\"; filters: [VectorFilter, VectorFilter] };\n\nexport const vectorFilter = {\n eq(key: string, value: VectorMetadataValue): VectorFilter {\n return { type: \"eq\", key, value };\n },\n gt(key: string, value: VectorMetadataValue): VectorFilter {\n return { type: \"gt\", key, value };\n },\n lt(key: string, value: VectorMetadataValue): VectorFilter {\n return { type: \"lt\", key, value };\n },\n and(left: VectorFilter, right: VectorFilter): VectorFilter {\n return { type: \"and\", filters: [left, right] };\n },\n or(left: VectorFilter, right: VectorFilter): VectorFilter {\n return { type: \"or\", filters: [left, right] };\n },\n};\n\nexport function matchesVectorFilter(\n metadata: VectorMetadata | undefined,\n filter: VectorFilter | undefined,\n): boolean {\n if (filter === undefined) {\n return true;\n }\n if (metadata === undefined) {\n return false;\n }\n\n switch (filter.type) {\n case \"eq\":\n return metadata[filter.key] === filter.value;\n case \"gt\":\n return compare(metadata[filter.key], filter.value) > 0;\n case \"lt\":\n return compare(metadata[filter.key], filter.value) < 0;\n case \"and\":\n return (\n matchesVectorFilter(metadata, filter.filters[0]) &&\n matchesVectorFilter(metadata, filter.filters[1])\n );\n case \"or\":\n return (\n matchesVectorFilter(metadata, filter.filters[0]) ||\n matchesVectorFilter(metadata, filter.filters[1])\n );\n }\n}\n\nfunction compare(left: VectorMetadataValue | undefined, right: VectorMetadataValue): number {\n if (typeof left === \"number\" && typeof right === \"number\") {\n return left - right;\n }\n if (typeof left === \"string\" && typeof right === \"string\") {\n return left.localeCompare(right);\n }\n if (typeof left === \"boolean\" && typeof right === \"boolean\") {\n return Number(left) - Number(right);\n }\n return 0;\n}\n","export type LshOptions = {\n type: \"lsh\";\n numTables: number;\n numHyperplanes: number;\n seed?: number | undefined;\n};\n\nexport class LshIndex {\n private readonly hyperplanes: number[][];\n private readonly tables: Array<Map<string, Set<string>>>;\n\n constructor(\n dimensions: number,\n private readonly options: LshOptions,\n ) {\n const rng = seededRandom(options.seed ?? 42);\n this.hyperplanes = [];\n for (let index = 0; index < options.numTables * options.numHyperplanes; index += 1) {\n const plane = Array.from({ length: dimensions }, () => rng() * 2 - 1);\n const norm = Math.sqrt(plane.reduce((sum, value) => sum + value ** 2, 0));\n this.hyperplanes.push(norm === 0 ? plane : plane.map((value) => value / norm));\n }\n this.tables = Array.from({ length: options.numTables }, () => new Map());\n }\n\n insert(id: string, vector: number[]): void {\n for (let table = 0; table < this.options.numTables; table += 1) {\n const hash = this.hash(vector, table);\n const bucket = this.tables[table]?.get(hash) ?? new Set<string>();\n bucket.add(id);\n this.tables[table]?.set(hash, bucket);\n }\n }\n\n query(vector: number[]): Set<string> {\n const candidates = new Set<string>();\n for (let table = 0; table < this.options.numTables; table += 1) {\n const hash = this.hash(vector, table);\n for (const id of this.tables[table]?.get(hash) ?? []) {\n candidates.add(id);\n }\n }\n return candidates;\n }\n\n private hash(vector: number[], table: number): string {\n let hash = \"\";\n const start = table * this.options.numHyperplanes;\n for (let offset = 0; offset < this.options.numHyperplanes; offset += 1) {\n const plane = this.hyperplanes[start + offset] as number[];\n const dot = vector.reduce((sum, value, index) => sum + value * (plane[index] ?? 0), 0);\n hash += dot >= 0 ? \"1\" : \"0\";\n }\n return hash;\n }\n}\n\nfunction seededRandom(seed: number): () => number {\n let state = seed >>> 0;\n return () => {\n state = (state * 1664525 + 1013904223) >>> 0;\n return state / 0x100000000;\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,125 @@
1
+ // src/mcp/result.ts
2
+ function createCallToolParams(name, args) {
3
+ if (args === null || args === void 0) {
4
+ return { name };
5
+ }
6
+ if (!isPlainRecord(args)) {
7
+ throw new Error("MCP tool arguments must be a JSON object");
8
+ }
9
+ return { name, arguments: args };
10
+ }
11
+ function mapMcpToolResult(result) {
12
+ if ("toolResult" in result) {
13
+ return serializeMcpValue(result.toolResult);
14
+ }
15
+ if (result.isError === true) {
16
+ throw new Error(mcpErrorMessage(result.content));
17
+ }
18
+ return result.content.map(mapMcpContent).join("");
19
+ }
20
+ function mcpErrorMessage(content) {
21
+ const text = content.map((item) => item.type === "text" ? item.text : void 0).filter((item) => item !== void 0).join("\n");
22
+ return text === "" ? "MCP tool returned an error" : text;
23
+ }
24
+ function mapMcpContent(content) {
25
+ if (content.type === "text") {
26
+ return content.text;
27
+ }
28
+ if (content.type === "image") {
29
+ return `data:${content.mimeType};base64,${content.data}`;
30
+ }
31
+ if (content.type === "resource") {
32
+ const mimeType = content.resource.mimeType === void 0 ? "" : `data:${content.resource.mimeType};`;
33
+ if ("text" in content.resource) {
34
+ return `${mimeType}${content.resource.uri}:${content.resource.text}`;
35
+ }
36
+ return `${mimeType}${content.resource.uri}:${content.resource.blob}`;
37
+ }
38
+ throw new Error(`Unsupported MCP tool result content: ${serializeMcpValue(content)}`);
39
+ }
40
+ function serializeMcpValue(value) {
41
+ if (typeof value === "string") {
42
+ return value;
43
+ }
44
+ const serialized = JSON.stringify(value);
45
+ return serialized === void 0 ? String(value) : serialized;
46
+ }
47
+ function isPlainRecord(value) {
48
+ return typeof value === "object" && value !== null && !Array.isArray(value);
49
+ }
50
+
51
+ // src/mcp/tool.ts
52
+ function createMcpTool(definition, client) {
53
+ return {
54
+ name: definition.name,
55
+ definition() {
56
+ return {
57
+ name: definition.name,
58
+ description: definition.description ?? "",
59
+ parameters: definition.inputSchema
60
+ };
61
+ },
62
+ async call(args) {
63
+ const result = await client.callTool(createCallToolParams(definition.name, args));
64
+ return mapMcpToolResult(result);
65
+ }
66
+ };
67
+ }
68
+
69
+ // src/mcp/connect.ts
70
+ async function connectMcp(connection) {
71
+ const client = await connection.connect();
72
+ const { tools } = await client.listTools();
73
+ return {
74
+ name: connection.name,
75
+ tools: tools.map((tool) => createMcpTool(tool, client)),
76
+ close: () => client.close()
77
+ };
78
+ }
79
+
80
+ // src/mcp/connections.ts
81
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
82
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
83
+ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
84
+ var mcp = {
85
+ stdio(options) {
86
+ return {
87
+ name: options.name,
88
+ async connect() {
89
+ const { name: _name, ...server } = options;
90
+ const client = createSdkClient();
91
+ await client.connect(asSdkTransport(new StdioClientTransport(server)));
92
+ return client;
93
+ }
94
+ };
95
+ },
96
+ http(options) {
97
+ return {
98
+ name: options.name,
99
+ async connect() {
100
+ const client = createSdkClient();
101
+ await client.connect(
102
+ asSdkTransport(
103
+ new StreamableHTTPClientTransport(new URL(options.url), options.transport)
104
+ )
105
+ );
106
+ return client;
107
+ }
108
+ };
109
+ }
110
+ };
111
+ function createSdkClient() {
112
+ return new Client({
113
+ name: "@anvia/core",
114
+ version: "0.1.0"
115
+ });
116
+ }
117
+ function asSdkTransport(transport) {
118
+ return transport;
119
+ }
120
+
121
+ export {
122
+ connectMcp,
123
+ mcp
124
+ };
125
+ //# sourceMappingURL=chunk-WZTPK5HV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mcp/result.ts","../src/mcp/tool.ts","../src/mcp/connect.ts","../src/mcp/connections.ts"],"sourcesContent":["import type { JsonValue } from \"../completion/index\";\nimport type { McpToolCallContent, McpToolCallResult } from \"./types\";\n\nexport function createCallToolParams(\n name: string,\n args: unknown,\n): { name: string; arguments?: Record<string, unknown> } {\n if (args === null || args === undefined) {\n return { name };\n }\n\n if (!isPlainRecord(args)) {\n throw new Error(\"MCP tool arguments must be a JSON object\");\n }\n\n return { name, arguments: args };\n}\n\nexport function mapMcpToolResult(result: McpToolCallResult): string {\n if (\"toolResult\" in result) {\n return serializeMcpValue(result.toolResult);\n }\n\n if (result.isError === true) {\n throw new Error(mcpErrorMessage(result.content));\n }\n\n return result.content.map(mapMcpContent).join(\"\");\n}\n\nfunction mcpErrorMessage(content: McpToolCallContent[]): string {\n const text = content\n .map((item) => (item.type === \"text\" ? item.text : undefined))\n .filter((item): item is string => item !== undefined)\n .join(\"\\n\");\n\n return text === \"\" ? \"MCP tool returned an error\" : text;\n}\n\nfunction mapMcpContent(content: McpToolCallContent): string {\n if (content.type === \"text\") {\n return content.text;\n }\n\n if (content.type === \"image\") {\n return `data:${content.mimeType};base64,${content.data}`;\n }\n\n if (content.type === \"resource\") {\n const mimeType =\n content.resource.mimeType === undefined ? \"\" : `data:${content.resource.mimeType};`;\n if (\"text\" in content.resource) {\n return `${mimeType}${content.resource.uri}:${content.resource.text}`;\n }\n\n return `${mimeType}${content.resource.uri}:${content.resource.blob}`;\n }\n\n throw new Error(`Unsupported MCP tool result content: ${serializeMcpValue(content)}`);\n}\n\nfunction serializeMcpValue(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n const serialized = JSON.stringify(value);\n return serialized === undefined ? String(value) : serialized;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, JsonValue> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import type { ToolDefinition } from \"../completion/index\";\nimport type { Tool } from \"../tool/index\";\nimport { createCallToolParams, mapMcpToolResult } from \"./result\";\nimport type { McpClient, McpToolDefinition } from \"./types\";\n\nexport function createMcpTool(definition: McpToolDefinition, client: McpClient): Tool {\n return {\n name: definition.name,\n definition(): ToolDefinition {\n return {\n name: definition.name,\n description: definition.description ?? \"\",\n parameters: definition.inputSchema,\n };\n },\n async call(args): Promise<string> {\n const result = await client.callTool(createCallToolParams(definition.name, args));\n return mapMcpToolResult(result);\n },\n };\n}\n","import { createMcpTool } from \"./tool\";\nimport type { McpConnection, McpServer } from \"./types\";\n\nexport async function connectMcp(connection: McpConnection): Promise<McpServer> {\n const client = await connection.connect();\n const { tools } = await client.listTools();\n\n return {\n name: connection.name,\n tools: tools.map((tool) => createMcpTool(tool, client)),\n close: () => client.close(),\n };\n}\n","import { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { StdioClientTransport } from \"@modelcontextprotocol/sdk/client/stdio.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport type { McpClient, McpConnection, McpHttpOptions, McpStdioOptions } from \"./types\";\n\nexport const mcp = {\n stdio(options: McpStdioOptions): McpConnection {\n return {\n name: options.name,\n async connect(): Promise<McpClient> {\n const { name: _name, ...server } = options;\n const client = createSdkClient();\n await client.connect(asSdkTransport(new StdioClientTransport(server)));\n return client as McpClient;\n },\n };\n },\n\n http(options: McpHttpOptions): McpConnection {\n return {\n name: options.name,\n async connect(): Promise<McpClient> {\n const client = createSdkClient();\n await client.connect(\n asSdkTransport(\n new StreamableHTTPClientTransport(new URL(options.url), options.transport),\n ),\n );\n return client as McpClient;\n },\n };\n },\n};\n\nfunction createSdkClient(): Client {\n return new Client({\n name: \"@anvia/core\",\n version: \"0.1.0\",\n });\n}\n\nfunction asSdkTransport(transport: unknown): Parameters<Client[\"connect\"]>[0] {\n return transport as Parameters<Client[\"connect\"]>[0];\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,96 @@
1
+ import {
2
+ InMemoryVectorStore
3
+ } from "./chunk-SRGJPXKT.js";
4
+ import {
5
+ ToolSet
6
+ } from "./chunk-GNWMOSNR.js";
7
+ import {
8
+ createTool
9
+ } from "./chunk-B4QHQN5K.js";
10
+ import {
11
+ embedDocuments
12
+ } from "./chunk-A7VDIZQN.js";
13
+
14
+ // src/tool/dynamic-tools.ts
15
+ async function embedTools(model, tools, options = {}) {
16
+ const toolList = Array.isArray(tools) ? tools : tools.values();
17
+ const definitions = await Promise.all(
18
+ toolList.map(async (tool) => ({ tool, definition: await tool.definition("") }))
19
+ );
20
+ const documents = definitions.map(({ tool, definition }) => {
21
+ const content = options.content?.(tool, definition) ?? defaultToolEmbeddingText(definition);
22
+ const texts = Array.isArray(content) ? content : [content];
23
+ const metadata = options.metadata?.(tool, definition);
24
+ const document = {
25
+ toolName: tool.name,
26
+ definition,
27
+ text: texts.join("\n"),
28
+ ...metadata === void 0 ? {} : { metadata }
29
+ };
30
+ return { tool, document, texts, metadata };
31
+ });
32
+ return embedDocuments(model, documents, {
33
+ id: (item) => item.tool.name,
34
+ content: (item) => item.texts,
35
+ metadata: (item) => item.metadata,
36
+ concurrency: options.concurrency
37
+ }).then(
38
+ (embedded) => embedded.map((item) => ({
39
+ ...item,
40
+ document: item.document.document
41
+ }))
42
+ );
43
+ }
44
+ async function createToolIndex(model, tools, options = {}) {
45
+ const toolSet = Array.isArray(tools) ? ToolSet.fromTools(tools) : tools;
46
+ const embedded = await embedTools(model, toolSet, options);
47
+ const index = InMemoryVectorStore.fromDocuments(embedded).index(model);
48
+ return new DynamicToolSearchIndex(index, toolSet);
49
+ }
50
+ function isDynamicToolIndex(value) {
51
+ return typeof value === "object" && value !== null && "toolSet" in value && value.toolSet instanceof ToolSet;
52
+ }
53
+ var DynamicToolSearchIndex = class {
54
+ constructor(index, toolSet) {
55
+ this.index = index;
56
+ this.toolSet = toolSet;
57
+ }
58
+ index;
59
+ toolSet;
60
+ search(request) {
61
+ return this.index.search(request);
62
+ }
63
+ searchIds(request) {
64
+ return this.index.searchIds(request);
65
+ }
66
+ asTool(options) {
67
+ return this.index.asTool(options);
68
+ }
69
+ };
70
+ function defaultToolEmbeddingText(definition) {
71
+ return [definition.name, definition.description, JSON.stringify(definition.parameters)];
72
+ }
73
+
74
+ // src/tool/think-tool.ts
75
+ import { z } from "zod";
76
+ var defaultThinkToolDescription = "Use this tool to record a thought while reasoning through a complex task. It does not retrieve information, store memory, or change external state.";
77
+ var thinkToolInput = z.object({
78
+ thought: z.string().describe("A thought to record while reasoning through a task.")
79
+ });
80
+ function createThinkTool(options = {}) {
81
+ return createTool({
82
+ name: options.name ?? "think",
83
+ description: options.description ?? defaultThinkToolDescription,
84
+ input: thinkToolInput,
85
+ output: z.string(),
86
+ execute: (args) => args.thought
87
+ });
88
+ }
89
+
90
+ export {
91
+ embedTools,
92
+ createToolIndex,
93
+ isDynamicToolIndex,
94
+ createThinkTool
95
+ };
96
+ //# sourceMappingURL=chunk-X6FBOU2P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tool/dynamic-tools.ts","../src/tool/think-tool.ts"],"sourcesContent":["import type { ToolDefinition } from \"../completion\";\nimport type { EmbeddedDocument, EmbeddingModel, VectorMetadata } from \"../embeddings\";\nimport { embedDocuments } from \"../embeddings\";\nimport type { VectorSearchResult, VectorSearchToolOptions } from \"../vector-store\";\nimport {\n InMemoryVectorStore,\n type VectorSearchIndex,\n type VectorSearchRequest,\n} from \"../vector-store\";\nimport type { AnyTool, Tool } from \"./tool\";\nimport { ToolSet } from \"./tool-set\";\n\nexport type ToolSearchDocument<Metadata extends VectorMetadata = VectorMetadata> = {\n toolName: string;\n definition: ToolDefinition;\n text: string;\n metadata?: Metadata | undefined;\n};\n\nexport type EmbedToolsOptions<Metadata extends VectorMetadata = VectorMetadata> = {\n content?: ((tool: AnyTool, definition: ToolDefinition) => string | string[]) | undefined;\n metadata?: ((tool: AnyTool, definition: ToolDefinition) => Metadata | undefined) | undefined;\n concurrency?: number | undefined;\n};\n\nexport interface DynamicToolIndex<Metadata extends VectorMetadata = VectorMetadata>\n extends VectorSearchIndex<ToolSearchDocument<Metadata>, Metadata> {\n readonly toolSet: ToolSet;\n}\n\nexport async function embedTools<Metadata extends VectorMetadata = VectorMetadata>(\n model: EmbeddingModel,\n tools: AnyTool[] | ToolSet,\n options: EmbedToolsOptions<Metadata> = {},\n): Promise<Array<EmbeddedDocument<ToolSearchDocument<Metadata>, Metadata>>> {\n const toolList = Array.isArray(tools) ? tools : tools.values();\n const definitions = await Promise.all(\n toolList.map(async (tool) => ({ tool, definition: await tool.definition(\"\") })),\n );\n const documents = definitions.map(({ tool, definition }) => {\n const content = options.content?.(tool, definition) ?? defaultToolEmbeddingText(definition);\n const texts = Array.isArray(content) ? content : [content];\n const metadata = options.metadata?.(tool, definition);\n const document: ToolSearchDocument<Metadata> = {\n toolName: tool.name,\n definition,\n text: texts.join(\"\\n\"),\n ...(metadata === undefined ? {} : { metadata }),\n };\n return { tool, document, texts, metadata };\n });\n\n return embedDocuments(model, documents, {\n id: (item) => item.tool.name,\n content: (item) => item.texts,\n metadata: (item) => item.metadata,\n concurrency: options.concurrency,\n }).then((embedded) =>\n embedded.map((item) => ({\n ...item,\n document: item.document.document,\n })),\n );\n}\n\nexport async function createToolIndex<Metadata extends VectorMetadata = VectorMetadata>(\n model: EmbeddingModel,\n tools: AnyTool[] | ToolSet,\n options: EmbedToolsOptions<Metadata> = {},\n): Promise<DynamicToolIndex<Metadata>> {\n const toolSet = Array.isArray(tools) ? ToolSet.fromTools(tools) : tools;\n const embedded = await embedTools(model, toolSet, options);\n const index = InMemoryVectorStore.fromDocuments(embedded).index(model);\n return new DynamicToolSearchIndex(index, toolSet);\n}\n\nexport function isDynamicToolIndex(value: unknown): value is DynamicToolIndex {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"toolSet\" in value &&\n (value as { toolSet?: unknown }).toolSet instanceof ToolSet\n );\n}\n\nclass DynamicToolSearchIndex<Metadata extends VectorMetadata>\n implements DynamicToolIndex<Metadata>\n{\n constructor(\n private readonly index: VectorSearchIndex<ToolSearchDocument<Metadata>, Metadata>,\n readonly toolSet: ToolSet,\n ) {}\n\n search(\n request: VectorSearchRequest,\n ): Promise<Array<VectorSearchResult<ToolSearchDocument<Metadata>, Metadata>>> {\n return this.index.search(request);\n }\n\n searchIds(request: VectorSearchRequest): Promise<Array<{ score: number; id: string }>> {\n return this.index.searchIds(request);\n }\n\n asTool(options: VectorSearchToolOptions): Tool<{ query: string; topK?: number }, unknown> {\n return this.index.asTool(options);\n }\n}\n\nfunction defaultToolEmbeddingText(definition: ToolDefinition): string[] {\n return [definition.name, definition.description, JSON.stringify(definition.parameters)];\n}\n","import { z } from \"zod\";\nimport { createTool } from \"./create-tool\";\n\nconst defaultThinkToolDescription =\n \"Use this tool to record a thought while reasoning through a complex task. It does not retrieve information, store memory, or change external state.\";\n\nconst thinkToolInput = z.object({\n thought: z.string().describe(\"A thought to record while reasoning through a task.\"),\n});\n\nexport type CreateThinkToolOptions = {\n name?: string;\n description?: string;\n};\n\nexport function createThinkTool(options: CreateThinkToolOptions = {}) {\n return createTool({\n name: options.name ?? \"think\",\n description: options.description ?? defaultThinkToolDescription,\n input: thinkToolInput,\n output: z.string(),\n execute: (args) => args.thought,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;AA8BA,eAAsB,WACpB,OACA,OACA,UAAuC,CAAC,GACkC;AAC1E,QAAM,WAAW,MAAM,QAAQ,KAAK,IAAI,QAAQ,MAAM,OAAO;AAC7D,QAAM,cAAc,MAAM,QAAQ;AAAA,IAChC,SAAS,IAAI,OAAO,UAAU,EAAE,MAAM,YAAY,MAAM,KAAK,WAAW,EAAE,EAAE,EAAE;AAAA,EAChF;AACA,QAAM,YAAY,YAAY,IAAI,CAAC,EAAE,MAAM,WAAW,MAAM;AAC1D,UAAM,UAAU,QAAQ,UAAU,MAAM,UAAU,KAAK,yBAAyB,UAAU;AAC1F,UAAM,QAAQ,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AACzD,UAAM,WAAW,QAAQ,WAAW,MAAM,UAAU;AACpD,UAAM,WAAyC;AAAA,MAC7C,UAAU,KAAK;AAAA,MACf;AAAA,MACA,MAAM,MAAM,KAAK,IAAI;AAAA,MACrB,GAAI,aAAa,SAAY,CAAC,IAAI,EAAE,SAAS;AAAA,IAC/C;AACA,WAAO,EAAE,MAAM,UAAU,OAAO,SAAS;AAAA,EAC3C,CAAC;AAED,SAAO,eAAe,OAAO,WAAW;AAAA,IACtC,IAAI,CAAC,SAAS,KAAK,KAAK;AAAA,IACxB,SAAS,CAAC,SAAS,KAAK;AAAA,IACxB,UAAU,CAAC,SAAS,KAAK;AAAA,IACzB,aAAa,QAAQ;AAAA,EACvB,CAAC,EAAE;AAAA,IAAK,CAAC,aACP,SAAS,IAAI,CAAC,UAAU;AAAA,MACtB,GAAG;AAAA,MACH,UAAU,KAAK,SAAS;AAAA,IAC1B,EAAE;AAAA,EACJ;AACF;AAEA,eAAsB,gBACpB,OACA,OACA,UAAuC,CAAC,GACH;AACrC,QAAM,UAAU,MAAM,QAAQ,KAAK,IAAI,QAAQ,UAAU,KAAK,IAAI;AAClE,QAAM,WAAW,MAAM,WAAW,OAAO,SAAS,OAAO;AACzD,QAAM,QAAQ,oBAAoB,cAAc,QAAQ,EAAE,MAAM,KAAK;AACrE,SAAO,IAAI,uBAAuB,OAAO,OAAO;AAClD;AAEO,SAAS,mBAAmB,OAA2C;AAC5E,SACE,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACZ,MAAgC,mBAAmB;AAExD;AAEA,IAAM,yBAAN,MAEA;AAAA,EACE,YACmB,OACR,SACT;AAFiB;AACR;AAAA,EACR;AAAA,EAFgB;AAAA,EACR;AAAA,EAGX,OACE,SAC4E;AAC5E,WAAO,KAAK,MAAM,OAAO,OAAO;AAAA,EAClC;AAAA,EAEA,UAAU,SAA6E;AACrF,WAAO,KAAK,MAAM,UAAU,OAAO;AAAA,EACrC;AAAA,EAEA,OAAO,SAAmF;AACxF,WAAO,KAAK,MAAM,OAAO,OAAO;AAAA,EAClC;AACF;AAEA,SAAS,yBAAyB,YAAsC;AACtE,SAAO,CAAC,WAAW,MAAM,WAAW,aAAa,KAAK,UAAU,WAAW,UAAU,CAAC;AACxF;;;AC9GA,SAAS,SAAS;AAGlB,IAAM,8BACJ;AAEF,IAAM,iBAAiB,EAAE,OAAO;AAAA,EAC9B,SAAS,EAAE,OAAO,EAAE,SAAS,qDAAqD;AACpF,CAAC;AAOM,SAAS,gBAAgB,UAAkC,CAAC,GAAG;AACpE,SAAO,WAAW;AAAA,IAChB,MAAM,QAAQ,QAAQ;AAAA,IACtB,aAAa,QAAQ,eAAe;AAAA,IACpC,OAAO;AAAA,IACP,QAAQ,EAAE,OAAO;AAAA,IACjB,SAAS,CAAC,SAAS,KAAK;AAAA,EAC1B,CAAC;AACH;","names":[]}
@@ -0,0 +1,42 @@
1
+ // src/streaming/readable-stream.ts
2
+ function toReadableStream(events, _options = {}) {
3
+ const encoder = new TextEncoder();
4
+ const iterator = events[Symbol.asyncIterator]();
5
+ return new ReadableStream({
6
+ async pull(controller) {
7
+ try {
8
+ const next = await iterator.next();
9
+ if (next.done === true) {
10
+ controller.close();
11
+ return;
12
+ }
13
+ controller.enqueue(encoder.encode(`${JSON.stringify(next.value)}
14
+ `));
15
+ } catch (error) {
16
+ controller.enqueue(
17
+ encoder.encode(`${JSON.stringify({ type: "error", error: serializeError(error) })}
18
+ `)
19
+ );
20
+ controller.close();
21
+ }
22
+ },
23
+ async cancel() {
24
+ await iterator.return?.();
25
+ }
26
+ });
27
+ }
28
+ function serializeError(error) {
29
+ if (error instanceof Error) {
30
+ return {
31
+ name: error.name,
32
+ message: error.message,
33
+ stack: error.stack
34
+ };
35
+ }
36
+ return error;
37
+ }
38
+
39
+ export {
40
+ toReadableStream
41
+ };
42
+ //# sourceMappingURL=chunk-XUUY2L2D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/streaming/readable-stream.ts"],"sourcesContent":["export type ReadableStreamOptions = {\n format?: \"jsonl\";\n};\n\nexport function toReadableStream<T>(\n events: AsyncIterable<T>,\n _options: ReadableStreamOptions = {},\n): ReadableStream<Uint8Array> {\n const encoder = new TextEncoder();\n const iterator = events[Symbol.asyncIterator]();\n\n return new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const next = await iterator.next();\n if (next.done === true) {\n controller.close();\n return;\n }\n\n controller.enqueue(encoder.encode(`${JSON.stringify(next.value)}\\n`));\n } catch (error) {\n controller.enqueue(\n encoder.encode(`${JSON.stringify({ type: \"error\", error: serializeError(error) })}\\n`),\n );\n controller.close();\n }\n },\n async cancel() {\n await iterator.return?.();\n },\n });\n}\n\nfunction serializeError(error: unknown): unknown {\n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message,\n stack: error.stack,\n };\n }\n\n return error;\n}\n"],"mappings":";AAIO,SAAS,iBACd,QACA,WAAkC,CAAC,GACP;AAC5B,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,WAAW,OAAO,OAAO,aAAa,EAAE;AAE9C,SAAO,IAAI,eAA2B;AAAA,IACpC,MAAM,KAAK,YAAY;AACrB,UAAI;AACF,cAAM,OAAO,MAAM,SAAS,KAAK;AACjC,YAAI,KAAK,SAAS,MAAM;AACtB,qBAAW,MAAM;AACjB;AAAA,QACF;AAEA,mBAAW,QAAQ,QAAQ,OAAO,GAAG,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,CAAI,CAAC;AAAA,MACtE,SAAS,OAAO;AACd,mBAAW;AAAA,UACT,QAAQ,OAAO,GAAG,KAAK,UAAU,EAAE,MAAM,SAAS,OAAO,eAAe,KAAK,EAAE,CAAC,CAAC;AAAA,CAAI;AAAA,QACvF;AACA,mBAAW,MAAM;AAAA,MACnB;AAAA,IACF;AAAA,IACA,MAAM,SAAS;AACb,YAAM,SAAS,SAAS;AAAA,IAC1B;AAAA,EACF,CAAC;AACH;AAEA,SAAS,eAAe,OAAyB;AAC/C,MAAI,iBAAiB,OAAO;AAC1B,WAAO;AAAA,MACL,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,IACf;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,36 @@
1
+ import { D as Document, M as Message, b as CompletionModel, q as ToolDefinition, o as ToolChoice, j as JsonValue, J as JsonObject, d as CompletionRequest, e as CompletionResponse } from '../types-BrxLd7ay.js';
2
+ export { A as AssistantContent, a as AssistantMessage, C as CompletionCapabilityError, c as CompletionModelCapabilities, f as CompletionStreamEvent, g as DocumentContent, I as ImageContent, h as ImageDetail, i as JsonPrimitive, R as Reasoning, k as ReasoningContent, l as ReasoningContentType, S as StreamingCompletionModel, m as SystemMessage, T as Text, n as ToolCall, p as ToolContent, r as ToolFunction, s as ToolMessage, t as ToolResult, u as ToolResultContent, U as Usage, v as UserContent, w as UserMessage, x as assertCompletionRequestSupported, y as reasoningDisplayText, z as textFromAssistantContent } from '../types-BrxLd7ay.js';
3
+
4
+ declare function normalizeDocuments(documents: Document[]): Message | undefined;
5
+ declare function formatDocument(document: Document): string;
6
+
7
+ declare class CompletionRequestBuilder<M extends CompletionModel = CompletionModel> {
8
+ private readonly model;
9
+ private readonly promptMessage;
10
+ private requestModel;
11
+ private instructionBlocks;
12
+ private history;
13
+ private docs;
14
+ private toolDefs;
15
+ private temp;
16
+ private maxTokenCount;
17
+ private choice;
18
+ private params;
19
+ private schema;
20
+ constructor(model: M, promptMessage: Message);
21
+ modelOverride(model: string | undefined): this;
22
+ instructions(instructions: string | undefined): this;
23
+ messages(messages: Message[]): this;
24
+ documents(documents: Document[]): this;
25
+ tools(tools: ToolDefinition[]): this;
26
+ temperature(temperature: number | undefined): this;
27
+ maxTokens(maxTokens: number | undefined): this;
28
+ toolChoice(toolChoice: ToolChoice | undefined): this;
29
+ additionalParams(additionalParams: JsonValue | undefined): this;
30
+ outputSchema(outputSchema: JsonObject | undefined): this;
31
+ build(): CompletionRequest;
32
+ send(): Promise<CompletionResponse>;
33
+ private buildInstructions;
34
+ }
35
+
36
+ export { CompletionModel, CompletionRequest, CompletionRequestBuilder, CompletionResponse, Document, JsonObject, JsonValue, Message, ToolChoice, ToolDefinition, formatDocument, normalizeDocuments };
@@ -0,0 +1,29 @@
1
+ import {
2
+ AssistantContent,
3
+ CompletionCapabilityError,
4
+ CompletionRequestBuilder,
5
+ Message,
6
+ ToolContent,
7
+ Usage,
8
+ UserContent,
9
+ assertCompletionRequestSupported,
10
+ formatDocument,
11
+ normalizeDocuments,
12
+ reasoningDisplayText,
13
+ textFromAssistantContent
14
+ } from "../chunk-CP47FBJV.js";
15
+ export {
16
+ AssistantContent,
17
+ CompletionCapabilityError,
18
+ CompletionRequestBuilder,
19
+ Message,
20
+ ToolContent,
21
+ Usage,
22
+ UserContent,
23
+ assertCompletionRequestSupported,
24
+ formatDocument,
25
+ normalizeDocuments,
26
+ reasoningDisplayText,
27
+ textFromAssistantContent
28
+ };
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,34 @@
1
+ type Embedding = {
2
+ document: string;
3
+ vector: number[];
4
+ };
5
+ interface EmbeddingModel {
6
+ readonly dimensions?: number | undefined;
7
+ readonly maxBatchSize?: number | undefined;
8
+ embedTexts(texts: string[]): Promise<Embedding[]>;
9
+ }
10
+ type EmbeddedDocument<T, Metadata extends VectorMetadata = VectorMetadata> = {
11
+ id: string;
12
+ document: T;
13
+ metadata?: Metadata | undefined;
14
+ embeddings: Embedding[];
15
+ };
16
+ type VectorMetadataValue = string | number | boolean | null;
17
+ type VectorMetadata = Record<string, VectorMetadataValue>;
18
+ type EmbedDocumentsOptions<T, Metadata extends VectorMetadata = VectorMetadata> = {
19
+ id?: ((document: T, index: number) => string) | undefined;
20
+ content(document: T, index: number): string | string[];
21
+ metadata?: ((document: T, index: number) => Metadata | undefined) | undefined;
22
+ concurrency?: number | undefined;
23
+ };
24
+ declare function embedText(model: EmbeddingModel, text: string): Promise<Embedding>;
25
+ declare function embedTexts(model: EmbeddingModel, texts: string[]): Promise<Embedding[]>;
26
+ declare function embedDocuments<T, Metadata extends VectorMetadata = VectorMetadata>(model: EmbeddingModel, documents: T[], options: EmbedDocumentsOptions<T, Metadata>): Promise<Array<EmbeddedDocument<T, Metadata>>>;
27
+ declare function dotProduct(left: number[], right: number[]): number;
28
+ declare function cosineSimilarity(left: number[], right: number[]): number;
29
+ declare function angularDistance(left: number[], right: number[]): number;
30
+ declare function euclideanDistance(left: number[], right: number[]): number;
31
+ declare function manhattanDistance(left: number[], right: number[]): number;
32
+ declare function chebyshevDistance(left: number[], right: number[]): number;
33
+
34
+ export { type EmbedDocumentsOptions, type EmbeddedDocument, type Embedding, type EmbeddingModel, type VectorMetadata, type VectorMetadataValue, angularDistance, chebyshevDistance, cosineSimilarity, dotProduct, embedDocuments, embedText, embedTexts, euclideanDistance, manhattanDistance };
@@ -0,0 +1,23 @@
1
+ import {
2
+ angularDistance,
3
+ chebyshevDistance,
4
+ cosineSimilarity,
5
+ dotProduct,
6
+ embedDocuments,
7
+ embedText,
8
+ embedTexts,
9
+ euclideanDistance,
10
+ manhattanDistance
11
+ } from "../chunk-A7VDIZQN.js";
12
+ export {
13
+ angularDistance,
14
+ chebyshevDistance,
15
+ cosineSimilarity,
16
+ dotProduct,
17
+ embedDocuments,
18
+ embedText,
19
+ embedTexts,
20
+ euclideanDistance,
21
+ manhattanDistance
22
+ };
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,153 @@
1
+ import { k as PromptResponse, A as Agent } from '../agent-C6h6YrRU.js';
2
+ import { j as JsonValue, M as Message, b as CompletionModel } from '../types-BrxLd7ay.js';
3
+ import { Z as ZodSchema } from '../zod-schema-DJTEgQBq.js';
4
+ import { EmbeddingModel } from '../embeddings/index.js';
5
+ import '../observability/index.js';
6
+ import '../tool-DhuBQ3yb.js';
7
+ import '../vector-store/index.js';
8
+ import 'zod';
9
+
10
+ type EvalMetadata = Record<string, JsonValue | undefined>;
11
+ type EvalCase<Input, Expected = unknown> = {
12
+ id: string;
13
+ input: Input;
14
+ expected?: Expected | undefined;
15
+ metadata?: EvalMetadata | undefined;
16
+ };
17
+ type EvalTarget<Input, Output, Expected = unknown> = (input: Input, testCase: EvalCase<Input, Expected>) => Output | Promise<Output>;
18
+ type EvalOutcomeStatus = "pass" | "fail" | "invalid";
19
+ type EvalOutcome<Score = unknown> = {
20
+ outcome: "pass";
21
+ score?: Score | undefined;
22
+ comment?: string | undefined;
23
+ metadata?: EvalMetadata | undefined;
24
+ } | {
25
+ outcome: "fail";
26
+ score?: Score | undefined;
27
+ comment?: string | undefined;
28
+ metadata?: EvalMetadata | undefined;
29
+ } | {
30
+ outcome: "invalid";
31
+ reason: string;
32
+ score?: Score | undefined;
33
+ comment?: string | undefined;
34
+ metadata?: EvalMetadata | undefined;
35
+ };
36
+ declare const EvalOutcome: {
37
+ pass<Score>(score?: Score, options?: {
38
+ comment?: string | undefined;
39
+ metadata?: EvalMetadata | undefined;
40
+ }): EvalOutcome<Score>;
41
+ fail<Score>(score?: Score, options?: {
42
+ comment?: string | undefined;
43
+ metadata?: EvalMetadata | undefined;
44
+ }): EvalOutcome<Score>;
45
+ invalid<Score = never>(reason: string, options?: {
46
+ score?: Score | undefined;
47
+ comment?: string | undefined;
48
+ metadata?: EvalMetadata | undefined;
49
+ }): EvalOutcome<Score>;
50
+ };
51
+ type EvalMetricArgs<Input, Output, Expected = unknown> = {
52
+ suiteName: string;
53
+ case: EvalCase<Input, Expected>;
54
+ output: Output;
55
+ };
56
+ type EvalMetric<Input, Output, Score = unknown, Expected = unknown> = {
57
+ name: string;
58
+ evaluate(args: EvalMetricArgs<Input, Output, Expected>): EvalOutcome<Score> | Promise<EvalOutcome<Score>>;
59
+ };
60
+ type EvalMetricResult<Score = unknown> = {
61
+ metricName: string;
62
+ outcome: EvalOutcome<Score>;
63
+ reporterErrors: unknown[];
64
+ };
65
+ type EvalCaseResult<Input, Output, Expected = unknown> = {
66
+ case: EvalCase<Input, Expected>;
67
+ output?: Output | undefined;
68
+ targetError?: unknown;
69
+ metrics: EvalMetricResult[];
70
+ };
71
+ type EvalSuiteResult<Input, Output, Expected = unknown> = {
72
+ name: string;
73
+ results: Array<EvalCaseResult<Input, Output, Expected>>;
74
+ passed: number;
75
+ failed: number;
76
+ invalid: number;
77
+ durationMs: number;
78
+ };
79
+ type EvalReportArgs<Input, Output, Score = unknown, Expected = unknown> = {
80
+ suiteName: string;
81
+ case: EvalCase<Input, Expected>;
82
+ output?: Output | undefined;
83
+ targetError?: unknown;
84
+ metric: EvalMetric<Input, Output, Score, Expected>;
85
+ outcome: EvalOutcome<Score>;
86
+ };
87
+ type EvalReporter<Input = unknown, Output = unknown, Expected = unknown> = {
88
+ report(args: EvalReportArgs<Input, Output, unknown, Expected>): void | Promise<void>;
89
+ };
90
+ type RunEvalSuiteOptions<Input, Output, Expected = unknown> = {
91
+ name: string;
92
+ cases: Array<EvalCase<Input, Expected>>;
93
+ target: EvalTarget<Input, Output, Expected>;
94
+ metrics: Array<EvalMetric<NoInfer<Input>, NoInfer<Output>, unknown, NoInfer<Expected>>>;
95
+ concurrency?: number | undefined;
96
+ reporters?: Array<EvalReporter<NoInfer<Input>, NoInfer<Output>, NoInfer<Expected>>> | undefined;
97
+ failOnReporterError?: boolean | undefined;
98
+ };
99
+ declare function runEvalSuite<Input, Output, Expected = unknown>(options: RunEvalSuiteOptions<Input, Output, Expected>): Promise<EvalSuiteResult<Input, Output, Expected>>;
100
+ type ValueSelector<Input, Output, Expected, Value> = (args: EvalMetricArgs<Input, Output, Expected>) => Value | Promise<Value>;
101
+ type SelectorOrValue<Input, Output, Expected, Value> = Value | ValueSelector<Input, Output, Expected, Value>;
102
+ type ExactMatchOptions<Input, Output, Expected = unknown> = {
103
+ name?: string | undefined;
104
+ actual?: ValueSelector<Input, Output, Expected, unknown> | undefined;
105
+ expected?: SelectorOrValue<Input, Output, Expected, unknown> | undefined;
106
+ };
107
+ declare function exactMatch<Input, Output, Expected = unknown>(options?: ExactMatchOptions<Input, Output, Expected>): EvalMetric<Input, Output, boolean, Expected>;
108
+ type ContainsOptions<Input, Output, Expected = unknown> = {
109
+ name?: string | undefined;
110
+ actual?: ValueSelector<Input, Output, Expected, string> | undefined;
111
+ expected?: SelectorOrValue<Input, Output, Expected, string | RegExp> | undefined;
112
+ };
113
+ declare function contains<Input, Output, Expected = unknown>(options?: ContainsOptions<Input, Output, Expected>): EvalMetric<Input, Output, boolean, Expected>;
114
+ type SemanticSimilarityOptions<Input, Output, Expected = unknown> = {
115
+ name?: string | undefined;
116
+ model: EmbeddingModel;
117
+ threshold: number;
118
+ actual?: ValueSelector<Input, Output, Expected, string> | undefined;
119
+ expected?: SelectorOrValue<Input, Output, Expected, string> | undefined;
120
+ };
121
+ declare function semanticSimilarity<Input, Output, Expected = unknown>(options: SemanticSimilarityOptions<Input, Output, Expected>): EvalMetric<Input, Output, number, Expected>;
122
+ type LlmJudgeOptions<Input, Output, SchemaOutput, Expected = unknown> = {
123
+ name?: string | undefined;
124
+ model: CompletionModel;
125
+ schema: ZodSchema<SchemaOutput>;
126
+ passes(value: SchemaOutput): boolean;
127
+ instructions?: string | undefined;
128
+ retries?: number | undefined;
129
+ prompt?: ValueSelector<Input, Output, Expected, string> | undefined;
130
+ };
131
+ declare function llmJudge<Input, Output, SchemaOutput, Expected = unknown>(options: LlmJudgeOptions<Input, Output, SchemaOutput, Expected>): EvalMetric<Input, Output, SchemaOutput, Expected>;
132
+ type LlmScoreMetricScore = {
133
+ score: number;
134
+ feedback: string;
135
+ };
136
+ type LlmScoreOptions<Input, Output, Expected = unknown> = {
137
+ name?: string | undefined;
138
+ model: CompletionModel;
139
+ threshold: number;
140
+ criteria: string | string[];
141
+ instructions?: string | undefined;
142
+ retries?: number | undefined;
143
+ prompt?: ValueSelector<Input, Output, Expected, string> | undefined;
144
+ };
145
+ declare function llmScore<Input, Output, Expected = unknown>(options: LlmScoreOptions<Input, Output, Expected>): EvalMetric<Input, Output, LlmScoreMetricScore, Expected>;
146
+ type AgentEvalTargetOptions<Input, Output = PromptResponse> = {
147
+ prompt?: ((input: Input, testCase: EvalCase<Input>) => string | Message) | undefined;
148
+ output?: ((response: PromptResponse, testCase: EvalCase<Input>) => Output) | undefined;
149
+ };
150
+ declare function agentEvalTarget<Input>(agent: Agent, options?: AgentEvalTargetOptions<Input, PromptResponse>): EvalTarget<Input, PromptResponse>;
151
+ declare function agentEvalTarget<Input, Output>(agent: Agent, options: AgentEvalTargetOptions<Input, Output>): EvalTarget<Input, Output>;
152
+
153
+ export { type AgentEvalTargetOptions, type ContainsOptions, type EvalCase, type EvalCaseResult, type EvalMetadata, type EvalMetric, type EvalMetricArgs, type EvalMetricResult, EvalOutcome, type EvalOutcomeStatus, type EvalReportArgs, type EvalReporter, type EvalSuiteResult, type EvalTarget, type ExactMatchOptions, type LlmJudgeOptions, type LlmScoreMetricScore, type LlmScoreOptions, type RunEvalSuiteOptions, type SelectorOrValue, type SemanticSimilarityOptions, type ValueSelector, agentEvalTarget, contains, exactMatch, llmJudge, llmScore, runEvalSuite, semanticSimilarity };