@elizaos/plugin-knowledge 2.0.0-alpha.6 → 2.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions.d.ts.map +1 -1
- package/dist/browser/index.browser.js +1 -154
- package/dist/browser/index.browser.js.map +3 -5
- package/dist/cjs/index.node.cjs +101 -83
- package/dist/cjs/index.node.cjs.map +9 -9
- package/dist/node/index.node.js +71 -74
- package/dist/node/index.node.js.map +9 -9
- package/package.json +2 -2
package/dist/actions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../actions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AAKvB,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../actions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AAKvB,eAAO,MAAM,sBAAsB,EAAE,MAiNpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAqJnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAkD,CAAC"}
|
|
@@ -1,156 +1,3 @@
|
|
|
1
|
-
// documents-provider.ts
|
|
2
|
-
import { addHeader, logger, MemoryType } from "@elizaos/core";
|
|
3
|
-
var documentsProvider = {
|
|
4
|
-
name: "AVAILABLE_DOCUMENTS",
|
|
5
|
-
description: "List of documents available in the knowledge base. Shows which documents the agent can reference and retrieve information from.",
|
|
6
|
-
dynamic: true,
|
|
7
|
-
get: async (runtime, _message, _state) => {
|
|
8
|
-
try {
|
|
9
|
-
const knowledgeService = runtime.getService("knowledge");
|
|
10
|
-
if (!knowledgeService) {
|
|
11
|
-
logger.warn("Knowledge service not available for documents provider");
|
|
12
|
-
return {
|
|
13
|
-
data: { documents: [] },
|
|
14
|
-
values: {
|
|
15
|
-
documentsCount: 0,
|
|
16
|
-
documents: "",
|
|
17
|
-
availableDocuments: ""
|
|
18
|
-
},
|
|
19
|
-
text: ""
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
const allMemories = await knowledgeService.getMemories({
|
|
23
|
-
tableName: "documents",
|
|
24
|
-
roomId: runtime.agentId,
|
|
25
|
-
count: 100
|
|
26
|
-
});
|
|
27
|
-
const documents = allMemories.filter((memory) => memory.metadata?.type === MemoryType.DOCUMENT);
|
|
28
|
-
if (!documents || documents.length === 0) {
|
|
29
|
-
return {
|
|
30
|
-
data: { documents: [] },
|
|
31
|
-
values: {
|
|
32
|
-
documentsCount: 0,
|
|
33
|
-
documents: "",
|
|
34
|
-
availableDocuments: ""
|
|
35
|
-
},
|
|
36
|
-
text: ""
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
const documentsList = documents.map((doc, index) => {
|
|
40
|
-
const metadata = doc.metadata;
|
|
41
|
-
const filename = metadata?.filename || metadata?.title || `Document ${index + 1}`;
|
|
42
|
-
const fileType = metadata?.fileExt || metadata?.fileType || "";
|
|
43
|
-
const source = metadata?.source || "upload";
|
|
44
|
-
const fileSize = metadata?.fileSize;
|
|
45
|
-
const parts = [filename];
|
|
46
|
-
if (fileType) {
|
|
47
|
-
parts.push(fileType);
|
|
48
|
-
}
|
|
49
|
-
if (fileSize) {
|
|
50
|
-
const sizeKB = Math.round(fileSize / 1024);
|
|
51
|
-
if (sizeKB > 1024) {
|
|
52
|
-
parts.push(`${Math.round(sizeKB / 1024)}MB`);
|
|
53
|
-
} else {
|
|
54
|
-
parts.push(`${sizeKB}KB`);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (source && source !== "upload") {
|
|
58
|
-
parts.push(`from ${source}`);
|
|
59
|
-
}
|
|
60
|
-
return parts.join(" - ");
|
|
61
|
-
}).join(`
|
|
62
|
-
`);
|
|
63
|
-
const documentsText = addHeader("# Available Documents", `${documents.length} document(s) in knowledge base:
|
|
64
|
-
${documentsList}`);
|
|
65
|
-
return {
|
|
66
|
-
data: {
|
|
67
|
-
documents: documents.map((doc) => ({
|
|
68
|
-
id: doc.id,
|
|
69
|
-
filename: doc.metadata?.filename || doc.metadata?.title,
|
|
70
|
-
fileType: doc.metadata?.fileType || doc.metadata?.fileExt,
|
|
71
|
-
source: doc.metadata?.source
|
|
72
|
-
})),
|
|
73
|
-
count: documents.length
|
|
74
|
-
},
|
|
75
|
-
values: {
|
|
76
|
-
documentsCount: documents.length,
|
|
77
|
-
documents: documentsList,
|
|
78
|
-
availableDocuments: documentsText
|
|
79
|
-
},
|
|
80
|
-
text: documentsText
|
|
81
|
-
};
|
|
82
|
-
} catch (error) {
|
|
83
|
-
logger.error("Error in documents provider:", error instanceof Error ? error.message : String(error));
|
|
84
|
-
return {
|
|
85
|
-
data: { documents: [], error: error instanceof Error ? error.message : String(error) },
|
|
86
|
-
values: {
|
|
87
|
-
documentsCount: 0,
|
|
88
|
-
documents: "",
|
|
89
|
-
availableDocuments: ""
|
|
90
|
-
},
|
|
91
|
-
text: ""
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
// provider.ts
|
|
97
|
-
import { addHeader as addHeader2 } from "@elizaos/core";
|
|
98
|
-
var knowledgeProvider = {
|
|
99
|
-
name: "KNOWLEDGE",
|
|
100
|
-
description: "Knowledge from the knowledge base that the agent knows, retrieved whenever the agent needs to answer a question about their expertise.",
|
|
101
|
-
dynamic: true,
|
|
102
|
-
get: async (runtime, message) => {
|
|
103
|
-
const knowledgeService = runtime.getService("knowledge");
|
|
104
|
-
const knowledgeData = await knowledgeService?.getKnowledge(message);
|
|
105
|
-
if (!knowledgeData || knowledgeData.length === 0) {
|
|
106
|
-
return {
|
|
107
|
-
text: "",
|
|
108
|
-
values: { knowledge: "", knowledgeUsed: false },
|
|
109
|
-
data: { knowledge: "", ragMetadata: null, knowledgeUsed: false }
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
const firstFiveKnowledgeItems = knowledgeData.slice(0, 5);
|
|
113
|
-
let knowledge = addHeader2("# Knowledge", firstFiveKnowledgeItems.map((item) => `- ${item.content.text}`).join(`
|
|
114
|
-
`));
|
|
115
|
-
const tokenLength = 3.5;
|
|
116
|
-
const maxChars = 4000 * tokenLength;
|
|
117
|
-
if (knowledge.length > maxChars) {
|
|
118
|
-
knowledge = knowledge.slice(0, maxChars);
|
|
119
|
-
}
|
|
120
|
-
const ragMetadata = {
|
|
121
|
-
retrievedFragments: knowledgeData.map((fragment) => {
|
|
122
|
-
const fragmentMetadata = fragment.metadata;
|
|
123
|
-
return {
|
|
124
|
-
fragmentId: fragment.id,
|
|
125
|
-
documentTitle: fragmentMetadata?.filename || fragmentMetadata?.title || "",
|
|
126
|
-
similarityScore: fragment.similarity,
|
|
127
|
-
contentPreview: `${(fragment.content?.text || "").substring(0, 100)}...`
|
|
128
|
-
};
|
|
129
|
-
}),
|
|
130
|
-
queryText: message.content?.text || "",
|
|
131
|
-
totalFragments: knowledgeData.length,
|
|
132
|
-
retrievalTimestamp: Date.now()
|
|
133
|
-
};
|
|
134
|
-
knowledgeService.setPendingRAGMetadata(ragMetadata);
|
|
135
|
-
setTimeout(async () => {
|
|
136
|
-
await knowledgeService.enrichRecentMemoriesWithPendingRAG();
|
|
137
|
-
}, 2000);
|
|
138
|
-
return {
|
|
139
|
-
data: {
|
|
140
|
-
knowledge,
|
|
141
|
-
ragMetadata,
|
|
142
|
-
knowledgeUsed: true
|
|
143
|
-
},
|
|
144
|
-
values: {
|
|
145
|
-
knowledge,
|
|
146
|
-
knowledgeUsed: true
|
|
147
|
-
},
|
|
148
|
-
text: knowledge,
|
|
149
|
-
ragMetadata,
|
|
150
|
-
knowledgeUsed: true
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
1
|
// types.ts
|
|
155
2
|
import z from "zod";
|
|
156
3
|
var ModelConfigSchema = z.object({
|
|
@@ -187,5 +34,5 @@ export {
|
|
|
187
34
|
KnowledgeServiceType
|
|
188
35
|
};
|
|
189
36
|
|
|
190
|
-
//# debugId=
|
|
37
|
+
//# debugId=C33D155A95A0CEF964756E2164756E21
|
|
191
38
|
//# sourceMappingURL=index.browser.js.map
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../
|
|
3
|
+
"sources": ["../../types.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type { IAgentRuntime, Memory, Provider, State } from \"@elizaos/core\";\nimport { addHeader, logger, MemoryType } from \"@elizaos/core\";\nimport type { KnowledgeService } from \"./service.ts\";\nimport type { KnowledgeDocumentMetadata } from \"./types.ts\";\n\nexport const documentsProvider: Provider = {\n name: \"AVAILABLE_DOCUMENTS\",\n description:\n \"List of documents available in the knowledge base. Shows which documents the agent can reference and retrieve information from.\",\n dynamic: true,\n get: async (runtime: IAgentRuntime, _message: Memory, _state?: State) => {\n try {\n const knowledgeService = runtime.getService(\"knowledge\") as KnowledgeService;\n\n if (!knowledgeService) {\n logger.warn(\"Knowledge service not available for documents provider\");\n return {\n data: { documents: [] },\n values: {\n documentsCount: 0,\n documents: \"\",\n availableDocuments: \"\",\n },\n text: \"\",\n };\n }\n\n const allMemories = await knowledgeService.getMemories({\n tableName: \"documents\",\n roomId: runtime.agentId,\n count: 100,\n });\n\n const documents = allMemories.filter(\n (memory) => memory.metadata?.type === MemoryType.DOCUMENT\n );\n\n if (!documents || documents.length === 0) {\n return {\n data: { documents: [] },\n values: {\n documentsCount: 0,\n documents: \"\",\n availableDocuments: \"\",\n },\n text: \"\",\n };\n }\n\n const documentsList = documents\n .map((doc, index) => {\n const metadata = doc.metadata as KnowledgeDocumentMetadata | undefined;\n const filename = metadata?.filename || metadata?.title || `Document ${index + 1}`;\n const fileType = metadata?.fileExt || metadata?.fileType || \"\";\n const source = metadata?.source || \"upload\";\n const fileSize = metadata?.fileSize;\n\n const parts = [filename];\n\n if (fileType) {\n parts.push(fileType);\n }\n\n if (fileSize) {\n const sizeKB = Math.round(fileSize / 1024);\n if (sizeKB > 1024) {\n parts.push(`${Math.round(sizeKB / 1024)}MB`);\n } else {\n parts.push(`${sizeKB}KB`);\n }\n }\n\n if (source && source !== \"upload\") {\n parts.push(`from ${source}`);\n }\n\n return parts.join(\" - \");\n })\n .join(\"\\n\");\n\n const documentsText = addHeader(\n \"# Available Documents\",\n `${documents.length} document(s) in knowledge base:\\n${documentsList}`\n );\n\n return {\n data: {\n documents: documents.map((doc) => ({\n id: doc.id,\n filename:\n (doc.metadata as KnowledgeDocumentMetadata | undefined)?.filename ||\n (doc.metadata as KnowledgeDocumentMetadata | undefined)?.title,\n fileType:\n (doc.metadata as KnowledgeDocumentMetadata | undefined)?.fileType ||\n (doc.metadata as KnowledgeDocumentMetadata | undefined)?.fileExt,\n source: (doc.metadata as KnowledgeDocumentMetadata | undefined)?.source,\n })),\n count: documents.length,\n },\n values: {\n documentsCount: documents.length,\n documents: documentsList,\n availableDocuments: documentsText,\n },\n text: documentsText,\n };\n } catch (error) {\n logger.error(\n \"Error in documents provider:\",\n error instanceof Error ? error.message : String(error)\n );\n return {\n data: { documents: [], error: error instanceof Error ? error.message : String(error) },\n values: {\n documentsCount: 0,\n documents: \"\",\n availableDocuments: \"\",\n },\n text: \"\",\n };\n }\n },\n};\n",
|
|
6
|
-
"import type { IAgentRuntime, Memory, Provider } from \"@elizaos/core\";\nimport { addHeader } from \"@elizaos/core\";\nimport type { KnowledgeService } from \"./service.ts\";\n\nexport const knowledgeProvider: Provider = {\n name: \"KNOWLEDGE\",\n description:\n \"Knowledge from the knowledge base that the agent knows, retrieved whenever the agent needs to answer a question about their expertise.\",\n dynamic: true,\n get: async (runtime: IAgentRuntime, message: Memory) => {\n const knowledgeService = runtime.getService(\"knowledge\") as KnowledgeService;\n const knowledgeData = await knowledgeService?.getKnowledge(message);\n\n // Early return when no knowledge exists - provider will be skipped in context\n // (runtime filters providers with empty/whitespace text)\n if (!knowledgeData || knowledgeData.length === 0) {\n return {\n text: \"\",\n values: { knowledge: \"\", knowledgeUsed: false },\n data: { knowledge: \"\", ragMetadata: null, knowledgeUsed: false },\n };\n }\n\n const firstFiveKnowledgeItems = knowledgeData.slice(0, 5);\n\n let knowledge = addHeader(\n \"# Knowledge\",\n firstFiveKnowledgeItems.map((item) => `- ${item.content.text}`).join(\"\\n\")\n );\n\n const tokenLength = 3.5;\n const maxChars = 4000 * tokenLength;\n\n if (knowledge.length > maxChars) {\n knowledge = knowledge.slice(0, maxChars);\n }\n\n const ragMetadata = {\n retrievedFragments: knowledgeData.map((fragment) => {\n const fragmentMetadata = fragment.metadata as Record<string, unknown> | undefined;\n return {\n fragmentId: fragment.id,\n documentTitle:\n (fragmentMetadata?.filename as string) || (fragmentMetadata?.title as string) || \"\",\n similarityScore: (fragment as { similarity?: number }).similarity,\n contentPreview: `${(fragment.content?.text || \"\").substring(0, 100)}...`,\n };\n }),\n queryText: message.content?.text || \"\",\n totalFragments: knowledgeData.length,\n retrievalTimestamp: Date.now(),\n };\n\n knowledgeService.setPendingRAGMetadata(ragMetadata);\n setTimeout(async () => {\n await knowledgeService.enrichRecentMemoriesWithPendingRAG();\n }, 2000);\n\n return {\n data: {\n knowledge,\n ragMetadata,\n knowledgeUsed: true,\n },\n values: {\n knowledge,\n knowledgeUsed: true,\n },\n text: knowledge,\n ragMetadata,\n knowledgeUsed: true,\n };\n },\n};\n",
|
|
7
5
|
"import type { Content, UUID } from \"@elizaos/core\";\nimport z from \"zod\";\n\n/**\n * Local metadata type for stored knowledge items.\n * Uses a permissive record type to avoid conflicts between TypeScript and protobuf MemoryMetadata types.\n */\nexport type StoredKnowledgeMetadata = Record<string, unknown>;\n\n/**\n * Stored knowledge item with content, metadata, and optional similarity score.\n * Used for knowledge retrieval results and internal knowledge processing.\n * This is a local definition to avoid conflicts with the proto KnowledgeItem type.\n */\nexport interface StoredKnowledgeItem {\n id: UUID;\n content: Content;\n metadata?: StoredKnowledgeMetadata;\n worldId?: UUID;\n similarity?: number;\n}\n\nexport const ModelConfigSchema = z.object({\n EMBEDDING_PROVIDER: z.enum([\"openai\", \"google\"]).optional(),\n TEXT_PROVIDER: z.enum([\"openai\", \"anthropic\", \"openrouter\", \"google\"]).optional(),\n\n OPENAI_API_KEY: z.string().optional(),\n ANTHROPIC_API_KEY: z.string().optional(),\n OPENROUTER_API_KEY: z.string().optional(),\n GOOGLE_API_KEY: z.string().optional(),\n\n OPENAI_BASE_URL: z.string().optional(),\n ANTHROPIC_BASE_URL: z.string().optional(),\n OPENROUTER_BASE_URL: z.string().optional(),\n GOOGLE_BASE_URL: z.string().optional(),\n\n TEXT_EMBEDDING_MODEL: z.string(),\n TEXT_MODEL: z.string().optional(),\n\n MAX_INPUT_TOKENS: z\n .string()\n .or(z.number())\n .transform((val) => (typeof val === \"string\" ? parseInt(val, 10) : val)),\n MAX_OUTPUT_TOKENS: z\n .string()\n .or(z.number())\n .optional()\n .transform((val) => (val ? (typeof val === \"string\" ? parseInt(val, 10) : val) : 4096)),\n\n EMBEDDING_DIMENSION: z\n .string()\n .or(z.number())\n .optional()\n .transform((val) => (val ? (typeof val === \"string\" ? parseInt(val, 10) : val) : 1536)),\n\n LOAD_DOCS_ON_STARTUP: z.boolean().default(false),\n\n CTX_KNOWLEDGE_ENABLED: z.boolean().default(false),\n\n RATE_LIMIT_ENABLED: z.boolean().default(true),\n\n MAX_CONCURRENT_REQUESTS: z\n .string()\n .or(z.number())\n .optional()\n .transform((val) => (val ? (typeof val === \"string\" ? parseInt(val, 10) : val) : 150)),\n\n REQUESTS_PER_MINUTE: z\n .string()\n .or(z.number())\n .optional()\n .transform((val) => (val ? (typeof val === \"string\" ? parseInt(val, 10) : val) : 300)),\n\n TOKENS_PER_MINUTE: z\n .string()\n .or(z.number())\n .optional()\n .transform((val) => (val ? (typeof val === \"string\" ? parseInt(val, 10) : val) : 750000)),\n\n BATCH_DELAY_MS: z\n .string()\n .or(z.number())\n .optional()\n .transform((val) => (val ? (typeof val === \"string\" ? parseInt(val, 10) : val) : 100)),\n});\n\nexport type ModelConfig = z.infer<typeof ModelConfigSchema>;\n\nexport interface ProviderRateLimits {\n maxConcurrentRequests: number;\n requestsPerMinute: number;\n tokensPerMinute?: number;\n provider: string;\n rateLimitEnabled: boolean;\n batchDelayMs: number;\n}\n\nexport interface TextGenerationOptions {\n provider?: \"anthropic\" | \"openai\" | \"openrouter\" | \"google\";\n modelName?: string;\n maxTokens?: number;\n cacheDocument?: string;\n cacheOptions?: {\n type: \"ephemeral\";\n };\n autoCacheContextualRetrieval?: boolean;\n}\n\nexport interface AddKnowledgeOptions {\n agentId?: UUID;\n worldId: UUID;\n roomId: UUID;\n entityId: UUID;\n clientDocumentId: UUID;\n contentType: string;\n originalFilename: string;\n content: string;\n metadata?: Record<string, unknown>;\n}\n\ndeclare module \"@elizaos/core\" {\n interface ServiceTypeRegistry {\n KNOWLEDGE: \"knowledge\";\n }\n}\n\nexport const KnowledgeServiceType = {\n KNOWLEDGE: \"knowledge\" as const,\n} satisfies Partial<import(\"@elizaos/core\").ServiceTypeRegistry>;\n\nexport interface KnowledgeDocumentMetadata extends Record<string, unknown> {\n type: string; // e.g., 'document', 'website_content'\n source: string; // e.g., 'upload', 'web_scrape', path to file\n title?: string;\n filename?: string;\n fileExt?: string;\n fileType?: string; // MIME type\n fileSize?: number;\n}\n\nexport interface KnowledgeConfig {\n CTX_KNOWLEDGE_ENABLED: boolean;\n LOAD_DOCS_ON_STARTUP: boolean;\n MAX_INPUT_TOKENS?: string | number;\n MAX_OUTPUT_TOKENS?: string | number;\n EMBEDDING_PROVIDER?: string;\n TEXT_PROVIDER?: string;\n TEXT_EMBEDDING_MODEL?: string;\n // Rate limiting configuration\n RATE_LIMIT_ENABLED?: boolean;\n MAX_CONCURRENT_REQUESTS?: number;\n REQUESTS_PER_MINUTE?: number;\n TOKENS_PER_MINUTE?: number;\n BATCH_DELAY_MS?: number;\n}\n\nexport interface LoadResult {\n successful: number;\n failed: number;\n errors?: Array<{ filename: string; error: string }>;\n}\n\nexport interface ExtendedMemoryMetadata extends Record<string, unknown> {\n type?: string;\n title?: string;\n filename?: string;\n path?: string;\n description?: string;\n fileExt?: string;\n timestamp?: number;\n contentType?: string;\n documentId?: string;\n source?: string;\n fileType?: string;\n fileSize?: number;\n position?: number; // For fragments\n originalFilename?: string;\n url?: string; // For web content\n}\n"
|
|
8
6
|
],
|
|
9
|
-
"mappings": ";AACA;
|
|
10
|
-
"debugId": "
|
|
7
|
+
"mappings": ";AACA;AAqBO,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,oBAAoB,EAAE,KAAK,CAAC,UAAU,QAAQ,CAAC,EAAE,SAAS;AAAA,EAC1D,eAAe,EAAE,KAAK,CAAC,UAAU,aAAa,cAAc,QAAQ,CAAC,EAAE,SAAS;AAAA,EAEhF,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACvC,oBAAoB,EAAE,OAAO,EAAE,SAAS;AAAA,EACxC,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EAEpC,iBAAiB,EAAE,OAAO,EAAE,SAAS;AAAA,EACrC,oBAAoB,EAAE,OAAO,EAAE,SAAS;AAAA,EACxC,qBAAqB,EAAE,OAAO,EAAE,SAAS;AAAA,EACzC,iBAAiB,EAAE,OAAO,EAAE,SAAS;AAAA,EAErC,sBAAsB,EAAE,OAAO;AAAA,EAC/B,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAEhC,kBAAkB,EACf,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,UAAU,CAAC,QAAS,OAAO,QAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,GAAI;AAAA,EACzE,mBAAmB,EAChB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,SAAS,EACT,UAAU,CAAC,QAAS,MAAO,OAAO,QAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,MAAO,IAAK;AAAA,EAExF,qBAAqB,EAClB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,SAAS,EACT,UAAU,CAAC,QAAS,MAAO,OAAO,QAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,MAAO,IAAK;AAAA,EAExF,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAE/C,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAEhD,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EAE5C,yBAAyB,EACtB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,SAAS,EACT,UAAU,CAAC,QAAS,MAAO,OAAO,QAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,MAAO,GAAI;AAAA,EAEvF,qBAAqB,EAClB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,SAAS,EACT,UAAU,CAAC,QAAS,MAAO,OAAO,QAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,MAAO,GAAI;AAAA,EAEvF,mBAAmB,EAChB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,SAAS,EACT,UAAU,CAAC,QAAS,MAAO,OAAO,QAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,MAAO,MAAO;AAAA,EAE1F,gBAAgB,EACb,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,SAAS,EACT,UAAU,CAAC,QAAS,MAAO,OAAO,QAAQ,WAAW,SAAS,KAAK,EAAE,IAAI,MAAO,GAAI;AACzF,CAAC;AA0CM,IAAM,uBAAuB;AAAA,EAClC,WAAW;AACb;",
|
|
8
|
+
"debugId": "C33D155A95A0CEF964756E2164756E21",
|
|
11
9
|
"names": []
|
|
12
10
|
}
|
package/dist/cjs/index.node.cjs
CHANGED
|
@@ -4,38 +4,59 @@ var __defProp = Object.defineProperty;
|
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
function __accessProp(key) {
|
|
8
|
+
return this[key];
|
|
9
|
+
}
|
|
10
|
+
var __toESMCache_node;
|
|
11
|
+
var __toESMCache_esm;
|
|
7
12
|
var __toESM = (mod, isNodeMode, target) => {
|
|
13
|
+
var canCache = mod != null && typeof mod === "object";
|
|
14
|
+
if (canCache) {
|
|
15
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
16
|
+
var cached = cache.get(mod);
|
|
17
|
+
if (cached)
|
|
18
|
+
return cached;
|
|
19
|
+
}
|
|
8
20
|
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
21
|
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
22
|
for (let key of __getOwnPropNames(mod))
|
|
11
23
|
if (!__hasOwnProp.call(to, key))
|
|
12
24
|
__defProp(to, key, {
|
|
13
|
-
get: (
|
|
25
|
+
get: __accessProp.bind(mod, key),
|
|
14
26
|
enumerable: true
|
|
15
27
|
});
|
|
28
|
+
if (canCache)
|
|
29
|
+
cache.set(mod, to);
|
|
16
30
|
return to;
|
|
17
31
|
};
|
|
18
|
-
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
19
32
|
var __toCommonJS = (from) => {
|
|
20
|
-
var entry = __moduleCache.get(from), desc;
|
|
33
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
21
34
|
if (entry)
|
|
22
35
|
return entry;
|
|
23
36
|
entry = __defProp({}, "__esModule", { value: true });
|
|
24
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
37
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
38
|
+
for (var key of __getOwnPropNames(from))
|
|
39
|
+
if (!__hasOwnProp.call(entry, key))
|
|
40
|
+
__defProp(entry, key, {
|
|
41
|
+
get: __accessProp.bind(from, key),
|
|
42
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
43
|
+
});
|
|
44
|
+
}
|
|
29
45
|
__moduleCache.set(from, entry);
|
|
30
46
|
return entry;
|
|
31
47
|
};
|
|
48
|
+
var __moduleCache;
|
|
49
|
+
var __returnValue = (v) => v;
|
|
50
|
+
function __exportSetter(name, newValue) {
|
|
51
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
52
|
+
}
|
|
32
53
|
var __export = (target, all) => {
|
|
33
54
|
for (var name in all)
|
|
34
55
|
__defProp(target, name, {
|
|
35
56
|
get: all[name],
|
|
36
57
|
enumerable: true,
|
|
37
58
|
configurable: true,
|
|
38
|
-
set: (
|
|
59
|
+
set: __exportSetter.bind(all, name)
|
|
39
60
|
});
|
|
40
61
|
};
|
|
41
62
|
|
|
@@ -217,27 +238,32 @@ var import_node_buffer = require("node:buffer");
|
|
|
217
238
|
var import_node_crypto4 = require("node:crypto");
|
|
218
239
|
var mammoth = __toESM(require("mammoth"));
|
|
219
240
|
var import_unpdf = require("unpdf");
|
|
241
|
+
// ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/native.js
|
|
242
|
+
var import_node_crypto = require("node:crypto");
|
|
243
|
+
var native_default = { randomUUID: import_node_crypto.randomUUID };
|
|
244
|
+
|
|
245
|
+
// ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/rng.js
|
|
246
|
+
var import_node_crypto2 = require("node:crypto");
|
|
247
|
+
var rnds8Pool = new Uint8Array(256);
|
|
248
|
+
var poolPtr = rnds8Pool.length;
|
|
249
|
+
function rng() {
|
|
250
|
+
if (poolPtr > rnds8Pool.length - 16) {
|
|
251
|
+
import_node_crypto2.randomFillSync(rnds8Pool);
|
|
252
|
+
poolPtr = 0;
|
|
253
|
+
}
|
|
254
|
+
return rnds8Pool.slice(poolPtr, poolPtr += 16);
|
|
255
|
+
}
|
|
220
256
|
|
|
221
|
-
// node_modules/uuid/dist-node/regex.js
|
|
257
|
+
// ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/regex.js
|
|
222
258
|
var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;
|
|
223
259
|
|
|
224
|
-
// node_modules/uuid/dist-node/validate.js
|
|
260
|
+
// ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/validate.js
|
|
225
261
|
function validate(uuid) {
|
|
226
262
|
return typeof uuid === "string" && regex_default.test(uuid);
|
|
227
263
|
}
|
|
228
264
|
var validate_default = validate;
|
|
229
265
|
|
|
230
|
-
// node_modules/uuid/dist-node/
|
|
231
|
-
function parse(uuid) {
|
|
232
|
-
if (!validate_default(uuid)) {
|
|
233
|
-
throw TypeError("Invalid UUID");
|
|
234
|
-
}
|
|
235
|
-
let v;
|
|
236
|
-
return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, v >>> 16 & 255, v >>> 8 & 255, v & 255, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255, v / 4294967296 & 255, v >>> 24 & 255, v >>> 16 & 255, v >>> 8 & 255, v & 255);
|
|
237
|
-
}
|
|
238
|
-
var parse_default = parse;
|
|
239
|
-
|
|
240
|
-
// node_modules/uuid/dist-node/stringify.js
|
|
266
|
+
// ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/stringify.js
|
|
241
267
|
var byteToHex = [];
|
|
242
268
|
for (let i = 0;i < 256; ++i) {
|
|
243
269
|
byteToHex.push((i + 256).toString(16).slice(1));
|
|
@@ -246,59 +272,7 @@ function unsafeStringify(arr, offset = 0) {
|
|
|
246
272
|
return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
|
|
247
273
|
}
|
|
248
274
|
|
|
249
|
-
// node_modules/uuid/dist-node/
|
|
250
|
-
var import_node_crypto = require("node:crypto");
|
|
251
|
-
var rnds8Pool = new Uint8Array(256);
|
|
252
|
-
var poolPtr = rnds8Pool.length;
|
|
253
|
-
function rng() {
|
|
254
|
-
if (poolPtr > rnds8Pool.length - 16) {
|
|
255
|
-
import_node_crypto.randomFillSync(rnds8Pool);
|
|
256
|
-
poolPtr = 0;
|
|
257
|
-
}
|
|
258
|
-
return rnds8Pool.slice(poolPtr, poolPtr += 16);
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
// node_modules/uuid/dist-node/v35.js
|
|
262
|
-
function stringToBytes(str) {
|
|
263
|
-
str = unescape(encodeURIComponent(str));
|
|
264
|
-
const bytes = new Uint8Array(str.length);
|
|
265
|
-
for (let i = 0;i < str.length; ++i) {
|
|
266
|
-
bytes[i] = str.charCodeAt(i);
|
|
267
|
-
}
|
|
268
|
-
return bytes;
|
|
269
|
-
}
|
|
270
|
-
var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
|
|
271
|
-
var URL2 = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
|
|
272
|
-
function v35(version, hash, value, namespace, buf, offset) {
|
|
273
|
-
const valueBytes = typeof value === "string" ? stringToBytes(value) : value;
|
|
274
|
-
const namespaceBytes = typeof namespace === "string" ? parse_default(namespace) : namespace;
|
|
275
|
-
if (typeof namespace === "string") {
|
|
276
|
-
namespace = parse_default(namespace);
|
|
277
|
-
}
|
|
278
|
-
if (namespace?.length !== 16) {
|
|
279
|
-
throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");
|
|
280
|
-
}
|
|
281
|
-
let bytes = new Uint8Array(16 + valueBytes.length);
|
|
282
|
-
bytes.set(namespaceBytes);
|
|
283
|
-
bytes.set(valueBytes, namespaceBytes.length);
|
|
284
|
-
bytes = hash(bytes);
|
|
285
|
-
bytes[6] = bytes[6] & 15 | version;
|
|
286
|
-
bytes[8] = bytes[8] & 63 | 128;
|
|
287
|
-
if (buf) {
|
|
288
|
-
offset = offset || 0;
|
|
289
|
-
for (let i = 0;i < 16; ++i) {
|
|
290
|
-
buf[offset + i] = bytes[i];
|
|
291
|
-
}
|
|
292
|
-
return buf;
|
|
293
|
-
}
|
|
294
|
-
return unsafeStringify(bytes);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
// node_modules/uuid/dist-node/native.js
|
|
298
|
-
var import_node_crypto2 = require("node:crypto");
|
|
299
|
-
var native_default = { randomUUID: import_node_crypto2.randomUUID };
|
|
300
|
-
|
|
301
|
-
// node_modules/uuid/dist-node/v4.js
|
|
275
|
+
// ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/v4.js
|
|
302
276
|
function _v4(options, buf, offset) {
|
|
303
277
|
options = options || {};
|
|
304
278
|
const rnds = options.random ?? options.rng?.() ?? rng();
|
|
@@ -326,7 +300,7 @@ function v4(options, buf, offset) {
|
|
|
326
300
|
return _v4(options, buf, offset);
|
|
327
301
|
}
|
|
328
302
|
var v4_default = v4;
|
|
329
|
-
// node_modules/uuid/dist-node/sha1.js
|
|
303
|
+
// ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/sha1.js
|
|
330
304
|
var import_node_crypto3 = require("node:crypto");
|
|
331
305
|
function sha1(bytes) {
|
|
332
306
|
if (Array.isArray(bytes)) {
|
|
@@ -338,7 +312,53 @@ function sha1(bytes) {
|
|
|
338
312
|
}
|
|
339
313
|
var sha1_default = sha1;
|
|
340
314
|
|
|
341
|
-
// node_modules/uuid/dist-node/
|
|
315
|
+
// ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/parse.js
|
|
316
|
+
function parse(uuid) {
|
|
317
|
+
if (!validate_default(uuid)) {
|
|
318
|
+
throw TypeError("Invalid UUID");
|
|
319
|
+
}
|
|
320
|
+
let v;
|
|
321
|
+
return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, v >>> 16 & 255, v >>> 8 & 255, v & 255, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 255, (v = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255, v / 4294967296 & 255, v >>> 24 & 255, v >>> 16 & 255, v >>> 8 & 255, v & 255);
|
|
322
|
+
}
|
|
323
|
+
var parse_default = parse;
|
|
324
|
+
|
|
325
|
+
// ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/v35.js
|
|
326
|
+
function stringToBytes(str) {
|
|
327
|
+
str = unescape(encodeURIComponent(str));
|
|
328
|
+
const bytes = new Uint8Array(str.length);
|
|
329
|
+
for (let i = 0;i < str.length; ++i) {
|
|
330
|
+
bytes[i] = str.charCodeAt(i);
|
|
331
|
+
}
|
|
332
|
+
return bytes;
|
|
333
|
+
}
|
|
334
|
+
var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
|
|
335
|
+
var URL2 = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
|
|
336
|
+
function v35(version, hash, value, namespace, buf, offset) {
|
|
337
|
+
const valueBytes = typeof value === "string" ? stringToBytes(value) : value;
|
|
338
|
+
const namespaceBytes = typeof namespace === "string" ? parse_default(namespace) : namespace;
|
|
339
|
+
if (typeof namespace === "string") {
|
|
340
|
+
namespace = parse_default(namespace);
|
|
341
|
+
}
|
|
342
|
+
if (namespace?.length !== 16) {
|
|
343
|
+
throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");
|
|
344
|
+
}
|
|
345
|
+
let bytes = new Uint8Array(16 + valueBytes.length);
|
|
346
|
+
bytes.set(namespaceBytes);
|
|
347
|
+
bytes.set(valueBytes, namespaceBytes.length);
|
|
348
|
+
bytes = hash(bytes);
|
|
349
|
+
bytes[6] = bytes[6] & 15 | version;
|
|
350
|
+
bytes[8] = bytes[8] & 63 | 128;
|
|
351
|
+
if (buf) {
|
|
352
|
+
offset = offset || 0;
|
|
353
|
+
for (let i = 0;i < 16; ++i) {
|
|
354
|
+
buf[offset + i] = bytes[i];
|
|
355
|
+
}
|
|
356
|
+
return buf;
|
|
357
|
+
}
|
|
358
|
+
return unsafeStringify(bytes);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/v5.js
|
|
342
362
|
function v5(value, namespace, buf, offset) {
|
|
343
363
|
return v35(80, sha1_default, value, namespace, buf, offset);
|
|
344
364
|
}
|
|
@@ -2033,7 +2053,7 @@ class KnowledgeService extends import_core4.Service {
|
|
|
2033
2053
|
import_core4.logger.info(`Text model: ${validatedConfig.TEXT_MODEL}`);
|
|
2034
2054
|
} else {
|
|
2035
2055
|
const usingPluginOpenAI = !process.env.EMBEDDING_PROVIDER;
|
|
2036
|
-
import_core4.logger.
|
|
2056
|
+
import_core4.logger.info("Basic Embedding mode - documents will not be enriched with context");
|
|
2037
2057
|
import_core4.logger.info("To enable contextual enrichment: Set CTX_KNOWLEDGE_ENABLED=true and configure TEXT_PROVIDER/TEXT_MODEL");
|
|
2038
2058
|
if (usingPluginOpenAI) {
|
|
2039
2059
|
import_core4.logger.info("Using plugin-openai configuration for embeddings");
|
|
@@ -2511,8 +2531,7 @@ var processKnowledgeAction = {
|
|
|
2511
2531
|
const __avText = __avTextRaw.toLowerCase();
|
|
2512
2532
|
const __avKeywords = ["process", "knowledge"];
|
|
2513
2533
|
const __avKeywordOk = __avKeywords.length > 0 && __avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));
|
|
2514
|
-
const
|
|
2515
|
-
const __avRegexOk = __avRegex.test(__avText);
|
|
2534
|
+
const __avRegexOk = /\b(?:process|knowledge)\b/i.test(__avText);
|
|
2516
2535
|
const __avSource = String(message?.content?.source ?? message?.source ?? "");
|
|
2517
2536
|
const __avExpectedSource = "";
|
|
2518
2537
|
const __avSourceOk = __avExpectedSource ? __avSource === __avExpectedSource : Boolean(__avSource || state || runtime?.agentId || runtime?.getService);
|
|
@@ -2671,8 +2690,7 @@ var searchKnowledgeAction = {
|
|
|
2671
2690
|
const __avText = __avTextRaw.toLowerCase();
|
|
2672
2691
|
const __avKeywords = ["search", "knowledge"];
|
|
2673
2692
|
const __avKeywordOk = __avKeywords.length > 0 && __avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));
|
|
2674
|
-
const
|
|
2675
|
-
const __avRegexOk = __avRegex.test(__avText);
|
|
2693
|
+
const __avRegexOk = /\b(?:search|knowledge)\b/i.test(__avText);
|
|
2676
2694
|
const __avSource = String(message?.content?.source ?? message?.source ?? "");
|
|
2677
2695
|
const __avExpectedSource = "";
|
|
2678
2696
|
const __avSourceOk = __avExpectedSource ? __avSource === __avExpectedSource : Boolean(__avSource || state || runtime?.agentId || runtime?.getService);
|
|
@@ -3752,5 +3770,5 @@ var knowledgePlugin = createKnowledgePlugin({
|
|
|
3752
3770
|
enableTests: true
|
|
3753
3771
|
});
|
|
3754
3772
|
|
|
3755
|
-
//# debugId=
|
|
3773
|
+
//# debugId=AEB51296868FE14064756E2164756E21
|
|
3756
3774
|
//# sourceMappingURL=index.node.cjs.map
|