@elizaos/plugin-knowledge 2.0.0-alpha.7 → 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.
@@ -169,11 +169,11 @@ import { Buffer as Buffer2 } from "node:buffer";
169
169
  import { createHash as createHash2 } from "node:crypto";
170
170
  import * as mammoth from "mammoth";
171
171
  import { extractText } from "unpdf";
172
- // node_modules/uuid/dist-node/native.js
172
+ // ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/native.js
173
173
  import { randomUUID } from "node:crypto";
174
174
  var native_default = { randomUUID };
175
175
 
176
- // node_modules/uuid/dist-node/rng.js
176
+ // ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/rng.js
177
177
  import { randomFillSync } from "node:crypto";
178
178
  var rnds8Pool = new Uint8Array(256);
179
179
  var poolPtr = rnds8Pool.length;
@@ -185,16 +185,16 @@ function rng() {
185
185
  return rnds8Pool.slice(poolPtr, poolPtr += 16);
186
186
  }
187
187
 
188
- // node_modules/uuid/dist-node/regex.js
188
+ // ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/regex.js
189
189
  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;
190
190
 
191
- // node_modules/uuid/dist-node/validate.js
191
+ // ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/validate.js
192
192
  function validate(uuid) {
193
193
  return typeof uuid === "string" && regex_default.test(uuid);
194
194
  }
195
195
  var validate_default = validate;
196
196
 
197
- // node_modules/uuid/dist-node/stringify.js
197
+ // ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/stringify.js
198
198
  var byteToHex = [];
