@mybricks/plugin-ai 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/dist/_virtual/_rollupPluginBabelHelpers.js +164 -0
  2. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  3. package/dist/agents/app.js +335 -0
  4. package/dist/agents/app.js.map +1 -0
  5. package/dist/agents/common.js +483 -0
  6. package/dist/agents/common.js.map +1 -0
  7. package/dist/agents/custom.js +16 -0
  8. package/dist/agents/custom.js.map +1 -0
  9. package/dist/agents/index.js +38 -0
  10. package/dist/agents/index.js.map +1 -0
  11. package/dist/agents/knowledges/knowledge-base.js +579 -0
  12. package/dist/agents/knowledges/knowledge-base.js.map +1 -0
  13. package/dist/agents/knowledges/knowledge-node.js +228 -0
  14. package/dist/agents/knowledges/knowledge-node.js.map +1 -0
  15. package/dist/agents/knowledges/types.js +105 -0
  16. package/dist/agents/knowledges/types.js.map +1 -0
  17. package/dist/agents/utils/config.js +229 -0
  18. package/dist/agents/utils/config.js.map +1 -0
  19. package/dist/agents/workspace/coding-manager.js +20 -0
  20. package/dist/agents/workspace/coding-manager.js.map +1 -0
  21. package/dist/agents/workspace/components-manager.js +113 -0
  22. package/dist/agents/workspace/components-manager.js.map +1 -0
  23. package/dist/agents/workspace/outline-focus.js +167 -0
  24. package/dist/agents/workspace/outline-focus.js.map +1 -0
  25. package/dist/agents/workspace/outline-info.js +430 -0
  26. package/dist/agents/workspace/outline-info.js.map +1 -0
  27. package/dist/agents/workspace/page-tree-generator.js +70 -0
  28. package/dist/agents/workspace/page-tree-generator.js.map +1 -0
  29. package/dist/agents/workspace/workspace.js +251 -0
  30. package/dist/agents/workspace/workspace.js.map +1 -0
  31. package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js +100 -0
  32. package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js.map +1 -0
  33. package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js +120 -0
  34. package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js.map +1 -0
  35. package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js +146 -0
  36. package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js.map +1 -0
  37. package/dist/agents/workspace-by-knowledges/test.js +242 -0
  38. package/dist/agents/workspace-by-knowledges/test.js.map +1 -0
  39. package/dist/agents/workspace-by-knowledges/utils/components-manager.js +132 -0
  40. package/dist/agents/workspace-by-knowledges/utils/components-manager.js.map +1 -0
  41. package/dist/agents/workspace-by-knowledges/utils/outline-focus.js +167 -0
  42. package/dist/agents/workspace-by-knowledges/utils/outline-focus.js.map +1 -0
  43. package/dist/agents/workspace-by-knowledges/utils/outline-info.js +430 -0
  44. package/dist/agents/workspace-by-knowledges/utils/outline-info.js.map +1 -0
  45. package/dist/agents/workspace-by-knowledges/workspace.js +169 -0
  46. package/dist/agents/workspace-by-knowledges/workspace.js.map +1 -0
  47. package/dist/api/cloud-components.js +85 -0
  48. package/dist/api/cloud-components.js.map +1 -0
  49. package/dist/api-record-replay/manager.js +168 -0
  50. package/dist/api-record-replay/manager.js.map +1 -0
  51. package/{src/api-record-replay/recorder.ts → dist/api-record-replay/recorder.js} +22 -32
  52. package/dist/api-record-replay/recorder.js.map +1 -0
  53. package/dist/api-record-replay/replayer.js +136 -0
  54. package/dist/api-record-replay/replayer.js.map +1 -0
  55. package/dist/components/attachments/index.js +124 -0
  56. package/dist/components/attachments/index.js.map +1 -0
  57. package/dist/components/attachments/index.less.js +8 -0
  58. package/dist/components/attachments/index.less.js.map +1 -0
  59. package/dist/components/icons/index.js +112 -0
  60. package/dist/components/icons/index.js.map +1 -0
  61. package/dist/components/icons/index.less.js +8 -0
  62. package/dist/components/icons/index.less.js.map +1 -0
  63. package/dist/components/mention/index.js +19 -0
  64. package/dist/components/mention/index.js.map +1 -0
  65. package/dist/components/mention/index.less.js +8 -0
  66. package/dist/components/mention/index.less.js.map +1 -0
  67. package/dist/components/messages/index.js +429 -0
  68. package/dist/components/messages/index.js.map +1 -0
  69. package/dist/components/messages/index.less.js +8 -0
  70. package/dist/components/messages/index.less.js.map +1 -0
  71. package/dist/components/sender/index.js +244 -0
  72. package/dist/components/sender/index.js.map +1 -0
  73. package/dist/components/sender/index.less.js +8 -0
  74. package/dist/components/sender/index.less.js.map +1 -0
  75. package/dist/context/RequestStatusTracker.js +44 -0
  76. package/dist/context/RequestStatusTracker.js.map +1 -0
  77. package/dist/context/index.js +45 -0
  78. package/dist/context/index.js.map +1 -0
  79. package/dist/data.js +4 -0
  80. package/dist/data.js.map +1 -0
  81. package/dist/index.js +306 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js +27 -0
  84. package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
  85. package/dist/plugin-ai/package.json.js +8 -0
  86. package/dist/plugin-ai/package.json.js.map +1 -0
  87. package/dist/plugin-ai/test/index.js +206 -0
  88. package/dist/plugin-ai/test/index.js.map +1 -0
  89. package/dist/preset/createTemplates.js +29 -0
  90. package/dist/preset/createTemplates.js.map +1 -0
  91. package/dist/preset/index.js +13 -0
  92. package/dist/preset/index.js.map +1 -0
  93. package/dist/preset/prompts.js +34 -0
  94. package/dist/preset/prompts.js.map +1 -0
  95. package/{src/preset/user.ts → dist/preset/user.js} +4 -3
  96. package/dist/preset/user.js.map +1 -0
  97. package/dist/requestAsStream.js +269 -0
  98. package/dist/requestAsStream.js.map +1 -0
  99. package/dist/rxai/node_modules/idb/build/index.js +277 -0
  100. package/dist/rxai/node_modules/idb/build/index.js.map +1 -0
  101. package/dist/rxai/src/agent/base.js +16 -0
  102. package/dist/rxai/src/agent/base.js.map +1 -0
  103. package/dist/rxai/src/agent/planning.js +1076 -0
  104. package/dist/rxai/src/agent/planning.js.map +1 -0
  105. package/dist/rxai/src/agent/rxai.js +254 -0
  106. package/dist/rxai/src/agent/rxai.js.map +1 -0
  107. package/dist/rxai/src/error/base.js +39 -0
  108. package/dist/rxai/src/error/base.js.map +1 -0
  109. package/dist/rxai/src/prompt/base.js +11 -0
  110. package/dist/rxai/src/prompt/base.js.map +1 -0
  111. package/dist/rxai/src/prompt/planning.js +23 -0
  112. package/dist/rxai/src/prompt/planning.js.map +1 -0
  113. package/dist/rxai/src/prompt/tool.js +14 -0
  114. package/dist/rxai/src/prompt/tool.js.map +1 -0
  115. package/dist/rxai/src/request/request.js +123 -0
  116. package/dist/rxai/src/request/request.js.map +1 -0
  117. package/dist/rxai/src/tool/getHistoryRecords.js +65 -0
  118. package/dist/rxai/src/tool/getHistoryRecords.js.map +1 -0
  119. package/dist/rxai/src/tool/util.js +424 -0
  120. package/dist/rxai/src/tool/util.js.map +1 -0
  121. package/dist/rxai/src/utils/events.js +43 -0
  122. package/dist/rxai/src/utils/events.js.map +1 -0
  123. package/dist/rxai/src/utils/idb.js +240 -0
  124. package/dist/rxai/src/utils/idb.js.map +1 -0
  125. package/dist/rxai/src/utils/retry.js +32 -0
  126. package/dist/rxai/src/utils/retry.js.map +1 -0
  127. package/dist/rxai/src/utils/uuid.js +7 -0
  128. package/dist/rxai/src/utils/uuid.js.map +1 -0
  129. package/dist/startView/components/header/header.js +12 -0
  130. package/dist/startView/components/header/header.js.map +1 -0
  131. package/dist/startView/components/header/header.less.js +8 -0
  132. package/dist/startView/components/header/header.less.js.map +1 -0
  133. package/dist/startView/index.js +62 -0
  134. package/dist/startView/index.js.map +1 -0
  135. package/dist/startView/index.less.js +8 -0
  136. package/dist/startView/index.less.js.map +1 -0
  137. package/dist/tools/analyze-and-expand-prd.js +116 -0
  138. package/dist/tools/analyze-and-expand-prd.js.map +1 -0
  139. package/dist/tools/analyze-requirement-and-components.js +208 -0
  140. package/dist/tools/analyze-requirement-and-components.js.map +1 -0
  141. package/dist/tools/answer.js +33 -0
  142. package/dist/tools/answer.js.map +1 -0
  143. package/dist/tools/build-process.js +550 -0
  144. package/dist/tools/build-process.js.map +1 -0
  145. package/dist/tools/coding-subagent-as-tool.js +101 -0
  146. package/dist/tools/coding-subagent-as-tool.js.map +1 -0
  147. package/dist/tools/generate-ui-content.js +528 -0
  148. package/dist/tools/generate-ui-content.js.map +1 -0
  149. package/dist/tools/index.js +31 -0
  150. package/dist/tools/index.js.map +1 -0
  151. package/dist/tools/open-dsl.js +49 -0
  152. package/dist/tools/open-dsl.js.map +1 -0
  153. package/dist/tools/refactor-ui-content.js +292 -0
  154. package/dist/tools/refactor-ui-content.js.map +1 -0
  155. package/dist/tools/utils.js +832 -0
  156. package/dist/tools/utils.js.map +1 -0
  157. package/dist/types/index.js +8 -0
  158. package/dist/types/index.js.map +1 -0
  159. package/dist/view/components/header/header.js +59 -0
  160. package/dist/view/components/header/header.js.map +1 -0
  161. package/dist/view/components/header/header.less.js +8 -0
  162. package/dist/view/components/header/header.less.js.map +1 -0
  163. package/dist/view/index.js +184 -0
  164. package/dist/view/index.js.map +1 -0
  165. package/dist/view/index.less.js +8 -0
  166. package/dist/view/index.less.js.map +1 -0
  167. package/package.json +28 -6
  168. package/src/agents/app.ts +0 -301
  169. package/src/agents/common.ts +0 -471
  170. package/src/agents/custom.ts +0 -14
  171. package/src/agents/index.ts +0 -37
  172. package/src/agents/knowledges/README.md +0 -614
  173. package/src/agents/knowledges/SUMMARY.md +0 -527
  174. package/src/agents/knowledges/index.ts +0 -8
  175. package/src/agents/knowledges/knowledge-base.ts +0 -565
  176. package/src/agents/knowledges/knowledge-node.ts +0 -266
  177. package/src/agents/knowledges/types.ts +0 -208
  178. package/src/agents/utils/config.ts +0 -427
  179. package/src/agents/workspace/coding-manager.ts +0 -31
  180. package/src/agents/workspace/components-manager.ts +0 -124
  181. package/src/agents/workspace/outline-focus.ts +0 -188
  182. package/src/agents/workspace/outline-info.ts +0 -520
  183. package/src/agents/workspace/page-tree-generator.ts +0 -83
  184. package/src/agents/workspace/workspace.ts +0 -319
  185. package/src/agents/workspace-by-knowledges/MIGRATION.md +0 -568
  186. package/src/agents/workspace-by-knowledges/README.md +0 -521
  187. package/src/agents/workspace-by-knowledges/index.ts +0 -11
  188. package/src/agents/workspace-by-knowledges/providers/component-docs-provider.ts +0 -92
  189. package/src/agents/workspace-by-knowledges/providers/focus-info-provider.ts +0 -131
  190. package/src/agents/workspace-by-knowledges/providers/index.ts +0 -8
  191. package/src/agents/workspace-by-knowledges/providers/project-info-provider.ts +0 -151
  192. package/src/agents/workspace-by-knowledges/test.ts +0 -240
  193. package/src/agents/workspace-by-knowledges/types.ts +0 -56
  194. package/src/agents/workspace-by-knowledges/utils/components-manager.ts +0 -145
  195. package/src/agents/workspace-by-knowledges/utils/index.ts +0 -8
  196. package/src/agents/workspace-by-knowledges/utils/outline-focus.ts +0 -178
  197. package/src/agents/workspace-by-knowledges/utils/outline-info.ts +0 -521
  198. package/src/agents/workspace-by-knowledges/workspace.ts +0 -166
  199. package/src/api/cloud-components.ts +0 -129
  200. package/src/api-record-replay/README.md +0 -187
  201. package/src/api-record-replay/index.ts +0 -11
  202. package/src/api-record-replay/manager.ts +0 -168
  203. package/src/api-record-replay/replayer.ts +0 -148
  204. package/src/components/attachments/index.less +0 -117
  205. package/src/components/attachments/index.tsx +0 -136
  206. package/src/components/icons/index.less +0 -8
  207. package/src/components/icons/index.tsx +0 -44
  208. package/src/components/index.less +0 -34
  209. package/src/components/mention/index.less +0 -23
  210. package/src/components/mention/index.tsx +0 -19
  211. package/src/components/messages/index.less +0 -1013
  212. package/src/components/messages/index.tsx +0 -519
  213. package/src/components/sender/index.less +0 -203
  214. package/src/components/sender/index.tsx +0 -298
  215. package/src/components/types.ts +0 -31
  216. package/src/constants/index.ts +0 -8
  217. package/src/context/RequestStatusTracker.ts +0 -50
  218. package/src/context/index.ts +0 -83
  219. package/src/data.ts +0 -5
  220. package/src/global.d.ts +0 -100
  221. package/src/index.tsx +0 -264
  222. package/src/mock.ts +0 -1267
  223. package/src/preset/agents.ts +0 -380
  224. package/src/preset/createTemplates.ts +0 -25
  225. package/src/preset/index.ts +0 -12
  226. package/src/preset/prompts.ts +0 -235
  227. package/src/preset/requestAsStream.ts +0 -246
  228. package/src/startView/components/header/header.less +0 -17
  229. package/src/startView/components/header/header.tsx +0 -15
  230. package/src/startView/components/index.ts +0 -1
  231. package/src/startView/index.less +0 -34
  232. package/src/startView/index.tsx +0 -61
  233. package/src/tools/analyze-and-expand-prd.ts +0 -272
  234. package/src/tools/analyze-requirement-and-components.ts +0 -589
  235. package/src/tools/answer.ts +0 -59
  236. package/src/tools/build-process.ts +0 -1174
  237. package/src/tools/coding-subagent-as-tool.ts +0 -119
  238. package/src/tools/generate-ui-content.ts +0 -1083
  239. package/src/tools/index.ts +0 -28
  240. package/src/tools/open-dsl.ts +0 -69
  241. package/src/tools/refactor-ui-content.ts +0 -801
  242. package/src/tools/type.d.ts +0 -12
  243. package/src/tools/utils.ts +0 -914
  244. package/src/types/index.ts +0 -4
  245. package/src/view/components/header/header.less +0 -51
  246. package/src/view/components/header/header.tsx +0 -60
  247. package/src/view/components/index.ts +0 -1
  248. package/src/view/index.less +0 -5
  249. package/src/view/index.tsx +0 -168
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-base.js","sources":["../../../src/agents/knowledges/knowledge-base.ts"],"sourcesContent":["/**\n * 知识库管理器\n */\n\nimport { KnowledgeNode, IProviderManager } from './knowledge-node';\nimport { \n KnowledgeNodeType, \n KnowledgeBaseConfig, \n ExportOptions,\n IDirectoryProvider,\n IKnowledgeNode,\n DynamicDocument,\n DynamicDocDirectoryConfig\n} from './types';\n\n/**\n * 知识库类\n * 本质上是对一条大模型消息的生成和管理\n */\nexport class KnowledgeBase implements IProviderManager {\n /** 知识库名称 */\n name: string;\n \n /** 知识库描述 */\n description?: string;\n \n /** 根节点 */\n private root: KnowledgeNode;\n \n /** 已打开的文件路径列表 */\n private openedFilePaths: Set<string> = new Set();\n\n /** 注册的 Provider 映射 */\n private providers: Map<string, IDirectoryProvider> = new Map();\n\n /** 动态文档目录配置映射 */\n private dynamicDirectories: Map<string, DynamicDocDirectoryConfig> = new Map();\n\n /** 动态文档存储(按目录ID分组) */\n private dynamicDocuments: Map<string, Map<string, DynamicDocument>> = new Map();\n\n /** 默认动态文档目录ID */\n private readonly DEFAULT_DYNAMIC_DIR_ID = '__dynamic_docs__';\n\n constructor(config: KnowledgeBaseConfig) {\n this.name = config.name;\n this.description = config.description;\n\n // 初始化根节点\n this.root = new KnowledgeNode(\n '__root__',\n this.name,\n KnowledgeNodeType.DIRECTORY,\n this,\n {\n description: this.description,\n metadata: { providerId: '__root__' }\n }\n );\n }\n\n /**\n * 注册目录提供者\n */\n registerProvider(provider: IDirectoryProvider): void {\n this.providers.set(provider.id, provider);\n }\n\n /**\n * 注册动态文档目录\n */\n registerDynamicDirectory(config: DynamicDocDirectoryConfig): void {\n this.dynamicDirectories.set(config.id, config);\n // 为这个目录初始化文档存储\n if (!this.dynamicDocuments.has(config.id)) {\n this.dynamicDocuments.set(config.id, new Map());\n }\n }\n\n /**\n * 获取 Provider(实现 IProviderManager 接口)\n */\n getProvider(providerId: string): IDirectoryProvider | undefined {\n // 根节点特殊处理\n if (providerId === '__root__') {\n return {\n id: '__root__',\n name: this.name,\n description: this.description,\n weight: 0,\n getRootNode: () => ({ id: '__root__', name: this.name, type: KnowledgeNodeType.DIRECTORY }),\n getChildren: async () => {\n // 返回所有注册的 provider 和动态文档目录的根节点,按权重排序(从大到小)\n const allNodes: IKnowledgeNode[] = [];\n \n // 添加 provider 节点\n const providers = Array.from(this.providers.values());\n allNodes.push(...providers.map(p => p.getRootNode()));\n \n // 添加动态文档目录节点\n const dynamicDirs = Array.from(this.dynamicDirectories.values());\n allNodes.push(...dynamicDirs.map(dir => ({\n id: dir.id,\n name: dir.name, // 直接使用 name 作为展示名称\n type: KnowledgeNodeType.DIRECTORY,\n description: dir.description,\n hidden: dir.hidden,\n metadata: { \n providerId: dir.id, // 使用自己的 ID 作为 providerId,确保子节点查找正确\n isDynamicDirectory: true\n }\n })));\n \n // 按权重排序(从大到小)\n allNodes.sort((a, b) => {\n const weightA = this.getNodeWeight(a.id);\n const weightB = this.getNodeWeight(b.id);\n return weightB - weightA;\n });\n \n return allNodes;\n },\n readFile: async () => {\n throw new Error('Cannot read file from root');\n }\n } as IDirectoryProvider;\n }\n \n // 检查是否是动态文档目录\n if (this.dynamicDirectories.has(providerId)) {\n return this.createDynamicDirectoryProvider(providerId);\n }\n \n return this.providers.get(providerId);\n }\n\n /**\n * 获取节点的权重\n */\n private getNodeWeight(nodeId: string): number {\n const provider = this.providers.get(nodeId);\n if (provider) {\n return provider.weight ?? 0;\n }\n const dynamicDir = this.dynamicDirectories.get(nodeId);\n if (dynamicDir) {\n return dynamicDir.weight ?? 0;\n }\n return 0;\n }\n\n /**\n * 为动态文档目录创建 Provider\n */\n private createDynamicDirectoryProvider(directoryId: string): IDirectoryProvider {\n const dirConfig = this.dynamicDirectories.get(directoryId);\n if (!dirConfig) {\n throw new Error(`Dynamic directory not found: ${directoryId}`);\n }\n\n return {\n id: dirConfig.id,\n name: dirConfig.name,\n description: dirConfig.description,\n weight: dirConfig.weight ?? 0,\n getRootNode: () => ({\n id: dirConfig.id,\n name: dirConfig.name, // 直接使用 name 作为展示名称\n type: KnowledgeNodeType.DIRECTORY,\n description: dirConfig.description,\n hidden: dirConfig.hidden,\n metadata: { \n isDynamicDirectory: true\n }\n }),\n getChildren: async (parentId: string) => {\n if (parentId !== dirConfig.id) {\n return [];\n }\n // 返回该目录下的所有动态文档\n const docs = this.dynamicDocuments.get(directoryId);\n if (!docs) {\n return [];\n }\n return Array.from(docs.values()).map(doc => ({\n id: doc.id, // 简单的 id,用于路径匹配\n name: doc.title || doc.id, // 使用 title 作为展示名称\n type: KnowledgeNodeType.FILE,\n extname: doc.extname || '.md',\n description: doc.description, // description 就是描述\n hidden: dirConfig.hidden,\n metadata: { \n isDynamicDocument: true,\n directoryId,\n docId: doc.id\n // parentPath 会由 getChildren() 自动传递\n }\n }));\n },\n readFile: async (fileId: string) => {\n // fileId 格式: directoryId/docId\n const match = fileId.match(/^(.+)\\/(.+)$/);\n if (!match) {\n throw new Error(`Invalid dynamic document file ID: ${fileId}`);\n }\n const [, dirId, docId] = match;\n const docs = this.dynamicDocuments.get(dirId);\n const doc = docs?.get(docId);\n if (!doc) {\n throw new Error(`Dynamic document not found: ${fileId}`);\n }\n \n let result = '';\n if (doc.title) {\n result += `## ${doc.title}\\n`;\n }\n if (doc.description) {\n result += `> ${doc.description}\\n\\n`;\n }\n result += doc.content;\n return result;\n }\n };\n }\n\n /**\n * 添加动态文档\n * @param doc 动态文档\n */\n addDynamicDocument(doc: DynamicDocument): void {\n const directoryId = doc.directoryId || this.DEFAULT_DYNAMIC_DIR_ID;\n \n // 确保目录存在\n if (!this.dynamicDirectories.has(directoryId)) {\n // 如果是默认目录且不存在,自动创建\n if (directoryId === this.DEFAULT_DYNAMIC_DIR_ID) {\n this.registerDynamicDirectory({\n id: this.DEFAULT_DYNAMIC_DIR_ID,\n name: '动态文档',\n description: '动态生成的文档',\n weight: -100,\n hidden: true\n });\n } else {\n throw new Error(`Dynamic directory not found: ${directoryId}`);\n }\n }\n\n // 获取或创建该目录的文档存储\n let docs = this.dynamicDocuments.get(directoryId);\n if (!docs) {\n docs = new Map();\n this.dynamicDocuments.set(directoryId, docs);\n }\n\n // 添加文档\n docs.set(doc.id, doc);\n }\n\n /**\n * 删除动态文档\n * @param docId 文档ID\n * @param directoryId 目录ID(可选,如果不指定则搜索所有目录)\n */\n removeDynamicDocument(docId: string, directoryId?: string): void {\n if (directoryId) {\n // 从指定目录删除\n const docs = this.dynamicDocuments.get(directoryId);\n if (docs) {\n docs.delete(docId);\n // 同时关闭该文档(如果已打开)\n const path = `${directoryId}/${docId}`;\n this.closeFile(path);\n }\n } else {\n // 从所有目录中搜索并删除\n for (const [dirId, docs] of this.dynamicDocuments.entries()) {\n if (docs.has(docId)) {\n docs.delete(docId);\n const path = `${dirId}/${docId}`;\n this.closeFile(path);\n }\n }\n }\n }\n\n /**\n * 获取动态文档\n * @param docId 文档ID\n * @param directoryId 目录ID(可选)\n */\n getDynamicDocument(docId: string, directoryId?: string): DynamicDocument | undefined {\n if (directoryId) {\n return this.dynamicDocuments.get(directoryId)?.get(docId);\n } else {\n // 搜索所有目录\n for (const docs of this.dynamicDocuments.values()) {\n const doc = docs.get(docId);\n if (doc) {\n return doc;\n }\n }\n }\n return undefined;\n }\n\n /**\n * 清空动态文档目录中的所有文档\n * @param directoryId 目录ID(可选,如果不指定则清空所有动态文档)\n */\n clearDynamicDocuments(directoryId?: string): void {\n if (directoryId) {\n // 清空指定目录\n const docs = this.dynamicDocuments.get(directoryId);\n if (docs) {\n // 关闭所有已打开的文档\n docs.forEach((_, docId) => {\n const path = `${directoryId}/${docId}`;\n this.closeFile(path);\n });\n docs.clear();\n }\n } else {\n // 清空所有动态文档\n this.dynamicDocuments.forEach((docs, dirId) => {\n docs.forEach((_, docId) => {\n const path = `${dirId}/${docId}`;\n this.closeFile(path);\n });\n docs.clear();\n });\n }\n }\n\n /**\n * 打开动态文档(简化方法)\n * @param doc 动态文档\n */\n async openDynamicDocument(doc: DynamicDocument): Promise<void> {\n // 添加到动态文档存储\n this.addDynamicDocument(doc);\n \n // 打开文档\n const directoryId = doc.directoryId || this.DEFAULT_DYNAMIC_DIR_ID;\n const path = `${directoryId}/${doc.id}`;\n await this.openFile(path);\n }\n\n /**\n * 打开文件(标记文件为已打开)\n * @param path 文件路径,如 \"dsl/page1.json\"\n */\n async openFile(path: string): Promise<void> {\n console.log('[KnowledgeBase.openFile] 尝试打开文件:', path);\n const node = await this.root.findByPath(path);\n console.log('[KnowledgeBase.openFile] 找到节点:', node);\n \n if (!node) {\n throw new Error(`File not found: ${path}`);\n }\n\n if (!node.isFile) {\n throw new Error(`Path is not a file: ${path}`);\n }\n\n this.openedFilePaths.add(path);\n console.log('[KnowledgeBase.openFile] 文件已添加到已打开列表,当前已打开文件数:', this.openedFilePaths.size);\n }\n\n /**\n * 关闭文件\n * @param path 文件路径\n */\n closeFile(path: string): void {\n this.openedFilePaths.delete(path);\n }\n\n /**\n * 检查文件是否已打开\n * @param path 文件路径\n */\n isFileOpened(path: string): boolean {\n return this.openedFilePaths.has(path);\n }\n\n /**\n * 获取目录树结构(文本格式)\n * 每次调用都会动态获取最新的文件树\n */\n async getDirectoryTree(options?: { \n maxDepth?: number;\n showDescription?: boolean;\n }): Promise<string> {\n const { maxDepth = Infinity, showDescription = false } = options || {};\n return await this._buildTreeText(this.root, 0, maxDepth, showDescription);\n }\n\n /**\n * 导出知识库内容(用于发送给大模型)\n * 每次导出都会动态重新获取文件树和文件内容\n */\n async export(options?: ExportOptions): Promise<string> {\n const { includeTree = true } = options || {};\n\n let result = `# ${this.name}\\n`;\n \n if (this.description) {\n result += `${this.description}\\n\\n`;\n }\n\n // 导出目录结构树(动态获取)\n if (includeTree) {\n result += `## 目录结构\\n`;\n result += await this.getDirectoryTree({ showDescription: true });\n result += '\\n\\n';\n }\n\n // 导出已打开的文件内容(每次都重新读取)\n console.log('[KnowledgeBase.export] 已打开的文件数:', this.openedFilePaths.size);\n console.log('[KnowledgeBase.export] 已打开的文件列表:', Array.from(this.openedFilePaths));\n console.log('[KnowledgeBase.export] openedFilePaths 类型:', typeof this.openedFilePaths, this.openedFilePaths);\n console.log('[KnowledgeBase.export] 是否是 Set:', this.openedFilePaths instanceof Set);\n \n if (this.openedFilePaths.size > 0) {\n result += `## 已打开的文件\\n\\n`;\n \n console.log('[KnowledgeBase.export] ===== 开始遍历已打开的文件 =====');\n \n // 测试:使用 Array.from 转换后遍历\n const pathsArray = Array.from(this.openedFilePaths);\n console.log('[KnowledgeBase.export] 转换为数组:', pathsArray);\n \n let iterationCount = 0;\n for (const path of pathsArray) {\n iterationCount++;\n console.log('[KnowledgeBase.export] 正在导出文件 #' + iterationCount + ':', path);\n // 动态查找文件节点\n const node = await this.root.findByPath(path);\n console.log('[KnowledgeBase.export] 找到节点:', node ? `${node.name}${node.extname || ''}` : 'null');\n \n if (node && node.isFile) {\n try {\n console.log('[KnowledgeBase.export] 开始读取文件内容...');\n const content = await node.getContent();\n console.log('[KnowledgeBase.export] 文件内容长度:', content.length);\n \n // 使用 name 作为展示标题(如果是动态文档,name 就是 title)\n const displayTitle = node.name + (node.extname || '');\n result += `### ${displayTitle}\\n`;\n \n if (node.description) {\n result += `> ${node.description}\\n\\n`;\n }\n result += '--BEGIN--\\n';\n result += content;\n result += '\\n--END--\\n\\n';\n } catch (error) {\n console.error(`Failed to export file ${path}:`, error);\n const displayTitle = node.name + (node.extname || '');\n result += `### ${displayTitle} [已删除]\\n`;\n result += `> 读取失败: ${error}\\n\\n`;\n }\n } else {\n // 文件不存在或被删除\n console.log('[KnowledgeBase.export] 节点不存在或不是文件');\n result += `### ${path} [已删除]\\n`;\n result += `> 该文件已被删除或不存在\\n\\n`;\n }\n }\n console.log('[KnowledgeBase.export] ===== 遍历完成,共处理', iterationCount, '个文件 =====');\n } else {\n console.log('[KnowledgeBase.export] 没有已打开的文件');\n result += `## 已打开的文件\\n暂无打开的文件\\n\\n`;\n }\n\n console.log('[KnowledgeBase.export] 导出完成,总长度:', result.length);\n return result;\n }\n\n /**\n * 获取根节点\n */\n getRoot(): KnowledgeNode {\n return this.root;\n }\n\n /**\n * 根据路径查找节点(动态查找)\n */\n async findNode(path: string): Promise<KnowledgeNode | null> {\n return await this.root.findByPath(path);\n }\n\n /**\n * 清空所有已打开的文件\n */\n clearOpenedFiles(): void {\n this.openedFilePaths.clear();\n }\n\n /**\n * 获取已打开的文件路径列表\n */\n getOpenedFilePaths(): string[] {\n return Array.from(this.openedFilePaths);\n }\n\n /**\n * 构建树形文本(动态获取子节点)\n */\n private async _buildTreeText(\n node: KnowledgeNode,\n depth: number,\n maxDepth: number,\n showDescription: boolean,\n currentPath: string = ''\n ): Promise<string> {\n if (depth > maxDepth) {\n return '';\n }\n\n const prefix = depth > 0 ? '-'.repeat(depth) + ' ' : '';\n let text = '';\n\n // 根节点不显示\n if (depth > 0) {\n // 隐藏的节点不显示\n if (node.hidden) {\n return '';\n }\n\n const path = currentPath;\n const openedMark = this.openedFilePaths.has(path) ? ' [已打开]' : '';\n // 直接使用 name 作为展示名称\n const displayName = node.extname ? `${node.name}${node.extname}` : node.name;\n const folderMark = node.isDirectory ? '/' : '';\n const ellipsisMark = node.ellipsis ? ' ...' : '';\n text += `${prefix}${displayName}${folderMark}${openedMark}${ellipsisMark}`;\n \n if (showDescription && node.description && node.description !== 'undefined') {\n text += ` (${node.description})`;\n }\n \n text += '\\n';\n }\n\n // 动态获取子节点\n if (node.isDirectory) {\n try {\n const children = await node.getChildren();\n for (const child of children) {\n // 直接使用 id 构建路径\n const childId = child.extname ? `${child.id}${child.extname}` : child.id;\n const childPath = currentPath ? `${currentPath}/${childId}` : childId;\n text += await this._buildTreeText(child, depth + 1, maxDepth, showDescription, childPath);\n }\n } catch (error) {\n console.error(`Failed to load children of ${node.name}:`, error);\n }\n }\n\n return text;\n }\n}\n\n"],"names":["KnowledgeBase","constructor","config","_defineProperty","Set","Map","name","description","root","KnowledgeNode","KnowledgeNodeType","DIRECTORY","metadata","providerId","registerProvider","provider","providers","set","id","registerDynamicDirectory","dynamicDirectories","dynamicDocuments","has","getProvider","_this","weight","getRootNode","type","getChildren","_getChildren","_asyncToGenerator","allNodes","Array","from","values","push","map","p","dynamicDirs","dir","hidden","isDynamicDirectory","sort","a","b","weightA","getNodeWeight","weightB","apply","arguments","readFile","_readFile","Error","createDynamicDirectoryProvider","get","nodeId","_provider$weight","dynamicDir","_dynamicDir$weight","directoryId","_dirConfig$weight","_this2","dirConfig","concat","_getChildren2","parentId","docs","doc","title","FILE","extname","isDynamicDocument","docId","_x","_readFile2","fileId","match","dirId","result","content","_x2","addDynamicDocument","DEFAULT_DYNAMIC_DIR_ID","removeDynamicDocument","delete","path","closeFile","entries","getDynamicDocument","_this$dynamicDocument","undefined","clearDynamicDocuments","forEach","_","clear","openDynamicDocument","_this3","openFile","_this4","console","log","node","findByPath","isFile","openedFilePaths","add","size","isFileOpened","getDirectoryTree","options","_this5","maxDepth","Infinity","showDescription","_buildTreeText","export","_this6","includeTree","pathsArray","iterationCount","getContent","length","displayTitle","error","getRoot","findNode","_this7","clearOpenedFiles","getOpenedFilePaths","depth","_arguments","_this8","currentPath","prefix","repeat","text","openedMark","displayName","folderMark","isDirectory","ellipsisMark","ellipsis","children","child","childId","childPath"],"mappings":"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"}
@@ -0,0 +1,228 @@
1
+ import { asyncToGenerator as _asyncToGenerator, objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { KnowledgeNodeType } from './types.js';
3
+
4
+ /**
5
+ * Provider 管理器接口
6
+ */
7
+
8
+ /**
9
+ * 知识节点类
10
+ */
11
+ class KnowledgeNode {
12
+ constructor(id, name, type, providerManager, options) {
13
+ this.id = id;
14
+ this.name = name;
15
+ this.type = type;
16
+ this.providerManager = providerManager;
17
+ this.description = options === null || options === void 0 ? void 0 : options.description;
18
+ this.extname = options === null || options === void 0 ? void 0 : options.extname;
19
+ this.ellipsis = options === null || options === void 0 ? void 0 : options.ellipsis;
20
+ this.hidden = options === null || options === void 0 ? void 0 : options.hidden;
21
+ this.metadata = options === null || options === void 0 ? void 0 : options.metadata;
22
+ this.children = options === null || options === void 0 ? void 0 : options.children;
23
+ }
24
+
25
+ /**
26
+ * 是否为目录
27
+ */
28
+ get isDirectory() {
29
+ return this.type === KnowledgeNodeType.DIRECTORY;
30
+ }
31
+
32
+ /**
33
+ * 是否为文件
34
+ */
35
+ get isFile() {
36
+ return this.type === KnowledgeNodeType.FILE;
37
+ }
38
+
39
+ /**
40
+ * 获取文件内容(每次都重新读取)
41
+ */
42
+ getContent() {
43
+ var _this = this;
44
+ return _asyncToGenerator(function* () {
45
+ var _this$metadata;
46
+ console.log('[KnowledgeNode.getContent] 节点:', _this.name, '类型:', _this.type, 'ID:', _this.id);
47
+ if (!_this.isFile) {
48
+ throw new Error('Cannot get content from a directory node');
49
+ }
50
+ var providerId = (_this$metadata = _this.metadata) === null || _this$metadata === void 0 ? void 0 : _this$metadata.providerId;
51
+ console.log('[KnowledgeNode.getContent] providerId:', providerId);
52
+ if (!providerId) {
53
+ throw new Error("No provider found for file ".concat(_this.id));
54
+ }
55
+ var provider = _this.providerManager.getProvider(providerId);
56
+ console.log('[KnowledgeNode.getContent] provider:', provider ? provider.name : 'null');
57
+ if (!provider) {
58
+ throw new Error("Provider ".concat(providerId, " not registered"));
59
+ }
60
+ try {
61
+ var _this$metadata2;
62
+ console.log('[KnowledgeNode.getContent] 调用 provider.readFile...');
63
+
64
+ // 如果有 parentPath,拼接完整路径;否则直接使用 id
65
+ var parentPath = (_this$metadata2 = _this.metadata) === null || _this$metadata2 === void 0 ? void 0 : _this$metadata2.parentPath;
66
+ var fullPath = parentPath ? "".concat(parentPath, "/").concat(_this.id) : _this.id;
67
+ console.log('[KnowledgeNode.getContent] fullPath:', fullPath, 'parentPath:', parentPath, 'id:', _this.id);
68
+ var content = yield provider.readFile(fullPath);
69
+ console.log('[KnowledgeNode.getContent] 读取成功,内容长度:', content.length);
70
+ return content;
71
+ } catch (error) {
72
+ console.error("Failed to load file ".concat(_this.id, ":"), error);
73
+ throw error;
74
+ }
75
+ })();
76
+ }
77
+
78
+ /**
79
+ * 获取目录的子节点列表(每次都动态重新查询)
80
+ */
81
+ getChildren() {
82
+ var _this2 = this;
83
+ return _asyncToGenerator(function* () {
84
+ var _this2$metadata;
85
+ if (!_this2.isDirectory) {
86
+ throw new Error('Cannot get children from a file node');
87
+ }
88
+ var providerId = (_this2$metadata = _this2.metadata) === null || _this2$metadata === void 0 ? void 0 : _this2$metadata.providerId;
89
+ if (!providerId) {
90
+ throw new Error("No provider found for directory ".concat(_this2.id));
91
+ }
92
+ var provider = _this2.providerManager.getProvider(providerId);
93
+ if (!provider) {
94
+ throw new Error("Provider ".concat(providerId, " not registered"));
95
+ }
96
+ try {
97
+ var nodes = yield provider.getChildren(_this2.id);
98
+ return nodes.map(node => new KnowledgeNode(node.id, node.name, node.type, _this2.providerManager, {
99
+ description: node.description,
100
+ extname: node.extname,
101
+ ellipsis: node.ellipsis,
102
+ hidden: node.hidden,
103
+ // 传递父路径到子节点,用于 readFile 时拼接完整路径
104
+ metadata: _objectSpread2({
105
+ providerId,
106
+ parentPath: _this2.id === '__root__' ? '' : _this2.id
107
+ }, node.metadata),
108
+ children: node.children
109
+ }));
110
+ } catch (error) {
111
+ console.error("Failed to load directory ".concat(_this2.id, ":"), error);
112
+ throw error;
113
+ }
114
+ })();
115
+ }
116
+
117
+ /**
118
+ * 添加子节点
119
+ */
120
+ addChild(child) {
121
+ if (!this.isDirectory) {
122
+ throw new Error('Cannot add child to a file node');
123
+ }
124
+ if (!this.children) {
125
+ this.children = [];
126
+ }
127
+ this.children.push(child);
128
+ }
129
+
130
+ /**
131
+ * 根据路径查找节点(动态获取子节点)
132
+ * @param path 路径,如 "dsl/page1"
133
+ */
134
+ findByPath(path) {
135
+ var _this3 = this;
136
+ return _asyncToGenerator(function* () {
137
+ var parts = path.split('/').filter(Boolean);
138
+ return yield _this3._findByParts(parts);
139
+ })();
140
+ }
141
+ _findByParts(parts) {
142
+ var _this4 = this;
143
+ return _asyncToGenerator(function* () {
144
+ console.log('[KnowledgeNode._findByParts] 当前节点:', _this4.name, '查找parts:', parts);
145
+ if (parts.length === 0) {
146
+ return _this4;
147
+ }
148
+ var [first, ...rest] = parts;
149
+ if (!_this4.isDirectory) {
150
+ console.log('[KnowledgeNode._findByParts] 当前节点不是目录,返回null');
151
+ return null;
152
+ }
153
+
154
+ // 动态获取子节点
155
+ var children = yield _this4.getChildren();
156
+ console.log('[KnowledgeNode._findByParts] 子节点列表:', children.map(c => c.extname ? "".concat(c.id).concat(c.extname) : c.id));
157
+
158
+ // 直接使用 id 匹配路径段
159
+ var child = children.find(c => {
160
+ var fullId = c.extname ? "".concat(c.id).concat(c.extname) : c.id;
161
+ return fullId === first || c.id === first;
162
+ });
163
+ console.log('[KnowledgeNode._findByParts] 查找', first, '结果:', child ? "".concat(child.id).concat(child.extname || '') : 'null');
164
+ if (!child) {
165
+ return null;
166
+ }
167
+ if (rest.length === 0) {
168
+ return child;
169
+ }
170
+ return yield child._findByParts(rest);
171
+ })();
172
+ }
173
+
174
+ /**
175
+ * 获取节点的完整路径(动态获取子节点)
176
+ */
177
+ getPath(root) {
178
+ var _this5 = this;
179
+ return _asyncToGenerator(function* () {
180
+ var path = yield _this5._buildPath(root);
181
+ return path.join('/');
182
+ })();
183
+ }
184
+ _buildPath(root) {
185
+ var _arguments = arguments,
186
+ _this6 = this;
187
+ return _asyncToGenerator(function* () {
188
+ var currentPath = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : [];
189
+ if (root === _this6) {
190
+ return currentPath;
191
+ }
192
+ if (!root.isDirectory) {
193
+ return [];
194
+ }
195
+
196
+ // 动态获取子节点
197
+ var children = yield root.getChildren();
198
+ for (var child of children) {
199
+ var path = yield _this6._buildPath(child, [...currentPath, child.name]);
200
+ if (path.length > 0) {
201
+ return path;
202
+ }
203
+ }
204
+ return [];
205
+ })();
206
+ }
207
+
208
+ /**
209
+ * 转换为普通对象
210
+ */
211
+ toJSON() {
212
+ var _this$children;
213
+ return {
214
+ id: this.id,
215
+ name: this.name,
216
+ type: this.type,
217
+ description: this.description,
218
+ extname: this.extname,
219
+ ellipsis: this.ellipsis,
220
+ hidden: this.hidden,
221
+ metadata: this.metadata,
222
+ children: (_this$children = this.children) === null || _this$children === void 0 ? void 0 : _this$children.map(c => c.toJSON())
223
+ };
224
+ }
225
+ }
226
+
227
+ export { KnowledgeNode };
228
+ //# sourceMappingURL=knowledge-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-node.js","sources":["../../../src/agents/knowledges/knowledge-node.ts"],"sourcesContent":["/**\n * 知识节点实现\n */\n\nimport { IKnowledgeNode, KnowledgeNodeType, IDirectoryProvider } from './types';\n\n/**\n * Provider 管理器接口\n */\nexport interface IProviderManager {\n getProvider(providerId: string): IDirectoryProvider | undefined;\n}\n\n/**\n * 知识节点类\n */\nexport class KnowledgeNode implements IKnowledgeNode {\n id: string;\n name: string;\n type: KnowledgeNodeType;\n description?: string;\n extname?: string;\n ellipsis?: boolean;\n hidden?: boolean;\n children?: KnowledgeNode[];\n metadata?: Record<string, any>;\n\n private providerManager: IProviderManager;\n\n constructor(\n id: string,\n name: string,\n type: KnowledgeNodeType,\n providerManager: IProviderManager,\n options?: {\n description?: string;\n extname?: string;\n ellipsis?: boolean;\n hidden?: boolean;\n metadata?: Record<string, any>;\n children?: KnowledgeNode[];\n }\n ) {\n this.id = id;\n this.name = name;\n this.type = type;\n this.providerManager = providerManager;\n this.description = options?.description;\n this.extname = options?.extname;\n this.ellipsis = options?.ellipsis;\n this.hidden = options?.hidden;\n this.metadata = options?.metadata;\n this.children = options?.children;\n }\n\n /**\n * 是否为目录\n */\n get isDirectory(): boolean {\n return this.type === KnowledgeNodeType.DIRECTORY;\n }\n\n /**\n * 是否为文件\n */\n get isFile(): boolean {\n return this.type === KnowledgeNodeType.FILE;\n }\n\n /**\n * 获取文件内容(每次都重新读取)\n */\n async getContent(): Promise<string> {\n console.log('[KnowledgeNode.getContent] 节点:', this.name, '类型:', this.type, 'ID:', this.id);\n \n if (!this.isFile) {\n throw new Error('Cannot get content from a directory node');\n }\n\n const providerId = this.metadata?.providerId;\n console.log('[KnowledgeNode.getContent] providerId:', providerId);\n \n if (!providerId) {\n throw new Error(`No provider found for file ${this.id}`);\n }\n\n const provider = this.providerManager.getProvider(providerId);\n console.log('[KnowledgeNode.getContent] provider:', provider ? provider.name : 'null');\n \n if (!provider) {\n throw new Error(`Provider ${providerId} not registered`);\n }\n\n try {\n console.log('[KnowledgeNode.getContent] 调用 provider.readFile...');\n \n // 如果有 parentPath,拼接完整路径;否则直接使用 id\n const parentPath = this.metadata?.parentPath;\n const fullPath = parentPath ? `${parentPath}/${this.id}` : this.id;\n console.log('[KnowledgeNode.getContent] fullPath:', fullPath, 'parentPath:', parentPath, 'id:', this.id);\n \n const content = await provider.readFile(fullPath);\n console.log('[KnowledgeNode.getContent] 读取成功,内容长度:', content.length);\n return content;\n } catch (error) {\n console.error(`Failed to load file ${this.id}:`, error);\n throw error;\n }\n }\n\n /**\n * 获取目录的子节点列表(每次都动态重新查询)\n */\n async getChildren(): Promise<KnowledgeNode[]> {\n if (!this.isDirectory) {\n throw new Error('Cannot get children from a file node');\n }\n\n const providerId = this.metadata?.providerId;\n if (!providerId) {\n throw new Error(`No provider found for directory ${this.id}`);\n }\n\n const provider = this.providerManager.getProvider(providerId);\n if (!provider) {\n throw new Error(`Provider ${providerId} not registered`);\n }\n\n try {\n const nodes = await provider.getChildren(this.id);\n return nodes.map(node => \n new KnowledgeNode(\n node.id, \n node.name, \n node.type,\n this.providerManager,\n {\n description: node.description,\n extname: node.extname,\n ellipsis: node.ellipsis,\n hidden: node.hidden,\n // 传递父路径到子节点,用于 readFile 时拼接完整路径\n metadata: { \n providerId, \n parentPath: this.id === '__root__' ? '' : this.id, // 根节点的 parentPath 为空\n ...node.metadata \n },\n children: node.children as KnowledgeNode[]\n }\n )\n );\n } catch (error) {\n console.error(`Failed to load directory ${this.id}:`, error);\n throw error;\n }\n }\n\n /**\n * 添加子节点\n */\n addChild(child: KnowledgeNode): void {\n if (!this.isDirectory) {\n throw new Error('Cannot add child to a file node');\n }\n\n if (!this.children) {\n this.children = [];\n }\n\n this.children.push(child);\n }\n\n /**\n * 根据路径查找节点(动态获取子节点)\n * @param path 路径,如 \"dsl/page1\"\n */\n async findByPath(path: string): Promise<KnowledgeNode | null> {\n const parts = path.split('/').filter(Boolean);\n return await this._findByParts(parts);\n }\n\n private async _findByParts(parts: string[]): Promise<KnowledgeNode | null> {\n console.log('[KnowledgeNode._findByParts] 当前节点:', this.name, '查找parts:', parts);\n \n if (parts.length === 0) {\n return this;\n }\n\n const [first, ...rest] = parts;\n\n if (!this.isDirectory) {\n console.log('[KnowledgeNode._findByParts] 当前节点不是目录,返回null');\n return null;\n }\n\n // 动态获取子节点\n const children = await this.getChildren();\n console.log('[KnowledgeNode._findByParts] 子节点列表:', children.map(c => c.extname ? `${c.id}${c.extname}` : c.id));\n \n // 直接使用 id 匹配路径段\n const child = children.find(c => {\n const fullId = c.extname ? `${c.id}${c.extname}` : c.id;\n return fullId === first || c.id === first;\n });\n \n console.log('[KnowledgeNode._findByParts] 查找', first, '结果:', child ? `${child.id}${child.extname || ''}` : 'null');\n \n if (!child) {\n return null;\n }\n\n if (rest.length === 0) {\n return child;\n }\n\n return await child._findByParts(rest);\n }\n\n /**\n * 获取节点的完整路径(动态获取子节点)\n */\n async getPath(root: KnowledgeNode): Promise<string> {\n const path = await this._buildPath(root);\n return path.join('/');\n }\n\n private async _buildPath(root: KnowledgeNode, currentPath: string[] = []): Promise<string[]> {\n if (root === this) {\n return currentPath;\n }\n\n if (!root.isDirectory) {\n return [];\n }\n\n // 动态获取子节点\n const children = await root.getChildren();\n \n for (const child of children) {\n const path = await this._buildPath(child, [...currentPath, child.name]);\n if (path.length > 0) {\n return path;\n }\n }\n\n return [];\n }\n\n /**\n * 转换为普通对象\n */\n toJSON(): IKnowledgeNode {\n return {\n id: this.id,\n name: this.name,\n type: this.type,\n description: this.description,\n extname: this.extname,\n ellipsis: this.ellipsis,\n hidden: this.hidden,\n metadata: this.metadata,\n children: this.children?.map(c => c.toJSON())\n };\n }\n}\n\n"],"names":["KnowledgeNode","constructor","id","name","type","providerManager","options","description","extname","ellipsis","hidden","metadata","children","isDirectory","KnowledgeNodeType","DIRECTORY","isFile","FILE","getContent","_this","_asyncToGenerator","_this$metadata","console","log","Error","providerId","concat","provider","getProvider","_this$metadata2","parentPath","fullPath","content","readFile","length","error","getChildren","_this2","_this2$metadata","nodes","map","node","_objectSpread","addChild","child","push","findByPath","path","_this3","parts","split","filter","Boolean","_findByParts","_this4","first","rest","c","find","fullId","getPath","root","_this5","_buildPath","join","_arguments","arguments","_this6","currentPath","undefined","toJSON","_this$children"],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { asyncToGenerator as _asyncToGenerator } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+
3
+ /**
4
+ * 知识库类型定义
5
+ */
6
+
7
+ /**
8
+ * 知识节点类型
9
+ */
10
+ var KnowledgeNodeType = /*#__PURE__*/function (KnowledgeNodeType) {
11
+ /** 目录 */
12
+ KnowledgeNodeType["DIRECTORY"] = "directory";
13
+ /** 文件 */
14
+ KnowledgeNodeType["FILE"] = "file";
15
+ return KnowledgeNodeType;
16
+ }({});
17
+
18
+ /**
19
+ * 知识节点接口
20
+ */
21
+
22
+ /**
23
+ * 目录提供者接口
24
+ * 定义目录提供者需要实现的方法
25
+ */
26
+
27
+ /**
28
+ * 目录提供者配置
29
+ */
30
+
31
+ /**
32
+ * DirectoryProvider 类
33
+ * 使用 new DirectoryProvider(config) 创建,而不是继承
34
+ */
35
+ class DirectoryProvider {
36
+ constructor(config) {
37
+ var _config$weight, _config$hidden;
38
+ this.id = config.id;
39
+ this.name = config.name;
40
+ this.description = config.description;
41
+ this.weight = (_config$weight = config.weight) !== null && _config$weight !== void 0 ? _config$weight : 0;
42
+ this.hidden = (_config$hidden = config.hidden) !== null && _config$hidden !== void 0 ? _config$hidden : false;
43
+ this._getChildren = config.getChildren;
44
+ this._readFile = config.readFile;
45
+ this._customRootNode = config.customRootNode;
46
+ }
47
+
48
+ /**
49
+ * 获取根目录节点信息
50
+ */
51
+ getRootNode() {
52
+ if (this._customRootNode) {
53
+ return this._customRootNode;
54
+ }
55
+ return {
56
+ id: this.id,
57
+ name: this.name,
58
+ type: KnowledgeNodeType.DIRECTORY,
59
+ description: this.description,
60
+ hidden: this.hidden,
61
+ metadata: {
62
+ providerId: this.id
63
+ }
64
+ };
65
+ }
66
+
67
+ /**
68
+ * 获取子节点列表
69
+ */
70
+ getChildren(parentId) {
71
+ var _this = this;
72
+ return _asyncToGenerator(function* () {
73
+ return yield _this._getChildren(parentId);
74
+ })();
75
+ }
76
+
77
+ /**
78
+ * 读取文件内容
79
+ */
80
+ readFile(fileId) {
81
+ var _this2 = this;
82
+ return _asyncToGenerator(function* () {
83
+ return yield _this2._readFile(fileId);
84
+ })();
85
+ }
86
+ }
87
+
88
+ /**
89
+ * 动态文档接口
90
+ */
91
+
92
+ /**
93
+ * 动态文档目录配置
94
+ */
95
+
96
+ /**
97
+ * 知识库配置
98
+ */
99
+
100
+ /**
101
+ * 知识库导出选项
102
+ */
103
+
104
+ export { DirectoryProvider, KnowledgeNodeType };
105
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../../src/agents/knowledges/types.ts"],"sourcesContent":["/**\n * 知识库类型定义\n */\n\n/**\n * 知识节点类型\n */\nexport enum KnowledgeNodeType {\n /** 目录 */\n DIRECTORY = 'directory',\n /** 文件 */\n FILE = 'file'\n}\n\n/**\n * 知识节点接口\n */\nexport interface IKnowledgeNode {\n /** 节点ID */\n id: string;\n /** 节点名称 */\n name: string;\n /** 节点类型 */\n type: KnowledgeNodeType;\n /** 节点描述 */\n description?: string;\n /** 文件扩展名(如 .dsl, .md 等;目录也可以有扩展名) */\n extname?: string;\n /** 是否显示省略号(表示不完整的树) */\n ellipsis?: boolean;\n /** 是否隐藏(隐藏的节点不在目录树中显示,但可以打开) */\n hidden?: boolean;\n /** 子节点(仅目录类型) */\n children?: IKnowledgeNode[];\n /** 元数据 */\n metadata?: Record<string, any>;\n}\n\n/**\n * 目录提供者接口\n * 定义目录提供者需要实现的方法\n */\nexport interface IDirectoryProvider {\n /** 目录ID */\n readonly id: string;\n /** 目录名称 */\n readonly name: string;\n /** 目录描述 */\n readonly description?: string;\n /** 权重(数字越大优先级越高,影响目录顺序和打开文件的顺序),默认为 0 */\n readonly weight?: number;\n\n /**\n * 获取根目录节点信息\n */\n getRootNode(): IKnowledgeNode;\n\n /**\n * 获取子节点列表(动态获取最新数据)\n * @param parentId 父节点ID\n * @returns 子节点列表\n */\n getChildren(parentId: string): Promise<IKnowledgeNode[]>;\n\n /**\n * 读取文件内容(动态获取最新内容)\n * @param fileId 文件ID\n * @returns 文件内容\n */\n readFile(fileId: string): Promise<string>;\n}\n\n/**\n * 目录提供者配置\n */\nexport interface DirectoryProviderConfig {\n /** 目录ID */\n id: string;\n /** 目录名称 */\n name: string;\n /** 目录描述 */\n description?: string;\n /** 权重(数字越大优先级越高) */\n weight?: number;\n /** 是否隐藏 */\n hidden?: boolean;\n /** 获取子节点的函数 */\n getChildren: (parentId: string) => Promise<IKnowledgeNode[]>;\n /** 读取文件内容的函数 */\n readFile: (fileId: string) => Promise<string>;\n /** 自定义根节点(可选,如果不提供则使用默认的目录节点) */\n customRootNode?: IKnowledgeNode;\n}\n\n/**\n * DirectoryProvider 类\n * 使用 new DirectoryProvider(config) 创建,而不是继承\n */\nexport class DirectoryProvider implements IDirectoryProvider {\n readonly id: string;\n readonly name: string;\n readonly description?: string;\n readonly weight: number;\n readonly hidden: boolean;\n \n private _getChildren: (parentId: string) => Promise<IKnowledgeNode[]>;\n private _readFile: (fileId: string) => Promise<string>;\n private _customRootNode?: IKnowledgeNode;\n\n constructor(config: DirectoryProviderConfig) {\n this.id = config.id;\n this.name = config.name;\n this.description = config.description;\n this.weight = config.weight ?? 0;\n this.hidden = config.hidden ?? false;\n this._getChildren = config.getChildren;\n this._readFile = config.readFile;\n this._customRootNode = config.customRootNode;\n }\n\n /**\n * 获取根目录节点信息\n */\n getRootNode(): IKnowledgeNode {\n if (this._customRootNode) {\n return this._customRootNode;\n }\n return {\n id: this.id,\n name: this.name,\n type: KnowledgeNodeType.DIRECTORY,\n description: this.description,\n hidden: this.hidden,\n metadata: { providerId: this.id }\n };\n }\n\n /**\n * 获取子节点列表\n */\n async getChildren(parentId: string): Promise<IKnowledgeNode[]> {\n return await this._getChildren(parentId);\n }\n\n /**\n * 读取文件内容\n */\n async readFile(fileId: string): Promise<string> {\n return await this._readFile(fileId);\n }\n}\n\n/**\n * 动态文档接口\n */\nexport interface DynamicDocument {\n /** 文档唯一ID */\n id: string;\n /** 文档标题 */\n title?: string;\n /** 文档描述 */\n description?: string;\n /** 文档内容 */\n content: string;\n /** 文档类型(如:画布、组件等,用于分类) */\n docType?: string;\n /** 文件扩展名,默认为 .md */\n extname?: string;\n /** 所属目录的ID(如果不指定则使用默认动态文档目录) */\n directoryId?: string;\n}\n\n/**\n * 动态文档目录配置\n */\nexport interface DynamicDocDirectoryConfig {\n /** 目录ID */\n id: string;\n /** 目录名称 */\n name: string;\n /** 目录描述 */\n description?: string;\n /** 权重(数字越大优先级越高) */\n weight?: number;\n /** 是否隐藏(隐藏的目录不在目录树中显示,但可以打开文件) */\n hidden?: boolean;\n}\n\n/**\n * 知识库配置\n */\nexport interface KnowledgeBaseConfig {\n /** 知识库名称 */\n name: string;\n /** 知识库描述 */\n description?: string;\n}\n\n/**\n * 知识库导出选项\n */\nexport interface ExportOptions {\n /** 是否包含目录树 */\n includeTree?: boolean;\n /** 是否包含动态文档 */\n includeDynamicDocs?: boolean;\n}\n\n"],"names":["KnowledgeNodeType","DirectoryProvider","constructor","config","_config$weight","_config$hidden","id","name","description","weight","hidden","_getChildren","getChildren","_readFile","readFile","_customRootNode","customRootNode","getRootNode","type","DIRECTORY","metadata","providerId","parentId","_this","_asyncToGenerator","fileId","_this2"],"mappings":";;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAYA,iBAAiB,0BAAjBA,iBAAiB,EAAA;AAC3B;EADUA,iBAAiB,CAAA,WAAA,CAAA,GAAA,WAAA;AAG3B;EAHUA,iBAAiB,CAAA,MAAA,CAAA,GAAA,MAAA;AAAA,EAAA,OAAjBA,iBAAiB;AAAA,CAAA,CAAA,EAAA;;AAO7B;AACA;AACA;;AAsBA;AACA;AACA;AACA;;AA+BA;AACA;AACA;;AAoBA;AACA;AACA;AACA;AACO,MAAMC,iBAAiB,CAA+B;EAW3DC,WAAWA,CAACC,MAA+B,EAAE;IAAA,IAAAC,cAAA,EAAAC,cAAA;AAC3C,IAAA,IAAI,CAACC,EAAE,GAAGH,MAAM,CAACG,EAAE;AACnB,IAAA,IAAI,CAACC,IAAI,GAAGJ,MAAM,CAACI,IAAI;AACvB,IAAA,IAAI,CAACC,WAAW,GAAGL,MAAM,CAACK,WAAW;AACrC,IAAA,IAAI,CAACC,MAAM,GAAA,CAAAL,cAAA,GAAGD,MAAM,CAACM,MAAM,MAAA,IAAA,IAAAL,cAAA,KAAA,MAAA,GAAAA,cAAA,GAAI,CAAC;AAChC,IAAA,IAAI,CAACM,MAAM,GAAA,CAAAL,cAAA,GAAGF,MAAM,CAACO,MAAM,MAAA,IAAA,IAAAL,cAAA,KAAA,MAAA,GAAAA,cAAA,GAAI,KAAK;AACpC,IAAA,IAAI,CAACM,YAAY,GAAGR,MAAM,CAACS,WAAW;AACtC,IAAA,IAAI,CAACC,SAAS,GAAGV,MAAM,CAACW,QAAQ;AAChC,IAAA,IAAI,CAACC,eAAe,GAAGZ,MAAM,CAACa,cAAc;AAC9C,EAAA;;AAEA;AACF;AACA;AACEC,EAAAA,WAAWA,GAAmB;IAC5B,IAAI,IAAI,CAACF,eAAe,EAAE;MACxB,OAAO,IAAI,CAACA,eAAe;AAC7B,IAAA;IACA,OAAO;MACLT,EAAE,EAAE,IAAI,CAACA,EAAE;MACXC,IAAI,EAAE,IAAI,CAACA,IAAI;MACfW,IAAI,EAAElB,iBAAiB,CAACmB,SAAS;MACjCX,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BE,MAAM,EAAE,IAAI,CAACA,MAAM;AACnBU,MAAAA,QAAQ,EAAE;QAAEC,UAAU,EAAE,IAAI,CAACf;AAAG;KACjC;AACH,EAAA;;AAEA;AACF;AACA;EACQM,WAAWA,CAACU,QAAgB,EAA6B;AAAA,IAAA,IAAAC,KAAA,GAAA,IAAA;AAAA,IAAA,OAAAC,iBAAA,CAAA,aAAA;AAC7D,MAAA,OAAA,MAAaD,KAAI,CAACZ,YAAY,CAACW,QAAQ,CAAC;AAAC,IAAA,CAAA,CAAA,EAAA;AAC3C,EAAA;;AAEA;AACF;AACA;EACQR,QAAQA,CAACW,MAAc,EAAmB;AAAA,IAAA,IAAAC,MAAA,GAAA,IAAA;AAAA,IAAA,OAAAF,iBAAA,CAAA,aAAA;AAC9C,MAAA,OAAA,MAAaE,MAAI,CAACb,SAAS,CAACY,MAAM,CAAC;AAAC,IAAA,CAAA,CAAA,EAAA;AACtC,EAAA;AACF;;AAEA;AACA;AACA;;AAkBA;AACA;AACA;;AAcA;AACA;AACA;;AAQA;AACA;AACA;;;;"}