199
199
  for (let i = 0;i < 256; ++i) {
200
200
  byteToHex.push((i + 256).toString(16).slice(1));
@@ -203,7 +203,7 @@ function unsafeStringify(arr, offset = 0) {
203
203
  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();
204
204
  }
205
205
 
206
- // node_modules/uuid/dist-node/v4.js
206
+ // ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/v4.js
207
207
  function _v4(options, buf, offset) {
208
208
  options = options || {};
209
209
  const rnds = options.random ?? options.rng?.() ?? rng();
@@ -231,7 +231,7 @@ function v4(options, buf, offset) {
231
231
  return _v4(options, buf, offset);
232
232
  }
233
233
  var v4_default = v4;
234
- // node_modules/uuid/dist-node/sha1.js
234
+ // ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/sha1.js
235
235
  import { createHash } from "node:crypto";
236
236
  function sha1(bytes) {
237
237
  if (Array.isArray(bytes)) {
@@ -243,7 +243,7 @@ function sha1(bytes) {
243
243
  }
244
244
  var sha1_default = sha1;
245
245
 
246
- // node_modules/uuid/dist-node/parse.js
246
+ // ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/parse.js
247
247
  function parse(uuid) {
248
248
  if (!validate_default(uuid)) {
249
249
  throw TypeError("Invalid UUID");
@@ -253,7 +253,7 @@ function parse(uuid) {
253
253
  }
254
254
  var parse_default = parse;
255
255
 
256
- // node_modules/uuid/dist-node/v35.js
256
+ // ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/v35.js
257
257
  function stringToBytes(str) {
258
258
  str = unescape(encodeURIComponent(str));
259
259
  const bytes = new Uint8Array(str.length);
@@ -289,7 +289,7 @@ function v35(version, hash, value, namespace, buf, offset) {
289
289
  return unsafeStringify(bytes);
290
290
  }
291
291
 
292
- // node_modules/uuid/dist-node/v5.js
292
+ // ../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/v5.js
293
293
  function v5(value, namespace, buf, offset) {
294
294
  return v35(80, sha1_default, value, namespace, buf, offset);
295
295
  }
@@ -1989,7 +1989,7 @@ class KnowledgeService extends Service {
1989
1989
  logger4.info(`Text model: ${validatedConfig.TEXT_MODEL}`);
1990
1990
  } else {
1991
1991
  const usingPluginOpenAI = !process.env.EMBEDDING_PROVIDER;
1992
- logger4.warn("Basic Embedding mode - documents will not be enriched with context");
1992
+ logger4.info("Basic Embedding mode - documents will not be enriched with context");
1993
1993
  logger4.info("To enable contextual enrichment: Set CTX_KNOWLEDGE_ENABLED=true and configure TEXT_PROVIDER/TEXT_MODEL");
1994
1994
  if (usingPluginOpenAI) {
1995
1995
  logger4.info("Using plugin-openai configuration for embeddings");
@@ -3717,5 +3717,5 @@ export {
3717
3717
  KnowledgeService
3718
3718
  };
3719
3719
 
3720
- //# debugId=156A1638D9D4ADEB64756E2164756E21
3720
+ //# debugId=40399672E222E6EF64756E2164756E21
3721
3721
  //# sourceMappingURL=index.node.js.map
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../actions.ts", "../../service.ts", "../../config.ts", "../../types.ts", "../../docs-loader.ts", "../../utils.ts", "../../node_modules/uuid/dist-node/native.js", "../../node_modules/uuid/dist-node/rng.js", "../../node_modules/uuid/dist-node/regex.js", "../../node_modules/uuid/dist-node/validate.js", "../../node_modules/uuid/dist-node/stringify.js", "../../node_modules/uuid/dist-node/v4.js", "../../node_modules/uuid/dist-node/sha1.js", "../../node_modules/uuid/dist-node/parse.js", "../../node_modules/uuid/dist-node/v35.js", "../../node_modules/uuid/dist-node/v5.js", "../../document-processor.ts", "../../ctx-embeddings.ts", "../../llm.ts", "../../documents-provider.ts", "../../provider.ts", "../../routes.ts", "../../index.ts"],
3
+ "sources": ["../../actions.ts", "../../service.ts", "../../config.ts", "../../types.ts", "../../docs-loader.ts", "../../utils.ts", "../../../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/native.js", "../../../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/rng.js", "../../../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/regex.js", "../../../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/validate.js", "../../../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/stringify.js", "../../../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/v4.js", "../../../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/sha1.js", "../../../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/parse.js", "../../../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/v35.js", "../../../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/v5.js", "../../document-processor.ts", "../../ctx-embeddings.ts", "../../llm.ts", "../../documents-provider.ts", "../../provider.ts", "../../routes.ts", "../../index.ts"],
4
4
  "sourcesContent": [
5
5
  "import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n Action,\n Content,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { logger, stringToUuid } from \"@elizaos/core\";\nimport { KnowledgeService } from \"./service.ts\";\nimport type { AddKnowledgeOptions } from \"./types.ts\";\n\nexport const processKnowledgeAction: Action = {\n name: \"PROCESS_KNOWLEDGE\",\n description:\n \"Process and store knowledge from a file path or text content into the knowledge base\",\n\n similes: [],\n\n examples: [\n [\n {\n name: \"user\",\n content: {\n text: \"Process the document at /path/to/document.pdf\",\n },\n },\n {\n name: \"assistant\",\n content: {\n text: \"I'll process the document at /path/to/document.pdf and add it to my knowledge base.\",\n actions: [\"PROCESS_KNOWLEDGE\"],\n },\n },\n ],\n [\n {\n name: \"user\",\n content: {\n text: \"Add this to your knowledge: The capital of France is Paris.\",\n },\n },\n {\n name: \"assistant\",\n content: {\n text: \"I'll add that information to my knowledge base.\",\n actions: [\"PROCESS_KNOWLEDGE\"],\n },\n },\n ],\n ],\n\n validate: async (runtime: any, message: any, state?: any, options?: any): Promise<boolean> => {\n const __avTextRaw = typeof message?.content?.text === \"string\" ? message.content.text : \"\";\n const __avText = __avTextRaw.toLowerCase();\n const __avKeywords = [\"process\", \"knowledge\"];\n const __avKeywordOk =\n __avKeywords.length > 0 && __avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));\n const __avRegexOk = /\\b(?:process|knowledge)\\b/i.test(__avText);\n const __avSource = String(message?.content?.source ?? message?.source ?? \"\");\n const __avExpectedSource = \"\";\n const __avSourceOk = __avExpectedSource\n ? __avSource === __avExpectedSource\n : Boolean(__avSource || state || runtime?.agentId || runtime?.getService);\n const __avOptions = options && typeof options === \"object\" ? options : {};\n const __avInputOk =\n __avText.trim().length > 0 ||\n Object.keys(__avOptions as Record<string, unknown>).length > 0 ||\n Boolean(message?.content && typeof message.content === \"object\");\n\n if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {\n return false;\n }\n\n const __avLegacyValidate = async (runtime: IAgentRuntime, message: Memory, _state?: State) => {\n const text = message.content.text?.toLowerCase() || \"\";\n\n const knowledgeKeywords = [\n \"process\",\n \"add\",\n \"upload\",\n \"document\",\n \"knowledge\",\n \"learn\",\n \"remember\",\n \"store\",\n \"ingest\",\n \"file\",\n ];\n\n const hasKeyword = knowledgeKeywords.some((keyword) => text.includes(keyword));\n\n const pathPattern = /(?:\\/[\\w.-]+)+|(?:[a-zA-Z]:[\\\\/][\\w\\s.-]+(?:[\\\\/][\\w\\s.-]+)*)/;\n const hasPath = pathPattern.test(text);\n\n const service = runtime.getService(KnowledgeService.serviceType);\n if (!service) {\n logger.warn(\"Knowledge service not available for PROCESS_KNOWLEDGE action\");\n return false;\n }\n\n return hasKeyword || hasPath;\n };\n try {\n return Boolean(await (__avLegacyValidate as any)(runtime, message, state, options));\n } catch {\n return false;\n }\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback\n ) => {\n try {\n const service = runtime.getService<KnowledgeService>(KnowledgeService.serviceType);\n if (!service) {\n throw new Error(\"Knowledge service not available\");\n }\n\n const text = message.content.text || \"\";\n\n const pathPattern = /(?:\\/[\\w.-]+)+|(?:[a-zA-Z]:[\\\\/][\\w\\s.-]+(?:[\\\\/][\\w\\s.-]+)*)/;\n const pathMatch = text.match(pathPattern);\n\n let response: Content;\n\n if (pathMatch) {\n const filePath = pathMatch[0];\n\n if (!fs.existsSync(filePath)) {\n response = {\n text: `I couldn't find the file at ${filePath}. Please check the path and try again.`,\n };\n\n if (callback) {\n await callback(response);\n }\n return;\n }\n\n const fileBuffer = fs.readFileSync(filePath);\n const fileName = path.basename(filePath);\n const fileExt = path.extname(filePath).toLowerCase();\n\n let contentType = \"text/plain\";\n if (fileExt === \".pdf\") contentType = \"application/pdf\";\n else if (fileExt === \".docx\")\n contentType = \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\n else if (fileExt === \".doc\") contentType = \"application/msword\";\n else if ([\".txt\", \".md\", \".tson\", \".xml\", \".csv\"].includes(fileExt))\n contentType = \"text/plain\";\n\n const knowledgeOptions: AddKnowledgeOptions = {\n clientDocumentId: stringToUuid(runtime.agentId + fileName + Date.now()),\n contentType,\n originalFilename: fileName,\n worldId: runtime.agentId,\n content: fileBuffer.toString(\"base64\"),\n roomId: message.roomId,\n entityId: message.entityId,\n };\n\n const result = await service.addKnowledge(knowledgeOptions);\n\n response = {\n text: `I've successfully processed the document \"${fileName}\". It has been split into ${result?.fragmentCount || 0} searchable fragments and added to my knowledge base.`,\n };\n } else {\n const knowledgeContent = text\n .replace(/^(add|store|remember|process|learn)\\s+(this|that|the following)?:?\\s*/i, \"\")\n .trim();\n\n if (!knowledgeContent) {\n response = {\n text: \"I need some content to add to my knowledge base. Please provide text or a file path.\",\n };\n\n if (callback) {\n await callback(response);\n }\n return;\n }\n\n const knowledgeOptions: AddKnowledgeOptions = {\n clientDocumentId: stringToUuid(`${runtime.agentId}text${Date.now()}user-knowledge`),\n contentType: \"text/plain\",\n originalFilename: \"user-knowledge.txt\",\n worldId: runtime.agentId,\n content: knowledgeContent,\n roomId: message.roomId,\n entityId: message.entityId,\n };\n\n await service.addKnowledge(knowledgeOptions);\n\n response = {\n text: `I've added that information to my knowledge base. It has been stored and indexed for future reference.`,\n };\n }\n\n if (callback) {\n await callback(response);\n }\n return { success: true, text: response.text };\n } catch (error) {\n logger.error({ error }, \"Error in PROCESS_KNOWLEDGE action\");\n\n const errorResponse: Content = {\n text: `I encountered an error while processing the knowledge: ${error instanceof Error ? error.message : String(error)}`,\n };\n\n if (callback) {\n await callback(errorResponse);\n }\n return { success: false, error: error instanceof Error ? error.message : String(error) };\n }\n },\n};\n\nexport const searchKnowledgeAction: Action = {\n name: \"SEARCH_KNOWLEDGE\",\n description: \"Search the knowledge base for specific information\",\n\n similes: [\n \"search knowledge\",\n \"find information\",\n \"look up\",\n \"query knowledge base\",\n \"search documents\",\n \"find in knowledge\",\n ],\n\n examples: [\n [\n {\n name: \"user\",\n content: {\n text: \"Search your knowledge for information about quantum computing\",\n },\n },\n {\n name: \"assistant\",\n content: {\n text: \"I'll search my knowledge base for information about quantum computing.\",\n actions: [\"SEARCH_KNOWLEDGE\"],\n },\n },\n ],\n ],\n\n validate: async (runtime: any, message: any, state?: any, options?: any): Promise<boolean> => {\n const __avTextRaw = typeof message?.content?.text === \"string\" ? message.content.text : \"\";\n const __avText = __avTextRaw.toLowerCase();\n const __avKeywords = [\"search\", \"knowledge\"];\n const __avKeywordOk =\n __avKeywords.length > 0 && __avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));\n const __avRegexOk = /\\b(?:search|knowledge)\\b/i.test(__avText);\n const __avSource = String(message?.content?.source ?? message?.source ?? \"\");\n const __avExpectedSource = \"\";\n const __avSourceOk = __avExpectedSource\n ? __avSource === __avExpectedSource\n : Boolean(__avSource || state || runtime?.agentId || runtime?.getService);\n const __avOptions = options && typeof options === \"object\" ? options : {};\n const __avInputOk =\n __avText.trim().length > 0 ||\n Object.keys(__avOptions as Record<string, unknown>).length > 0 ||\n Boolean(message?.content && typeof message.content === \"object\");\n\n if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {\n return false;\n }\n\n const __avLegacyValidate = async (runtime: IAgentRuntime, message: Memory, _state?: State) => {\n const text = message.content.text?.toLowerCase() || \"\";\n\n const searchKeywords = [\"search\", \"find\", \"look up\", \"query\", \"what do you know about\"];\n const knowledgeKeywords = [\"knowledge\", \"information\", \"document\", \"database\"];\n\n const hasSearchKeyword = searchKeywords.some((keyword) => text.includes(keyword));\n const hasKnowledgeKeyword = knowledgeKeywords.some((keyword) => text.includes(keyword));\n\n const service = runtime.getService(KnowledgeService.serviceType);\n if (!service) {\n return false;\n }\n\n return hasSearchKeyword && hasKnowledgeKeyword;\n };\n try {\n return Boolean(await (__avLegacyValidate as any)(runtime, message, state, options));\n } catch {\n return false;\n }\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback\n ) => {\n try {\n const service = runtime.getService<KnowledgeService>(KnowledgeService.serviceType);\n if (!service) {\n throw new Error(\"Knowledge service not available\");\n }\n\n const text = message.content.text || \"\";\n\n const query = text\n .replace(/^(search|find|look up|query)\\s+(your\\s+)?knowledge\\s+(base\\s+)?(for\\s+)?/i, \"\")\n .trim();\n\n if (!query) {\n const response: Content = {\n text: \"What would you like me to search for in my knowledge base?\",\n };\n\n if (callback) {\n await callback(response);\n }\n return;\n }\n\n const searchMessage: Memory = {\n ...message,\n content: {\n text: query,\n },\n };\n\n const results = await service.getKnowledge(searchMessage);\n\n let response: Content;\n\n if (results.length === 0) {\n response = {\n text: `I couldn't find any information about \"${query}\" in my knowledge base.`,\n };\n } else {\n const formattedResults = results\n .slice(0, 3)\n .map((item, index) => `${index + 1}. ${item.content.text}`)\n .join(\"\\n\\n\");\n\n response = {\n text: `Here's what I found about \"${query}\":\\n\\n${formattedResults}`,\n };\n }\n\n if (callback) {\n await callback(response);\n }\n return { success: true, text: response.text };\n } catch (error) {\n logger.error({ error }, \"Error in SEARCH_KNOWLEDGE action\");\n\n const errorResponse: Content = {\n text: `I encountered an error while searching the knowledge base: ${error instanceof Error ? error.message : String(error)}`,\n };\n\n if (callback) {\n await callback(errorResponse);\n }\n return { success: false, error: error instanceof Error ? error.message : String(error) };\n }\n },\n};\n\nexport const knowledgeActions = [processKnowledgeAction, searchKnowledgeAction];\n",
6
- "import {\n type Content,\n type CustomMetadata,\n createUniqueUuid,\n type FragmentMetadata,\n type IAgentRuntime,\n logger,\n type Memory,\n type MemoryMetadata,\n MemoryType,\n type Metadata,\n ModelType,\n Semaphore,\n Service,\n splitChunks,\n type UUID,\n} from \"@elizaos/core\";\nimport { validateModelConfig } from \"./config\";\nimport { loadDocsFromPath } from \"./docs-loader\";\nimport {\n createDocumentMemory,\n extractTextFromDocument,\n processFragmentsSynchronously,\n} from \"./document-processor.ts\";\nimport type { KnowledgeConfig, LoadResult, StoredKnowledgeItem } from \"./types\";\nimport type { AddKnowledgeOptions } from \"./types.ts\";\nimport { generateContentBasedId, isBinaryContentType, looksLikeBase64 } from \"./utils.ts\";\n\nexport class KnowledgeService extends Service {\n static readonly serviceType = \"knowledge\";\n public override config: Metadata = {};\n capabilityDescription =\n \"Provides Retrieval Augmented Generation capabilities, including knowledge upload and querying.\";\n\n private knowledgeProcessingSemaphore: Semaphore;\n\n constructor(runtime: IAgentRuntime, _config?: Partial<KnowledgeConfig>) {\n super(runtime);\n this.knowledgeProcessingSemaphore = new Semaphore(10);\n }\n\n private async loadInitialDocuments(): Promise<void> {\n logger.info(`Loading documents on startup for agent ${this.runtime.agentId}`);\n try {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n\n const knowledgePathSetting = this.runtime.getSetting(\"KNOWLEDGE_PATH\");\n const knowledgePath =\n typeof knowledgePathSetting === \"string\" ? knowledgePathSetting : undefined;\n\n const result: LoadResult = await loadDocsFromPath(\n this as KnowledgeService,\n this.runtime.agentId,\n undefined,\n knowledgePath\n );\n\n if (result.successful > 0) {\n logger.info(`Loaded ${result.successful} documents on startup`);\n }\n } catch (error) {\n logger.error({ error }, \"Error loading documents on startup\");\n }\n }\n\n static async start(runtime: IAgentRuntime): Promise<KnowledgeService> {\n logger.info(`Starting Knowledge service for agent: ${runtime.agentId}`);\n\n const validatedConfig = validateModelConfig(runtime);\n const ctxEnabled = validatedConfig.CTX_KNOWLEDGE_ENABLED;\n\n if (ctxEnabled) {\n logger.info(\n `Contextual Knowledge enabled: ${validatedConfig.EMBEDDING_PROVIDER || \"auto\"} embeddings, ${validatedConfig.TEXT_PROVIDER} text generation`\n );\n logger.info(`Text model: ${validatedConfig.TEXT_MODEL}`);\n } else {\n const usingPluginOpenAI = !process.env.EMBEDDING_PROVIDER;\n logger.warn(\"Basic Embedding mode - documents will not be enriched with context\");\n logger.info(\n \"To enable contextual enrichment: Set CTX_KNOWLEDGE_ENABLED=true and configure TEXT_PROVIDER/TEXT_MODEL\"\n );\n\n if (usingPluginOpenAI) {\n logger.info(\"Using plugin-openai configuration for embeddings\");\n } else {\n logger.info(\n `Using ${validatedConfig.EMBEDDING_PROVIDER} for embeddings with ${validatedConfig.TEXT_EMBEDDING_MODEL}`\n );\n }\n }\n\n const service = new KnowledgeService(runtime);\n service.config = validatedConfig;\n\n if (service.config.LOAD_DOCS_ON_STARTUP) {\n service.loadInitialDocuments().catch((error) => {\n logger.error({ error }, \"Error loading initial documents\");\n });\n }\n\n if (service.runtime.character?.knowledge && service.runtime.character.knowledge.length > 0) {\n const stringKnowledge = service.runtime.character.knowledge\n .map((item) => {\n // Handle new KnowledgeSourceItem format with item.case/item.value\n const itemAny = item as { item?: { case?: string; value?: string }; path?: string };\n if (itemAny?.item?.case === \"path\" && typeof itemAny.item.value === \"string\") {\n return itemAny.item.value;\n }\n // Handle legacy format with direct path property\n if (typeof itemAny?.path === \"string\") {\n return itemAny.path;\n }\n // Handle string items directly\n if (typeof item === \"string\") {\n return item;\n }\n return null;\n })\n .filter((item): item is string => item !== null);\n await service.processCharacterKnowledge(stringKnowledge).catch((err) => {\n logger.error({ error: err }, \"Error processing character knowledge\");\n });\n }\n\n return service;\n }\n\n static async stop(runtime: IAgentRuntime): Promise<void> {\n logger.info(`Stopping Knowledge service for agent: ${runtime.agentId}`);\n const service = runtime.getService(KnowledgeService.serviceType);\n if (!service) {\n logger.warn(`KnowledgeService not found for agent ${runtime.agentId} during stop.`);\n }\n if (service instanceof KnowledgeService) {\n await service.stop();\n }\n }\n\n async stop(): Promise<void> {\n logger.info(`Knowledge service stopping for agent: ${this.runtime.character?.name}`);\n }\n\n async addKnowledge(options: AddKnowledgeOptions): Promise<{\n clientDocumentId: string;\n storedDocumentMemoryId: UUID;\n fragmentCount: number;\n }> {\n const agentId = options.agentId || (this.runtime.agentId as UUID);\n\n const contentBasedId = generateContentBasedId(options.content, agentId, {\n includeFilename: options.originalFilename,\n contentType: options.contentType,\n maxChars: 2000,\n }) as UUID;\n\n logger.info(`Processing \"${options.originalFilename}\" (${options.contentType})`);\n\n try {\n const existingDocument = await this.runtime.getMemoryById(contentBasedId);\n if (existingDocument && existingDocument.metadata?.type === MemoryType.DOCUMENT) {\n logger.info(`\"${options.originalFilename}\" already exists - skipping`);\n\n const fragments = await this.runtime.getMemories({\n tableName: \"knowledge\",\n });\n\n const relatedFragments = fragments.filter(\n (f) =>\n f.metadata?.type === MemoryType.FRAGMENT &&\n (f.metadata as FragmentMetadata).documentId === contentBasedId\n );\n\n return {\n clientDocumentId: contentBasedId,\n storedDocumentMemoryId: existingDocument.id as UUID,\n fragmentCount: relatedFragments.length,\n };\n }\n } catch (error) {\n logger.debug(\n `Document ${contentBasedId} not found or error checking existence, proceeding with processing: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n\n return this.processDocument({\n ...options,\n clientDocumentId: contentBasedId,\n });\n }\n\n private async processDocument({\n agentId: passedAgentId,\n clientDocumentId,\n contentType,\n originalFilename,\n worldId,\n content,\n roomId,\n entityId,\n metadata,\n }: AddKnowledgeOptions): Promise<{\n clientDocumentId: string;\n storedDocumentMemoryId: UUID;\n fragmentCount: number;\n }> {\n const agentId = passedAgentId || (this.runtime.agentId as UUID);\n\n try {\n logger.debug(\n `Processing document ${originalFilename} (type: ${contentType}) for agent: ${agentId}`\n );\n\n let fileBuffer: Buffer | null = null;\n let extractedText: string;\n let documentContentToStore: string;\n const isPdfFile =\n contentType === \"application/pdf\" || originalFilename.toLowerCase().endsWith(\".pdf\");\n\n if (isPdfFile) {\n try {\n fileBuffer = Buffer.from(content, \"base64\");\n } catch (e) {\n logger.error({ error: e }, `Failed to convert base64 to buffer for ${originalFilename}`);\n throw new Error(`Invalid base64 content for PDF file ${originalFilename}`);\n }\n extractedText = await extractTextFromDocument(fileBuffer, contentType, originalFilename);\n documentContentToStore = content;\n } else if (isBinaryContentType(contentType, originalFilename)) {\n try {\n fileBuffer = Buffer.from(content, \"base64\");\n } catch (e) {\n logger.error({ error: e }, `Failed to convert base64 to buffer for ${originalFilename}`);\n throw new Error(`Invalid base64 content for binary file ${originalFilename}`);\n }\n extractedText = await extractTextFromDocument(fileBuffer, contentType, originalFilename);\n documentContentToStore = extractedText;\n } else {\n if (looksLikeBase64(content)) {\n try {\n const decodedBuffer = Buffer.from(content, \"base64\");\n const decodedText = decodedBuffer.toString(\"utf8\");\n\n const invalidCharCount = (decodedText.match(/\\ufffd/g) || []).length;\n const textLength = decodedText.length;\n\n if (invalidCharCount > 0 && invalidCharCount / textLength > 0.1) {\n throw new Error(\"Decoded content contains too many invalid characters\");\n }\n\n logger.debug(`Successfully decoded base64 content for text file: ${originalFilename}`);\n extractedText = decodedText;\n documentContentToStore = decodedText;\n } catch (e) {\n logger.error(\n { error: e instanceof Error ? e : new Error(String(e)) },\n `Failed to decode base64 for ${originalFilename}`\n );\n throw new Error(\n `File ${originalFilename} appears to be corrupted or incorrectly encoded`\n );\n }\n } else {\n logger.debug(`Treating content as plain text for file: ${originalFilename}`);\n extractedText = content;\n documentContentToStore = content;\n }\n }\n\n if (!extractedText || extractedText.trim() === \"\") {\n throw new Error(\n `No text content extracted from ${originalFilename} (type: ${contentType})`\n );\n }\n\n const documentMemory = createDocumentMemory({\n text: documentContentToStore,\n agentId,\n clientDocumentId,\n originalFilename,\n contentType,\n worldId,\n fileSize: fileBuffer ? fileBuffer.length : extractedText.length,\n documentId: clientDocumentId,\n customMetadata: metadata,\n });\n\n const memoryWithScope = {\n ...documentMemory,\n id: clientDocumentId,\n agentId: agentId,\n roomId: roomId || agentId,\n entityId: entityId || agentId,\n };\n\n await this.runtime.createMemory(memoryWithScope, \"documents\");\n\n const fragmentCount = await processFragmentsSynchronously({\n runtime: this.runtime,\n documentId: clientDocumentId,\n fullDocumentText: extractedText,\n agentId,\n contentType,\n roomId: roomId || agentId,\n entityId: entityId || agentId,\n worldId: worldId || agentId,\n documentTitle: originalFilename,\n });\n\n logger.debug(`\"${originalFilename}\" stored with ${fragmentCount} fragments`);\n\n return {\n clientDocumentId,\n storedDocumentMemoryId: memoryWithScope.id as UUID,\n fragmentCount,\n };\n } catch (error) {\n logger.error({ error }, `Error processing document ${originalFilename}`);\n throw error;\n }\n }\n\n async checkExistingKnowledge(knowledgeId: UUID): Promise<boolean> {\n const existingDocument = await this.runtime.getMemoryById(knowledgeId);\n return !!existingDocument;\n }\n\n async getKnowledge(\n message: Memory,\n scope?: { roomId?: UUID; worldId?: UUID; entityId?: UUID }\n ): Promise<StoredKnowledgeItem[]> {\n if (!message?.content?.text || message?.content?.text.trim().length === 0) {\n logger.warn(\"Invalid or empty message content for knowledge query\");\n return [];\n }\n\n const embedding = await this.runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: message.content.text,\n });\n\n const filterScope: { roomId?: UUID; worldId?: UUID; entityId?: UUID } = {};\n if (scope?.roomId) filterScope.roomId = scope.roomId;\n if (scope?.worldId) filterScope.worldId = scope.worldId;\n if (scope?.entityId) filterScope.entityId = scope.entityId;\n\n const fragments = await this.runtime.searchMemories({\n tableName: \"knowledge\",\n embedding,\n query: message.content.text,\n ...filterScope,\n count: 20,\n match_threshold: 0.1,\n });\n\n return fragments\n .filter((fragment) => fragment.id !== undefined)\n .map((fragment) => ({\n id: fragment.id as UUID,\n content: fragment.content as Content,\n similarity: fragment.similarity,\n metadata: fragment.metadata,\n worldId: fragment.worldId,\n })) as StoredKnowledgeItem[];\n }\n\n async enrichConversationMemoryWithRAG(\n memoryId: UUID,\n ragMetadata: {\n retrievedFragments: Array<{\n fragmentId: UUID;\n documentTitle: string;\n similarityScore?: number;\n contentPreview: string;\n }>;\n queryText: string;\n totalFragments: number;\n retrievalTimestamp: number;\n }\n ): Promise<void> {\n try {\n const existingMemory = await this.runtime.getMemoryById(memoryId);\n if (!existingMemory) {\n logger.warn(`Cannot enrich memory ${memoryId} - memory not found`);\n return;\n }\n\n const ragUsageData = {\n retrievedFragments: ragMetadata.retrievedFragments,\n queryText: ragMetadata.queryText,\n totalFragments: ragMetadata.totalFragments,\n retrievalTimestamp: ragMetadata.retrievalTimestamp,\n usedInResponse: true,\n };\n const updatedMetadata: CustomMetadata = {\n ...(existingMemory.metadata as CustomMetadata),\n knowledgeUsed: true,\n ragUsage: JSON.stringify(ragUsageData),\n timestamp: existingMemory.metadata?.timestamp ?? Date.now(),\n type: MemoryType.CUSTOM,\n };\n\n await this.runtime.updateMemory({\n id: memoryId,\n metadata: updatedMetadata,\n });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n logger.warn(\n `Failed to enrich conversation memory ${memoryId} with RAG data: ${errorMessage}`\n );\n }\n }\n\n private pendingRAGEnrichment: Array<{\n ragMetadata: {\n retrievedFragments: Array<{\n fragmentId: UUID;\n documentTitle: string;\n similarityScore?: number;\n contentPreview: string;\n }>;\n queryText: string;\n totalFragments: number;\n retrievalTimestamp: number;\n };\n timestamp: number;\n }> = [];\n\n setPendingRAGMetadata(ragMetadata: {\n retrievedFragments: Array<{\n fragmentId: UUID;\n documentTitle: string;\n similarityScore?: number;\n contentPreview: string;\n }>;\n queryText: string;\n totalFragments: number;\n retrievalTimestamp: number;\n }): void {\n const now = Date.now();\n this.pendingRAGEnrichment = this.pendingRAGEnrichment.filter(\n (entry) => now - entry.timestamp < 30000\n );\n\n this.pendingRAGEnrichment.push({\n ragMetadata,\n timestamp: now,\n });\n }\n\n async enrichRecentMemoriesWithPendingRAG(): Promise<void> {\n if (this.pendingRAGEnrichment.length === 0) {\n return;\n }\n\n try {\n const recentMemories = await this.runtime.getMemories({\n tableName: \"messages\",\n count: 10,\n });\n\n const now = Date.now();\n const recentConversationMemories = recentMemories\n .filter(\n (memory) =>\n memory.metadata?.type === \"message\" &&\n now - (memory.createdAt || 0) < 10000 &&\n !(memory.metadata && \"ragUsage\" in memory.metadata && memory.metadata.ragUsage)\n )\n .sort((a, b) => (b.createdAt || 0) - (a.createdAt || 0));\n\n for (const pendingEntry of this.pendingRAGEnrichment) {\n const matchingMemory = recentConversationMemories.find(\n (memory) => (memory.createdAt || 0) > pendingEntry.timestamp\n );\n\n if (matchingMemory?.id) {\n await this.enrichConversationMemoryWithRAG(matchingMemory.id, pendingEntry.ragMetadata);\n\n const index = this.pendingRAGEnrichment.indexOf(pendingEntry);\n if (index > -1) {\n this.pendingRAGEnrichment.splice(index, 1);\n }\n }\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n logger.warn(`Error enriching recent memories with RAG data: ${errorMessage}`);\n }\n }\n\n async processCharacterKnowledge(items: string[]): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n logger.info(`Processing ${items.length} character knowledge items`);\n\n const processingPromises = items.map(async (item) => {\n await this.knowledgeProcessingSemaphore.acquire();\n try {\n const knowledgeId = generateContentBasedId(item, this.runtime.agentId, {\n maxChars: 2000,\n includeFilename: \"character-knowledge\",\n }) as UUID;\n\n if (await this.checkExistingKnowledge(knowledgeId)) {\n return;\n }\n\n let metadata: CustomMetadata = {\n type: MemoryType.CUSTOM,\n timestamp: Date.now(),\n source: \"character\",\n };\n\n const pathMatch = item.match(/^Path: (.+?)(?:\\n|\\r\\n)/);\n if (pathMatch) {\n const filePath = pathMatch[1].trim();\n const extension = filePath.split(\".\").pop() || \"\";\n const filename = filePath.split(\"/\").pop() || \"\";\n const title = filename.replace(`.${extension}`, \"\");\n metadata = {\n ...metadata,\n path: filePath,\n filename: filename,\n fileExt: extension,\n title: title,\n fileType: `text/${extension || \"plain\"}`,\n fileSize: item.length,\n };\n }\n\n await this._internalAddKnowledge(\n {\n id: knowledgeId,\n content: {\n text: item,\n } as Content,\n metadata,\n },\n undefined,\n {\n roomId: this.runtime.agentId,\n entityId: this.runtime.agentId,\n worldId: this.runtime.agentId,\n }\n );\n } catch (error) {\n logger.error({ error }, \"Error processing character knowledge\");\n } finally {\n this.knowledgeProcessingSemaphore.release();\n }\n });\n\n await Promise.all(processingPromises);\n }\n\n async _internalAddKnowledge(\n item: StoredKnowledgeItem,\n options = {\n targetTokens: 1500,\n overlap: 200,\n modelContextSize: 4096,\n },\n scope = {\n roomId: this.runtime.agentId,\n entityId: this.runtime.agentId,\n worldId: this.runtime.agentId,\n }\n ): Promise<void> {\n const finalScope = {\n roomId: scope?.roomId ?? this.runtime.agentId,\n worldId: scope?.worldId ?? this.runtime.agentId,\n entityId: scope?.entityId ?? this.runtime.agentId,\n };\n\n const documentMetadata = {\n ...(item.metadata ?? {}),\n type: MemoryType.CUSTOM,\n documentId: item.id,\n };\n\n const documentMemory: Memory = {\n id: item.id,\n agentId: this.runtime.agentId,\n roomId: finalScope.roomId,\n worldId: finalScope.worldId,\n entityId: finalScope.entityId,\n content: item.content as unknown as Content,\n metadata: documentMetadata as unknown as MemoryMetadata,\n createdAt: Date.now(),\n };\n\n const existingDocument = await this.runtime.getMemoryById(item.id);\n if (existingDocument) {\n await this.runtime.updateMemory({\n ...documentMemory,\n id: item.id,\n });\n } else {\n await this.runtime.createMemory(documentMemory, \"documents\");\n }\n\n const fragments = await this.splitAndCreateFragments(\n item,\n options.targetTokens,\n options.overlap,\n finalScope\n );\n\n for (const fragment of fragments) {\n try {\n await this.processDocumentFragment(fragment);\n } catch (error) {\n logger.error(\n { error },\n `KnowledgeService: Error processing fragment ${fragment.id} for document ${item.id}`\n );\n }\n }\n }\n\n private async processDocumentFragment(fragment: Memory): Promise<void> {\n try {\n await this.runtime.addEmbeddingToMemory(fragment);\n\n await this.runtime.createMemory(fragment, \"knowledge\");\n } catch (error) {\n logger.error({ error }, `Error processing fragment ${fragment.id}`);\n throw error;\n }\n }\n\n private async splitAndCreateFragments(\n document: StoredKnowledgeItem,\n targetTokens: number,\n overlap: number,\n scope: { roomId: UUID; worldId: UUID; entityId: UUID }\n ): Promise<Memory[]> {\n if (!document.content.text) {\n return [];\n }\n\n const text = document.content.text;\n const chunks = await splitChunks(text, targetTokens, overlap);\n\n return chunks.map((chunk, index) => {\n const fragmentIdContent = `${document.id}-fragment-${index}-${Date.now()}`;\n const fragmentId = createUniqueUuid(this.runtime, fragmentIdContent);\n\n return {\n id: fragmentId,\n entityId: scope.entityId,\n agentId: this.runtime.agentId,\n roomId: scope.roomId,\n worldId: scope.worldId,\n content: {\n text: chunk,\n },\n metadata: {\n ...(document.metadata || {}),\n type: MemoryType.FRAGMENT,\n documentId: document.id,\n position: index,\n timestamp: Date.now(),\n },\n createdAt: Date.now(),\n };\n });\n }\n\n async getMemories(params: {\n tableName: string;\n roomId?: UUID;\n count?: number;\n offset?: number;\n end?: number;\n }): Promise<Memory[]> {\n return this.runtime.getMemories({\n ...params,\n agentId: this.runtime.agentId,\n });\n }\n\n async countMemories(params: {\n tableName: string;\n roomId?: UUID;\n unique?: boolean;\n }): Promise<number> {\n const roomId = params.roomId || this.runtime.agentId;\n const unique = params.unique ?? false;\n const tableName = params.tableName;\n\n return this.runtime.countMemories(roomId, unique, tableName);\n }\n\n async deleteMemory(memoryId: UUID): Promise<void> {\n await this.runtime.deleteMemory(memoryId);\n }\n}\n",
6
+ "import {\n type Content,\n type CustomMetadata,\n createUniqueUuid,\n type FragmentMetadata,\n type IAgentRuntime,\n logger,\n type Memory,\n type MemoryMetadata,\n MemoryType,\n type Metadata,\n ModelType,\n Semaphore,\n Service,\n splitChunks,\n type UUID,\n} from \"@elizaos/core\";\nimport { validateModelConfig } from \"./config\";\nimport { loadDocsFromPath } from \"./docs-loader\";\nimport {\n createDocumentMemory,\n extractTextFromDocument,\n processFragmentsSynchronously,\n} from \"./document-processor.ts\";\nimport type { KnowledgeConfig, LoadResult, StoredKnowledgeItem } from \"./types\";\nimport type { AddKnowledgeOptions } from \"./types.ts\";\nimport { generateContentBasedId, isBinaryContentType, looksLikeBase64 } from \"./utils.ts\";\n\nexport class KnowledgeService extends Service {\n static readonly serviceType = \"knowledge\";\n public override config: Metadata = {};\n capabilityDescription =\n \"Provides Retrieval Augmented Generation capabilities, including knowledge upload and querying.\";\n\n private knowledgeProcessingSemaphore: Semaphore;\n\n constructor(runtime: IAgentRuntime, _config?: Partial<KnowledgeConfig>) {\n super(runtime);\n this.knowledgeProcessingSemaphore = new Semaphore(10);\n }\n\n private async loadInitialDocuments(): Promise<void> {\n logger.info(`Loading documents on startup for agent ${this.runtime.agentId}`);\n try {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n\n const knowledgePathSetting = this.runtime.getSetting(\"KNOWLEDGE_PATH\");\n const knowledgePath =\n typeof knowledgePathSetting === \"string\" ? knowledgePathSetting : undefined;\n\n const result: LoadResult = await loadDocsFromPath(\n this as KnowledgeService,\n this.runtime.agentId,\n undefined,\n knowledgePath\n );\n\n if (result.successful > 0) {\n logger.info(`Loaded ${result.successful} documents on startup`);\n }\n } catch (error) {\n logger.error({ error }, \"Error loading documents on startup\");\n }\n }\n\n static async start(runtime: IAgentRuntime): Promise<KnowledgeService> {\n logger.info(`Starting Knowledge service for agent: ${runtime.agentId}`);\n\n const validatedConfig = validateModelConfig(runtime);\n const ctxEnabled = validatedConfig.CTX_KNOWLEDGE_ENABLED;\n\n if (ctxEnabled) {\n logger.info(\n `Contextual Knowledge enabled: ${validatedConfig.EMBEDDING_PROVIDER || \"auto\"} embeddings, ${validatedConfig.TEXT_PROVIDER} text generation`\n );\n logger.info(`Text model: ${validatedConfig.TEXT_MODEL}`);\n } else {\n const usingPluginOpenAI = !process.env.EMBEDDING_PROVIDER;\n logger.info(\"Basic Embedding mode - documents will not be enriched with context\");\n logger.info(\n \"To enable contextual enrichment: Set CTX_KNOWLEDGE_ENABLED=true and configure TEXT_PROVIDER/TEXT_MODEL\"\n );\n\n if (usingPluginOpenAI) {\n logger.info(\"Using plugin-openai configuration for embeddings\");\n } else {\n logger.info(\n `Using ${validatedConfig.EMBEDDING_PROVIDER} for embeddings with ${validatedConfig.TEXT_EMBEDDING_MODEL}`\n );\n }\n }\n\n const service = new KnowledgeService(runtime);\n service.config = validatedConfig;\n\n if (service.config.LOAD_DOCS_ON_STARTUP) {\n service.loadInitialDocuments().catch((error) => {\n logger.error({ error }, \"Error loading initial documents\");\n });\n }\n\n if (service.runtime.character?.knowledge && service.runtime.character.knowledge.length > 0) {\n const stringKnowledge = service.runtime.character.knowledge\n .map((item) => {\n // Handle new KnowledgeSourceItem format with item.case/item.value\n const itemAny = item as { item?: { case?: string; value?: string }; path?: string };\n if (itemAny?.item?.case === \"path\" && typeof itemAny.item.value === \"string\") {\n return itemAny.item.value;\n }\n // Handle legacy format with direct path property\n if (typeof itemAny?.path === \"string\") {\n return itemAny.path;\n }\n // Handle string items directly\n if (typeof item === \"string\") {\n return item;\n }\n return null;\n })\n .filter((item): item is string => item !== null);\n await service.processCharacterKnowledge(stringKnowledge).catch((err) => {\n logger.error({ error: err }, \"Error processing character knowledge\");\n });\n }\n\n return service;\n }\n\n static async stop(runtime: IAgentRuntime): Promise<void> {\n logger.info(`Stopping Knowledge service for agent: ${runtime.agentId}`);\n const service = runtime.getService(KnowledgeService.serviceType);\n if (!service) {\n logger.warn(`KnowledgeService not found for agent ${runtime.agentId} during stop.`);\n }\n if (service instanceof KnowledgeService) {\n await service.stop();\n }\n }\n\n async stop(): Promise<void> {\n logger.info(`Knowledge service stopping for agent: ${this.runtime.character?.name}`);\n }\n\n async addKnowledge(options: AddKnowledgeOptions): Promise<{\n clientDocumentId: string;\n storedDocumentMemoryId: UUID;\n fragmentCount: number;\n }> {\n const agentId = options.agentId || (this.runtime.agentId as UUID);\n\n const contentBasedId = generateContentBasedId(options.content, agentId, {\n includeFilename: options.originalFilename,\n contentType: options.contentType,\n maxChars: 2000,\n }) as UUID;\n\n logger.info(`Processing \"${options.originalFilename}\" (${options.contentType})`);\n\n try {\n const existingDocument = await this.runtime.getMemoryById(contentBasedId);\n if (existingDocument && existingDocument.metadata?.type === MemoryType.DOCUMENT) {\n logger.info(`\"${options.originalFilename}\" already exists - skipping`);\n\n const fragments = await this.runtime.getMemories({\n tableName: \"knowledge\",\n });\n\n const relatedFragments = fragments.filter(\n (f) =>\n f.metadata?.type === MemoryType.FRAGMENT &&\n (f.metadata as FragmentMetadata).documentId === contentBasedId\n );\n\n return {\n clientDocumentId: contentBasedId,\n storedDocumentMemoryId: existingDocument.id as UUID,\n fragmentCount: relatedFragments.length,\n };\n }\n } catch (error) {\n logger.debug(\n `Document ${contentBasedId} not found or error checking existence, proceeding with processing: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n\n return this.processDocument({\n ...options,\n clientDocumentId: contentBasedId,\n });\n }\n\n private async processDocument({\n agentId: passedAgentId,\n clientDocumentId,\n contentType,\n originalFilename,\n worldId,\n content,\n roomId,\n entityId,\n metadata,\n }: AddKnowledgeOptions): Promise<{\n clientDocumentId: string;\n storedDocumentMemoryId: UUID;\n fragmentCount: number;\n }> {\n const agentId = passedAgentId || (this.runtime.agentId as UUID);\n\n try {\n logger.debug(\n `Processing document ${originalFilename} (type: ${contentType}) for agent: ${agentId}`\n );\n\n let fileBuffer: Buffer | null = null;\n let extractedText: string;\n let documentContentToStore: string;\n const isPdfFile =\n contentType === \"application/pdf\" || originalFilename.toLowerCase().endsWith(\".pdf\");\n\n if (isPdfFile) {\n try {\n fileBuffer = Buffer.from(content, \"base64\");\n } catch (e) {\n logger.error({ error: e }, `Failed to convert base64 to buffer for ${originalFilename}`);\n throw new Error(`Invalid base64 content for PDF file ${originalFilename}`);\n }\n extractedText = await extractTextFromDocument(fileBuffer, contentType, originalFilename);\n documentContentToStore = content;\n } else if (isBinaryContentType(contentType, originalFilename)) {\n try {\n fileBuffer = Buffer.from(content, \"base64\");\n } catch (e) {\n logger.error({ error: e }, `Failed to convert base64 to buffer for ${originalFilename}`);\n throw new Error(`Invalid base64 content for binary file ${originalFilename}`);\n }\n extractedText = await extractTextFromDocument(fileBuffer, contentType, originalFilename);\n documentContentToStore = extractedText;\n } else {\n if (looksLikeBase64(content)) {\n try {\n const decodedBuffer = Buffer.from(content, \"base64\");\n const decodedText = decodedBuffer.toString(\"utf8\");\n\n const invalidCharCount = (decodedText.match(/\\ufffd/g) || []).length;\n const textLength = decodedText.length;\n\n if (invalidCharCount > 0 && invalidCharCount / textLength > 0.1) {\n throw new Error(\"Decoded content contains too many invalid characters\");\n }\n\n logger.debug(`Successfully decoded base64 content for text file: ${originalFilename}`);\n extractedText = decodedText;\n documentContentToStore = decodedText;\n } catch (e) {\n logger.error(\n { error: e instanceof Error ? e : new Error(String(e)) },\n `Failed to decode base64 for ${originalFilename}`\n );\n throw new Error(\n `File ${originalFilename} appears to be corrupted or incorrectly encoded`\n );\n }\n } else {\n logger.debug(`Treating content as plain text for file: ${originalFilename}`);\n extractedText = content;\n documentContentToStore = content;\n }\n }\n\n if (!extractedText || extractedText.trim() === \"\") {\n throw new Error(\n `No text content extracted from ${originalFilename} (type: ${contentType})`\n );\n }\n\n const documentMemory = createDocumentMemory({\n text: documentContentToStore,\n agentId,\n clientDocumentId,\n originalFilename,\n contentType,\n worldId,\n fileSize: fileBuffer ? fileBuffer.length : extractedText.length,\n documentId: clientDocumentId,\n customMetadata: metadata,\n });\n\n const memoryWithScope = {\n ...documentMemory,\n id: clientDocumentId,\n agentId: agentId,\n roomId: roomId || agentId,\n entityId: entityId || agentId,\n };\n\n await this.runtime.createMemory(memoryWithScope, \"documents\");\n\n const fragmentCount = await processFragmentsSynchronously({\n runtime: this.runtime,\n documentId: clientDocumentId,\n fullDocumentText: extractedText,\n agentId,\n contentType,\n roomId: roomId || agentId,\n entityId: entityId || agentId,\n worldId: worldId || agentId,\n documentTitle: originalFilename,\n });\n\n logger.debug(`\"${originalFilename}\" stored with ${fragmentCount} fragments`);\n\n return {\n clientDocumentId,\n storedDocumentMemoryId: memoryWithScope.id as UUID,\n fragmentCount,\n };\n } catch (error) {\n logger.error({ error }, `Error processing document ${originalFilename}`);\n throw error;\n }\n }\n\n async checkExistingKnowledge(knowledgeId: UUID): Promise<boolean> {\n const existingDocument = await this.runtime.getMemoryById(knowledgeId);\n return !!existingDocument;\n }\n\n async getKnowledge(\n message: Memory,\n scope?: { roomId?: UUID; worldId?: UUID; entityId?: UUID }\n ): Promise<StoredKnowledgeItem[]> {\n if (!message?.content?.text || message?.content?.text.trim().length === 0) {\n logger.warn(\"Invalid or empty message content for knowledge query\");\n return [];\n }\n\n const embedding = await this.runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: message.content.text,\n });\n\n const filterScope: { roomId?: UUID; worldId?: UUID; entityId?: UUID } = {};\n if (scope?.roomId) filterScope.roomId = scope.roomId;\n if (scope?.worldId) filterScope.worldId = scope.worldId;\n if (scope?.entityId) filterScope.entityId = scope.entityId;\n\n const fragments = await this.runtime.searchMemories({\n tableName: \"knowledge\",\n embedding,\n query: message.content.text,\n ...filterScope,\n count: 20,\n match_threshold: 0.1,\n });\n\n return fragments\n .filter((fragment) => fragment.id !== undefined)\n .map((fragment) => ({\n id: fragment.id as UUID,\n content: fragment.content as Content,\n similarity: fragment.similarity,\n metadata: fragment.metadata,\n worldId: fragment.worldId,\n })) as StoredKnowledgeItem[];\n }\n\n async enrichConversationMemoryWithRAG(\n memoryId: UUID,\n ragMetadata: {\n retrievedFragments: Array<{\n fragmentId: UUID;\n documentTitle: string;\n similarityScore?: number;\n contentPreview: string;\n }>;\n queryText: string;\n totalFragments: number;\n retrievalTimestamp: number;\n }\n ): Promise<void> {\n try {\n const existingMemory = await this.runtime.getMemoryById(memoryId);\n if (!existingMemory) {\n logger.warn(`Cannot enrich memory ${memoryId} - memory not found`);\n return;\n }\n\n const ragUsageData = {\n retrievedFragments: ragMetadata.retrievedFragments,\n queryText: ragMetadata.queryText,\n totalFragments: ragMetadata.totalFragments,\n retrievalTimestamp: ragMetadata.retrievalTimestamp,\n usedInResponse: true,\n };\n const updatedMetadata: CustomMetadata = {\n ...(existingMemory.metadata as CustomMetadata),\n knowledgeUsed: true,\n ragUsage: JSON.stringify(ragUsageData),\n timestamp: existingMemory.metadata?.timestamp ?? Date.now(),\n type: MemoryType.CUSTOM,\n };\n\n await this.runtime.updateMemory({\n id: memoryId,\n metadata: updatedMetadata,\n });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n logger.warn(\n `Failed to enrich conversation memory ${memoryId} with RAG data: ${errorMessage}`\n );\n }\n }\n\n private pendingRAGEnrichment: Array<{\n ragMetadata: {\n retrievedFragments: Array<{\n fragmentId: UUID;\n documentTitle: string;\n similarityScore?: number;\n contentPreview: string;\n }>;\n queryText: string;\n totalFragments: number;\n retrievalTimestamp: number;\n };\n timestamp: number;\n }> = [];\n\n setPendingRAGMetadata(ragMetadata: {\n retrievedFragments: Array<{\n fragmentId: UUID;\n documentTitle: string;\n similarityScore?: number;\n contentPreview: string;\n }>;\n queryText: string;\n totalFragments: number;\n retrievalTimestamp: number;\n }): void {\n const now = Date.now();\n this.pendingRAGEnrichment = this.pendingRAGEnrichment.filter(\n (entry) => now - entry.timestamp < 30000\n );\n\n this.pendingRAGEnrichment.push({\n ragMetadata,\n timestamp: now,\n });\n }\n\n async enrichRecentMemoriesWithPendingRAG(): Promise<void> {\n if (this.pendingRAGEnrichment.length === 0) {\n return;\n }\n\n try {\n const recentMemories = await this.runtime.getMemories({\n tableName: \"messages\",\n count: 10,\n });\n\n const now = Date.now();\n const recentConversationMemories = recentMemories\n .filter(\n (memory) =>\n memory.metadata?.type === \"message\" &&\n now - (memory.createdAt || 0) < 10000 &&\n !(memory.metadata && \"ragUsage\" in memory.metadata && memory.metadata.ragUsage)\n )\n .sort((a, b) => (b.createdAt || 0) - (a.createdAt || 0));\n\n for (const pendingEntry of this.pendingRAGEnrichment) {\n const matchingMemory = recentConversationMemories.find(\n (memory) => (memory.createdAt || 0) > pendingEntry.timestamp\n );\n\n if (matchingMemory?.id) {\n await this.enrichConversationMemoryWithRAG(matchingMemory.id, pendingEntry.ragMetadata);\n\n const index = this.pendingRAGEnrichment.indexOf(pendingEntry);\n if (index > -1) {\n this.pendingRAGEnrichment.splice(index, 1);\n }\n }\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n logger.warn(`Error enriching recent memories with RAG data: ${errorMessage}`);\n }\n }\n\n async processCharacterKnowledge(items: string[]): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, 1000));\n logger.info(`Processing ${items.length} character knowledge items`);\n\n const processingPromises = items.map(async (item) => {\n await this.knowledgeProcessingSemaphore.acquire();\n try {\n const knowledgeId = generateContentBasedId(item, this.runtime.agentId, {\n maxChars: 2000,\n includeFilename: \"character-knowledge\",\n }) as UUID;\n\n if (await this.checkExistingKnowledge(knowledgeId)) {\n return;\n }\n\n let metadata: CustomMetadata = {\n type: MemoryType.CUSTOM,\n timestamp: Date.now(),\n source: \"character\",\n };\n\n const pathMatch = item.match(/^Path: (.+?)(?:\\n|\\r\\n)/);\n if (pathMatch) {\n const filePath = pathMatch[1].trim();\n const extension = filePath.split(\".\").pop() || \"\";\n const filename = filePath.split(\"/\").pop() || \"\";\n const title = filename.replace(`.${extension}`, \"\");\n metadata = {\n ...metadata,\n path: filePath,\n filename: filename,\n fileExt: extension,\n title: title,\n fileType: `text/${extension || \"plain\"}`,\n fileSize: item.length,\n };\n }\n\n await this._internalAddKnowledge(\n {\n id: knowledgeId,\n content: {\n text: item,\n } as Content,\n metadata,\n },\n undefined,\n {\n roomId: this.runtime.agentId,\n entityId: this.runtime.agentId,\n worldId: this.runtime.agentId,\n }\n );\n } catch (error) {\n logger.error({ error }, \"Error processing character knowledge\");\n } finally {\n this.knowledgeProcessingSemaphore.release();\n }\n });\n\n await Promise.all(processingPromises);\n }\n\n async _internalAddKnowledge(\n item: StoredKnowledgeItem,\n options = {\n targetTokens: 1500,\n overlap: 200,\n modelContextSize: 4096,\n },\n scope = {\n roomId: this.runtime.agentId,\n entityId: this.runtime.agentId,\n worldId: this.runtime.agentId,\n }\n ): Promise<void> {\n const finalScope = {\n roomId: scope?.roomId ?? this.runtime.agentId,\n worldId: scope?.worldId ?? this.runtime.agentId,\n entityId: scope?.entityId ?? this.runtime.agentId,\n };\n\n const documentMetadata = {\n ...(item.metadata ?? {}),\n type: MemoryType.CUSTOM,\n documentId: item.id,\n };\n\n const documentMemory: Memory = {\n id: item.id,\n agentId: this.runtime.agentId,\n roomId: finalScope.roomId,\n worldId: finalScope.worldId,\n entityId: finalScope.entityId,\n content: item.content as unknown as Content,\n metadata: documentMetadata as unknown as MemoryMetadata,\n createdAt: Date.now(),\n };\n\n const existingDocument = await this.runtime.getMemoryById(item.id);\n if (existingDocument) {\n await this.runtime.updateMemory({\n ...documentMemory,\n id: item.id,\n });\n } else {\n await this.runtime.createMemory(documentMemory, \"documents\");\n }\n\n const fragments = await this.splitAndCreateFragments(\n item,\n options.targetTokens,\n options.overlap,\n finalScope\n );\n\n for (const fragment of fragments) {\n try {\n await this.processDocumentFragment(fragment);\n } catch (error) {\n logger.error(\n { error },\n `KnowledgeService: Error processing fragment ${fragment.id} for document ${item.id}`\n );\n }\n }\n }\n\n private async processDocumentFragment(fragment: Memory): Promise<void> {\n try {\n await this.runtime.addEmbeddingToMemory(fragment);\n\n await this.runtime.createMemory(fragment, \"knowledge\");\n } catch (error) {\n logger.error({ error }, `Error processing fragment ${fragment.id}`);\n throw error;\n }\n }\n\n private async splitAndCreateFragments(\n document: StoredKnowledgeItem,\n targetTokens: number,\n overlap: number,\n scope: { roomId: UUID; worldId: UUID; entityId: UUID }\n ): Promise<Memory[]> {\n if (!document.content.text) {\n return [];\n }\n\n const text = document.content.text;\n const chunks = await splitChunks(text, targetTokens, overlap);\n\n return chunks.map((chunk, index) => {\n const fragmentIdContent = `${document.id}-fragment-${index}-${Date.now()}`;\n const fragmentId = createUniqueUuid(this.runtime, fragmentIdContent);\n\n return {\n id: fragmentId,\n entityId: scope.entityId,\n agentId: this.runtime.agentId,\n roomId: scope.roomId,\n worldId: scope.worldId,\n content: {\n text: chunk,\n },\n metadata: {\n ...(document.metadata || {}),\n type: MemoryType.FRAGMENT,\n documentId: document.id,\n position: index,\n timestamp: Date.now(),\n },\n createdAt: Date.now(),\n };\n });\n }\n\n async getMemories(params: {\n tableName: string;\n roomId?: UUID;\n count?: number;\n offset?: number;\n end?: number;\n }): Promise<Memory[]> {\n return this.runtime.getMemories({\n ...params,\n agentId: this.runtime.agentId,\n });\n }\n\n async countMemories(params: {\n tableName: string;\n roomId?: UUID;\n unique?: boolean;\n }): Promise<number> {\n const roomId = params.roomId || this.runtime.agentId;\n const unique = params.unique ?? false;\n const tableName = params.tableName;\n\n return this.runtime.countMemories(roomId, unique, tableName);\n }\n\n async deleteMemory(memoryId: UUID): Promise<void> {\n await this.runtime.deleteMemory(memoryId);\n }\n}\n",
7
7
  "import type { IAgentRuntime } from \"@elizaos/core\";\nimport z from \"zod\";\nimport { type ModelConfig, ModelConfigSchema, type ProviderRateLimits } from \"./types.ts\";\n\nconst parseBooleanEnv = (value: string | boolean | number | undefined): boolean => {\n if (typeof value === \"boolean\") return value;\n if (typeof value === \"number\") return value !== 0;\n if (typeof value === \"string\") return value.toLowerCase() === \"true\";\n return false;\n};\n\nexport function validateModelConfig(runtime?: IAgentRuntime): ModelConfig {\n try {\n const getSetting = (key: string, defaultValue?: string) => {\n if (runtime) {\n return runtime.getSetting(key) || process.env[key] || defaultValue;\n }\n return process.env[key] || defaultValue;\n };\n\n const ctxKnowledgeEnabled = parseBooleanEnv(getSetting(\"CTX_KNOWLEDGE_ENABLED\", \"false\"));\n const embeddingProvider = getSetting(\"EMBEDDING_PROVIDER\");\n const assumePluginOpenAI = !embeddingProvider;\n\n const textEmbeddingModel =\n getSetting(\"TEXT_EMBEDDING_MODEL\") ||\n getSetting(\"OPENAI_EMBEDDING_MODEL\") ||\n \"text-embedding-3-small\";\n const embeddingDimension =\n getSetting(\"EMBEDDING_DIMENSION\") || getSetting(\"OPENAI_EMBEDDING_DIMENSIONS\") || \"1536\";\n\n const openaiApiKey = getSetting(\"OPENAI_API_KEY\");\n\n const config = ModelConfigSchema.parse({\n EMBEDDING_PROVIDER: embeddingProvider,\n TEXT_PROVIDER: getSetting(\"TEXT_PROVIDER\"),\n\n OPENAI_API_KEY: openaiApiKey,\n ANTHROPIC_API_KEY: getSetting(\"ANTHROPIC_API_KEY\"),\n OPENROUTER_API_KEY: getSetting(\"OPENROUTER_API_KEY\"),\n GOOGLE_API_KEY: getSetting(\"GOOGLE_API_KEY\"),\n\n OPENAI_BASE_URL: getSetting(\"OPENAI_BASE_URL\"),\n ANTHROPIC_BASE_URL: getSetting(\"ANTHROPIC_BASE_URL\"),\n OPENROUTER_BASE_URL: getSetting(\"OPENROUTER_BASE_URL\"),\n GOOGLE_BASE_URL: getSetting(\"GOOGLE_BASE_URL\"),\n\n TEXT_EMBEDDING_MODEL: textEmbeddingModel,\n TEXT_MODEL: getSetting(\"TEXT_MODEL\"),\n\n MAX_INPUT_TOKENS: getSetting(\"MAX_INPUT_TOKENS\", \"4000\"),\n MAX_OUTPUT_TOKENS: getSetting(\"MAX_OUTPUT_TOKENS\", \"4096\"),\n\n EMBEDDING_DIMENSION: embeddingDimension,\n\n LOAD_DOCS_ON_STARTUP: parseBooleanEnv(getSetting(\"LOAD_DOCS_ON_STARTUP\")),\n CTX_KNOWLEDGE_ENABLED: ctxKnowledgeEnabled,\n\n RATE_LIMIT_ENABLED: parseBooleanEnv(getSetting(\"RATE_LIMIT_ENABLED\", \"true\")),\n MAX_CONCURRENT_REQUESTS: getSetting(\"MAX_CONCURRENT_REQUESTS\", \"100\"),\n REQUESTS_PER_MINUTE: getSetting(\"REQUESTS_PER_MINUTE\", \"500\"),\n TOKENS_PER_MINUTE: getSetting(\"TOKENS_PER_MINUTE\", \"1000000\"),\n BATCH_DELAY_MS: getSetting(\"BATCH_DELAY_MS\", \"100\"),\n });\n validateConfigRequirements(config, assumePluginOpenAI);\n return config;\n } catch (error) {\n if (error instanceof z.ZodError) {\n const issues = error.issues\n .map((issue) => `${issue.path.join(\".\")}: ${issue.message}`)\n .join(\", \");\n throw new Error(`Model configuration validation failed: ${issues}`);\n }\n throw error;\n }\n}\n\nfunction validateConfigRequirements(config: ModelConfig, assumePluginOpenAI: boolean): void {\n const embeddingProvider = config.EMBEDDING_PROVIDER;\n\n if (embeddingProvider === \"openai\" && !config.OPENAI_API_KEY) {\n throw new Error('OPENAI_API_KEY is required when EMBEDDING_PROVIDER is set to \"openai\"');\n }\n if (embeddingProvider === \"google\" && !config.GOOGLE_API_KEY) {\n throw new Error('GOOGLE_API_KEY is required when EMBEDDING_PROVIDER is set to \"google\"');\n }\n\n if (assumePluginOpenAI && config.OPENAI_API_KEY && !config.TEXT_EMBEDDING_MODEL) {\n throw new Error(\"OPENAI_EMBEDDING_MODEL is required when using plugin-openai configuration\");\n }\n\n if (config.CTX_KNOWLEDGE_ENABLED) {\n if (config.TEXT_PROVIDER === \"openai\" && !config.OPENAI_API_KEY) {\n throw new Error('OPENAI_API_KEY is required when TEXT_PROVIDER is set to \"openai\"');\n }\n if (config.TEXT_PROVIDER === \"anthropic\" && !config.ANTHROPIC_API_KEY) {\n throw new Error('ANTHROPIC_API_KEY is required when TEXT_PROVIDER is set to \"anthropic\"');\n }\n if (config.TEXT_PROVIDER === \"openrouter\" && !config.OPENROUTER_API_KEY) {\n throw new Error('OPENROUTER_API_KEY is required when TEXT_PROVIDER is set to \"openrouter\"');\n }\n if (config.TEXT_PROVIDER === \"google\" && !config.GOOGLE_API_KEY) {\n throw new Error('GOOGLE_API_KEY is required when TEXT_PROVIDER is set to \"google\"');\n }\n }\n}\n\nexport async function getProviderRateLimits(runtime?: IAgentRuntime): Promise<ProviderRateLimits> {\n const config = validateModelConfig(runtime);\n\n const rateLimitEnabled = config.RATE_LIMIT_ENABLED;\n const maxConcurrentRequests = config.MAX_CONCURRENT_REQUESTS;\n const requestsPerMinute = config.REQUESTS_PER_MINUTE;\n const tokensPerMinute = config.TOKENS_PER_MINUTE;\n const batchDelayMs = config.BATCH_DELAY_MS;\n\n const primaryProvider = config.TEXT_PROVIDER || config.EMBEDDING_PROVIDER;\n\n if (!rateLimitEnabled) {\n return {\n maxConcurrentRequests,\n requestsPerMinute: Number.MAX_SAFE_INTEGER,\n tokensPerMinute: Number.MAX_SAFE_INTEGER,\n provider: primaryProvider || \"unlimited\",\n rateLimitEnabled: false,\n batchDelayMs,\n };\n }\n\n return {\n maxConcurrentRequests,\n requestsPerMinute,\n tokensPerMinute,\n provider: primaryProvider || \"unlimited\",\n rateLimitEnabled: true,\n batchDelayMs,\n };\n}\n",
8
8
  "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",
9
9
  "import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { logger, type UUID } from \"@elizaos/core\";\nimport type { KnowledgeService } from \"./service.ts\";\nimport type { AddKnowledgeOptions } from \"./types.ts\";\nimport { isBinaryContentType } from \"./utils.ts\";\n\nexport function getKnowledgePath(runtimePath?: string): string {\n const knowledgePath =\n runtimePath || process.env.KNOWLEDGE_PATH || path.join(process.cwd(), \"docs\");\n const resolvedPath = path.resolve(knowledgePath);\n\n if (!fs.existsSync(resolvedPath)) {\n logger.warn(`Knowledge path does not exist: ${resolvedPath}`);\n if (runtimePath) {\n logger.warn(\"Please create the directory or update KNOWLEDGE_PATH in agent settings\");\n } else if (process.env.KNOWLEDGE_PATH) {\n logger.warn(\"Please create the directory or update KNOWLEDGE_PATH environment variable\");\n } else {\n logger.info(\"To use the knowledge plugin, either:\");\n logger.info('1. Create a \"docs\" folder in your project root');\n logger.info(\"2. Set KNOWLEDGE_PATH in agent settings or environment variable\");\n }\n }\n\n return resolvedPath;\n}\n\nexport async function loadDocsFromPath(\n service: KnowledgeService,\n agentId: UUID,\n worldId?: UUID,\n knowledgePath?: string\n): Promise<{ total: number; successful: number; failed: number }> {\n const docsPath = getKnowledgePath(knowledgePath);\n\n if (!fs.existsSync(docsPath)) {\n logger.warn(`Knowledge path does not exist: ${docsPath}`);\n return { total: 0, successful: 0, failed: 0 };\n }\n\n logger.info(`Loading documents from: ${docsPath}`);\n\n const files = getAllFiles(docsPath);\n\n if (files.length === 0) {\n logger.info(\"No files found in knowledge path\");\n return { total: 0, successful: 0, failed: 0 };\n }\n\n logger.info(`Found ${files.length} files to process`);\n\n let successful = 0;\n let failed = 0;\n\n for (const filePath of files) {\n try {\n const fileName = path.basename(filePath);\n const fileExt = path.extname(filePath).toLowerCase();\n\n if (fileName.startsWith(\".\")) {\n continue;\n }\n\n const contentType = getContentType(fileExt);\n\n if (!contentType) {\n logger.debug(`Skipping unsupported file type: ${filePath}`);\n continue;\n }\n\n const fileBuffer = fs.readFileSync(filePath);\n const isBinary = isBinaryContentType(contentType, fileName);\n const content = isBinary ? fileBuffer.toString(\"base64\") : fileBuffer.toString(\"utf-8\");\n\n const knowledgeOptions: AddKnowledgeOptions = {\n clientDocumentId: \"\" as UUID,\n contentType,\n originalFilename: fileName,\n worldId: worldId || agentId,\n content,\n roomId: agentId,\n entityId: agentId,\n };\n\n logger.debug(`Processing document: ${fileName}`);\n const result = await service.addKnowledge(knowledgeOptions);\n\n logger.info(`✅ \"${fileName}\": ${result.fragmentCount} fragments created`);\n successful++;\n } catch (error) {\n logger.error({ error }, `Failed to process file ${filePath}`);\n failed++;\n }\n }\n\n logger.info(\n `Document loading complete: ${successful} successful, ${failed} failed out of ${files.length} total`\n );\n\n return {\n total: files.length,\n successful,\n failed,\n };\n}\n\nfunction getAllFiles(dirPath: string, files: string[] = []): string[] {\n try {\n const entries = fs.readdirSync(dirPath, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = path.join(dirPath, entry.name);\n\n if (entry.isDirectory()) {\n if (![\"node_modules\", \".git\", \".vscode\", \"dist\", \"build\"].includes(entry.name)) {\n getAllFiles(fullPath, files);\n }\n } else if (entry.isFile()) {\n files.push(fullPath);\n }\n }\n } catch (error) {\n logger.error({ error }, `Error reading directory ${dirPath}`);\n }\n\n return files;\n}\n\nfunction getContentType(extension: string): string | null {\n const contentTypes: Record<string, string> = {\n \".txt\": \"text/plain\",\n \".md\": \"text/markdown\",\n \".markdown\": \"text/markdown\",\n \".tson\": \"text/plain\",\n \".xml\": \"application/xml\",\n \".csv\": \"text/csv\",\n \".tsv\": \"text/tab-separated-values\",\n \".log\": \"text/plain\",\n\n // Web files\n \".html\": \"text/html\",\n \".htm\": \"text/html\",\n \".css\": \"text/css\",\n \".scss\": \"text/x-scss\",\n \".sass\": \"text/x-sass\",\n \".less\": \"text/x-less\",\n \".js\": \"text/javascript\",\n \".jsx\": \"text/javascript\",\n \".ts\": \"text/typescript\",\n \".tsx\": \"text/typescript\",\n \".mjs\": \"text/javascript\",\n \".cjs\": \"text/javascript\",\n \".vue\": \"text/x-vue\",\n \".svelte\": \"text/x-svelte\",\n \".astro\": \"text/x-astro\",\n\n // Python\n \".py\": \"text/x-python\",\n \".pyw\": \"text/x-python\",\n \".pyi\": \"text/x-python\",\n \".java\": \"text/x-java\",\n \".kt\": \"text/x-kotlin\",\n \".kts\": \"text/x-kotlin\",\n \".scala\": \"text/x-scala\",\n\n // C/C++/C#\n \".c\": \"text/x-c\",\n \".cpp\": \"text/x-c++\",\n \".cc\": \"text/x-c++\",\n \".cxx\": \"text/x-c++\",\n \".h\": \"text/x-c\",\n \".hpp\": \"text/x-c++\",\n \".cs\": \"text/x-csharp\",\n \".php\": \"text/x-php\",\n \".rb\": \"text/x-ruby\",\n \".go\": \"text/x-go\",\n \".rs\": \"text/x-rust\",\n \".swift\": \"text/x-swift\",\n \".r\": \"text/x-r\",\n \".R\": \"text/x-r\",\n \".m\": \"text/x-objectivec\",\n \".mm\": \"text/x-objectivec\",\n \".clj\": \"text/x-clojure\",\n \".cljs\": \"text/x-clojure\",\n \".ex\": \"text/x-elixir\",\n \".exs\": \"text/x-elixir\",\n \".lua\": \"text/x-lua\",\n \".pl\": \"text/x-perl\",\n \".pm\": \"text/x-perl\",\n \".dart\": \"text/x-dart\",\n \".hs\": \"text/x-haskell\",\n \".elm\": \"text/x-elm\",\n \".ml\": \"text/x-ocaml\",\n \".fs\": \"text/x-fsharp\",\n \".fsx\": \"text/x-fsharp\",\n \".vb\": \"text/x-vb\",\n \".pas\": \"text/x-pascal\",\n \".d\": \"text/x-d\",\n \".nim\": \"text/x-nim\",\n \".zig\": \"text/x-zig\",\n \".jl\": \"text/x-julia\",\n \".tcl\": \"text/x-tcl\",\n \".awk\": \"text/x-awk\",\n \".sed\": \"text/x-sed\",\n \".sh\": \"text/x-sh\",\n \".bash\": \"text/x-sh\",\n \".zsh\": \"text/x-sh\",\n \".fish\": \"text/x-fish\",\n \".ps1\": \"text/x-powershell\",\n \".bat\": \"text/x-batch\",\n \".cmd\": \"text/x-batch\",\n \".json\": \"application/json\",\n \".yaml\": \"text/x-yaml\",\n \".yml\": \"text/x-yaml\",\n \".toml\": \"text/x-toml\",\n \".ini\": \"text/x-ini\",\n \".cfg\": \"text/x-ini\",\n \".conf\": \"text/x-ini\",\n \".env\": \"text/plain\",\n \".gitignore\": \"text/plain\",\n \".dockerignore\": \"text/plain\",\n \".editorconfig\": \"text/plain\",\n \".properties\": \"text/x-properties\",\n \".sql\": \"text/x-sql\",\n \".pdf\": \"application/pdf\",\n \".doc\": \"application/msword\",\n \".docx\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n };\n\n return contentTypes[extension] || null;\n}\n",
@@ -27,6 +27,6 @@
27
27
  "import type { Plugin } from \"@elizaos/core\";\nimport { knowledgeActions } from \"./actions\";\nimport { documentsProvider } from \"./documents-provider\";\nimport { knowledgeProvider } from \"./provider\";\nimport { knowledgeRoutes } from \"./routes\";\nimport { KnowledgeService } from \"./service\";\n\nexport interface KnowledgePluginConfig {\n enableUI?: boolean;\n enableRoutes?: boolean;\n enableActions?: boolean;\n enableTests?: boolean;\n}\n\nexport function createKnowledgePlugin(config: KnowledgePluginConfig = {}): Plugin {\n const { enableUI = true, enableRoutes = true, enableActions = true, enableTests = true } = config;\n\n const plugin: Plugin = {\n name: \"knowledge\",\n description:\n \"Plugin for Retrieval Augmented Generation, including knowledge management and embedding.\",\n services: [KnowledgeService],\n providers: [knowledgeProvider, documentsProvider],\n };\n\n if (enableUI || enableRoutes) {\n plugin.routes = knowledgeRoutes;\n }\n\n if (enableActions) {\n plugin.actions = knowledgeActions;\n }\n\n if (enableTests) {\n // try {\n // const { default: knowledgeTestSuite } = require(\"./tests\");\n // plugin.tests = [knowledgeTestSuite];\n // } catch {}\n }\n\n return plugin;\n}\n\nexport const knowledgePluginCore: Plugin = createKnowledgePlugin({\n enableUI: false,\n enableRoutes: false,\n enableActions: false,\n enableTests: false,\n});\n\nexport const knowledgePluginHeadless: Plugin = createKnowledgePlugin({\n enableUI: false,\n enableRoutes: false,\n enableActions: true,\n enableTests: false,\n});\n\nexport const knowledgePlugin: Plugin = createKnowledgePlugin({\n enableUI: true,\n enableRoutes: true,\n enableActions: true,\n enableTests: true,\n});\n\nexport default knowledgePlugin;\n\nexport { documentsProvider } from \"./documents-provider\";\nexport { knowledgeProvider } from \"./provider\";\nexport { KnowledgeService } from \"./service\";\nexport * from \"./types\";\n"
28
28
  ],
29
29
  "mappings": "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",
30
- "debugId": "156A1638D9D4ADEB64756E2164756E21",
30
+ "debugId": "40399672E222E6EF64756E2164756E21",
31
31
  "names": []
32
32
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-knowledge",
3
3
  "description": "Knowledge and RAG plugin for elizaOS - provides retrieval augmented generation capabilities",
4
- "version": "2.0.0-alpha.7",
4
+ "version": "2.0.0-alpha.8",
5
5
  "type": "module",
6
6
  "main": "dist/cjs/index.node.cjs",
7
7
  "module": "dist/node/index.node.js",
@@ -46,7 +46,7 @@
46
46
  "@ai-sdk/anthropic": "^3.0.13",
47
47
  "@ai-sdk/google": "^3.0.8",
48
48
  "@ai-sdk/openai": "^3.0.9",
49
- "@elizaos/core": "alpha",
49
+ "@elizaos/core": "2.0.0-alpha.114",
50
50
  "@openrouter/ai-sdk-provider": "^1.2.0",
51
51
  "@tanstack/react-query": "^5.51.1",
52
52
  "ai": "^6.0.30",