@pcontext/api 0.0.1

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 (342) hide show
  1. package/README.md +151 -0
  2. package/dist/app.d.mts +44779 -0
  3. package/dist/app.d.mts.map +1 -0
  4. package/dist/app.mjs +37 -0
  5. package/dist/app.mjs.map +1 -0
  6. package/dist/client.d.mts +22428 -0
  7. package/dist/client.d.mts.map +1 -0
  8. package/dist/client.mjs +15 -0
  9. package/dist/client.mjs.map +1 -0
  10. package/dist/dev.d.mts +11 -0
  11. package/dist/dev.d.mts.map +1 -0
  12. package/dist/dev.mjs +16 -0
  13. package/dist/dev.mjs.map +1 -0
  14. package/dist/index.d.mts +3 -0
  15. package/dist/index.mjs +10 -0
  16. package/dist/index.mjs.map +1 -0
  17. package/dist/modules/doc/chat.route.d.mts +18 -0
  18. package/dist/modules/doc/chat.route.d.mts.map +1 -0
  19. package/dist/modules/doc/chat.route.mjs +20 -0
  20. package/dist/modules/doc/chat.route.mjs.map +1 -0
  21. package/dist/modules/doc/chat.service.d.mts +10 -0
  22. package/dist/modules/doc/chat.service.d.mts.map +1 -0
  23. package/dist/modules/doc/chat.service.mjs +29 -0
  24. package/dist/modules/doc/chat.service.mjs.map +1 -0
  25. package/dist/modules/doc/doc.dto.d.mts +67 -0
  26. package/dist/modules/doc/doc.dto.d.mts.map +1 -0
  27. package/dist/modules/doc/doc.dto.mjs +43 -0
  28. package/dist/modules/doc/doc.dto.mjs.map +1 -0
  29. package/dist/modules/doc/doc.entity.d.mts +19 -0
  30. package/dist/modules/doc/doc.entity.d.mts.map +1 -0
  31. package/dist/modules/doc/doc.entity.mjs +1 -0
  32. package/dist/modules/doc/doc.repo.interface.d.mts +28 -0
  33. package/dist/modules/doc/doc.repo.interface.d.mts.map +1 -0
  34. package/dist/modules/doc/doc.repo.interface.mjs +1 -0
  35. package/dist/modules/doc/doc.route.d.mts +14193 -0
  36. package/dist/modules/doc/doc.route.d.mts.map +1 -0
  37. package/dist/modules/doc/doc.route.mjs +100 -0
  38. package/dist/modules/doc/doc.route.mjs.map +1 -0
  39. package/dist/modules/doc/doc.service.d.mts +38 -0
  40. package/dist/modules/doc/doc.service.d.mts.map +1 -0
  41. package/dist/modules/doc/doc.service.mjs +134 -0
  42. package/dist/modules/doc/doc.service.mjs.map +1 -0
  43. package/dist/modules/doc/doc.vo.d.mts +17 -0
  44. package/dist/modules/doc/doc.vo.d.mts.map +1 -0
  45. package/dist/modules/doc/doc.vo.mjs +1 -0
  46. package/dist/modules/doc/infrastructure/agent/engine/chat.d.mts +21 -0
  47. package/dist/modules/doc/infrastructure/agent/engine/chat.d.mts.map +1 -0
  48. package/dist/modules/doc/infrastructure/agent/engine/chat.mjs +36 -0
  49. package/dist/modules/doc/infrastructure/agent/engine/chat.mjs.map +1 -0
  50. package/dist/modules/doc/infrastructure/agent/engine/generate.d.mts +28 -0
  51. package/dist/modules/doc/infrastructure/agent/engine/generate.d.mts.map +1 -0
  52. package/dist/modules/doc/infrastructure/agent/engine/generate.mjs +135 -0
  53. package/dist/modules/doc/infrastructure/agent/engine/generate.mjs.map +1 -0
  54. package/dist/modules/doc/infrastructure/agent/engine/query-filter.d.mts +7 -0
  55. package/dist/modules/doc/infrastructure/agent/engine/query-filter.d.mts.map +1 -0
  56. package/dist/modules/doc/infrastructure/agent/engine/query-filter.mjs +12 -0
  57. package/dist/modules/doc/infrastructure/agent/engine/query-filter.mjs.map +1 -0
  58. package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.d.mts +54 -0
  59. package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.d.mts.map +1 -0
  60. package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.mjs +142 -0
  61. package/dist/modules/doc/infrastructure/agent/loaders/git-repository-reader.mjs.map +1 -0
  62. package/dist/modules/doc/infrastructure/agent/loaders/index.d.mts +3 -0
  63. package/dist/modules/doc/infrastructure/agent/loaders/index.mjs +4 -0
  64. package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.d.mts +42 -0
  65. package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.d.mts.map +1 -0
  66. package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.mjs +104 -0
  67. package/dist/modules/doc/infrastructure/agent/loaders/website-crawl-reader.mjs.map +1 -0
  68. package/dist/modules/doc/infrastructure/agent/settings.d.mts +5 -0
  69. package/dist/modules/doc/infrastructure/agent/settings.d.mts.map +1 -0
  70. package/dist/modules/doc/infrastructure/agent/settings.mjs +72 -0
  71. package/dist/modules/doc/infrastructure/agent/settings.mjs.map +1 -0
  72. package/dist/modules/doc/infrastructure/agent/storage/index.d.mts +7 -0
  73. package/dist/modules/doc/infrastructure/agent/storage/index.d.mts.map +1 -0
  74. package/dist/modules/doc/infrastructure/agent/storage/index.mjs +12 -0
  75. package/dist/modules/doc/infrastructure/agent/storage/index.mjs.map +1 -0
  76. package/dist/modules/doc/infrastructure/agent/storage/vector-store.d.mts +14 -0
  77. package/dist/modules/doc/infrastructure/agent/storage/vector-store.d.mts.map +1 -0
  78. package/dist/modules/doc/infrastructure/agent/storage/vector-store.mjs +35 -0
  79. package/dist/modules/doc/infrastructure/agent/storage/vector-store.mjs.map +1 -0
  80. package/dist/modules/doc/infrastructure/doc.po.d.mts +570 -0
  81. package/dist/modules/doc/infrastructure/doc.po.d.mts.map +1 -0
  82. package/dist/modules/doc/infrastructure/doc.po.mjs +54 -0
  83. package/dist/modules/doc/infrastructure/doc.po.mjs.map +1 -0
  84. package/dist/modules/doc/infrastructure/doc.repo.pg.d.mts +32 -0
  85. package/dist/modules/doc/infrastructure/doc.repo.pg.d.mts.map +1 -0
  86. package/dist/modules/doc/infrastructure/doc.repo.pg.mjs +157 -0
  87. package/dist/modules/doc/infrastructure/doc.repo.pg.mjs.map +1 -0
  88. package/dist/modules/doc/infrastructure/doc.repo.sqlite.d.mts +32 -0
  89. package/dist/modules/doc/infrastructure/doc.repo.sqlite.d.mts.map +1 -0
  90. package/dist/modules/doc/infrastructure/doc.repo.sqlite.mjs +153 -0
  91. package/dist/modules/doc/infrastructure/doc.repo.sqlite.mjs.map +1 -0
  92. package/dist/modules/doc/mcp.route.d.mts +18 -0
  93. package/dist/modules/doc/mcp.route.d.mts.map +1 -0
  94. package/dist/modules/doc/mcp.route.mjs +39 -0
  95. package/dist/modules/doc/mcp.route.mjs.map +1 -0
  96. package/dist/modules/doc/mcp.service.d.mts +22 -0
  97. package/dist/modules/doc/mcp.service.d.mts.map +1 -0
  98. package/dist/modules/doc/mcp.service.mjs +119 -0
  99. package/dist/modules/doc/mcp.service.mjs.map +1 -0
  100. package/dist/modules/rank/rank.dto.d.mts +10 -0
  101. package/dist/modules/rank/rank.dto.d.mts.map +1 -0
  102. package/dist/modules/rank/rank.dto.mjs +8 -0
  103. package/dist/modules/rank/rank.dto.mjs.map +1 -0
  104. package/dist/modules/rank/rank.route.d.mts +2033 -0
  105. package/dist/modules/rank/rank.route.d.mts.map +1 -0
  106. package/dist/modules/rank/rank.route.mjs +20 -0
  107. package/dist/modules/rank/rank.route.mjs.map +1 -0
  108. package/dist/modules/rank/rank.service.d.mts +32 -0
  109. package/dist/modules/rank/rank.service.d.mts.map +1 -0
  110. package/dist/modules/rank/rank.service.mjs +3 -0
  111. package/dist/modules/rank/rank.vo.d.mts +9 -0
  112. package/dist/modules/rank/rank.vo.d.mts.map +1 -0
  113. package/dist/modules/rank/rank.vo.mjs +1 -0
  114. package/dist/modules/task/infrastructure/mq/task-context.d.mts +29 -0
  115. package/dist/modules/task/infrastructure/mq/task-context.d.mts.map +1 -0
  116. package/dist/modules/task/infrastructure/mq/task-context.mjs +70 -0
  117. package/dist/modules/task/infrastructure/mq/task-context.mjs.map +1 -0
  118. package/dist/modules/task/infrastructure/mq/task-queue.d.mts +10 -0
  119. package/dist/modules/task/infrastructure/mq/task-queue.d.mts.map +1 -0
  120. package/dist/modules/task/infrastructure/mq/task-queue.mjs +12 -0
  121. package/dist/modules/task/infrastructure/mq/task-queue.mjs.map +1 -0
  122. package/dist/modules/task/infrastructure/mq/task-worker.d.mts +13 -0
  123. package/dist/modules/task/infrastructure/mq/task-worker.d.mts.map +1 -0
  124. package/dist/modules/task/infrastructure/mq/task-worker.mjs +35 -0
  125. package/dist/modules/task/infrastructure/mq/task-worker.mjs.map +1 -0
  126. package/dist/modules/task/infrastructure/task.po.d.mts +1147 -0
  127. package/dist/modules/task/infrastructure/task.po.d.mts.map +1 -0
  128. package/dist/modules/task/infrastructure/task.po.mjs +55 -0
  129. package/dist/modules/task/infrastructure/task.po.mjs.map +1 -0
  130. package/dist/modules/task/infrastructure/task.repo.pg.d.mts +21 -0
  131. package/dist/modules/task/infrastructure/task.repo.pg.d.mts.map +1 -0
  132. package/dist/modules/task/infrastructure/task.repo.pg.mjs +86 -0
  133. package/dist/modules/task/infrastructure/task.repo.pg.mjs.map +1 -0
  134. package/dist/modules/task/infrastructure/task.repo.sqlite.d.mts +21 -0
  135. package/dist/modules/task/infrastructure/task.repo.sqlite.d.mts.map +1 -0
  136. package/dist/modules/task/infrastructure/task.repo.sqlite.mjs +89 -0
  137. package/dist/modules/task/infrastructure/task.repo.sqlite.mjs.map +1 -0
  138. package/dist/modules/task/task.dto.d.mts +26 -0
  139. package/dist/modules/task/task.dto.d.mts.map +1 -0
  140. package/dist/modules/task/task.dto.mjs +25 -0
  141. package/dist/modules/task/task.dto.mjs.map +1 -0
  142. package/dist/modules/task/task.entity.d.mts +43 -0
  143. package/dist/modules/task/task.entity.d.mts.map +1 -0
  144. package/dist/modules/task/task.entity.mjs +1 -0
  145. package/dist/modules/task/task.repo.interface.d.mts +17 -0
  146. package/dist/modules/task/task.repo.interface.d.mts.map +1 -0
  147. package/dist/modules/task/task.repo.interface.mjs +1 -0
  148. package/dist/modules/task/task.route.d.mts +4087 -0
  149. package/dist/modules/task/task.route.d.mts.map +1 -0
  150. package/dist/modules/task/task.route.mjs +63 -0
  151. package/dist/modules/task/task.route.mjs.map +1 -0
  152. package/dist/modules/task/task.service.d.mts +28 -0
  153. package/dist/modules/task/task.service.d.mts.map +1 -0
  154. package/dist/modules/task/task.service.mjs +202 -0
  155. package/dist/modules/task/task.service.mjs.map +1 -0
  156. package/dist/modules/task/task.vo.d.mts +18 -0
  157. package/dist/modules/task/task.vo.d.mts.map +1 -0
  158. package/dist/modules/task/task.vo.mjs +1 -0
  159. package/dist/modules/user/application/user.service.d.mts +24 -0
  160. package/dist/modules/user/application/user.service.d.mts.map +1 -0
  161. package/dist/modules/user/application/user.service.mjs +153 -0
  162. package/dist/modules/user/application/user.service.mjs.map +1 -0
  163. package/dist/modules/user/domain/user.entity.d.mts +24 -0
  164. package/dist/modules/user/domain/user.entity.d.mts.map +1 -0
  165. package/dist/modules/user/domain/user.entity.mjs +35 -0
  166. package/dist/modules/user/domain/user.entity.mjs.map +1 -0
  167. package/dist/modules/user/domain/user.repo.interface.d.mts +27 -0
  168. package/dist/modules/user/domain/user.repo.interface.d.mts.map +1 -0
  169. package/dist/modules/user/domain/user.repo.interface.mjs +1 -0
  170. package/dist/modules/user/infrastructure/casbin/adapter.d.mts +7 -0
  171. package/dist/modules/user/infrastructure/casbin/adapter.d.mts.map +1 -0
  172. package/dist/modules/user/infrastructure/casbin/adapter.mjs +13 -0
  173. package/dist/modules/user/infrastructure/casbin/adapter.mjs.map +1 -0
  174. package/dist/modules/user/infrastructure/casbin/adapter.pg.d.mts +19 -0
  175. package/dist/modules/user/infrastructure/casbin/adapter.pg.d.mts.map +1 -0
  176. package/dist/modules/user/infrastructure/casbin/adapter.pg.mjs +129 -0
  177. package/dist/modules/user/infrastructure/casbin/adapter.pg.mjs.map +1 -0
  178. package/dist/modules/user/infrastructure/casbin/adapter.sqlite.d.mts +19 -0
  179. package/dist/modules/user/infrastructure/casbin/adapter.sqlite.d.mts.map +1 -0
  180. package/dist/modules/user/infrastructure/casbin/adapter.sqlite.mjs +129 -0
  181. package/dist/modules/user/infrastructure/casbin/adapter.sqlite.mjs.map +1 -0
  182. package/dist/modules/user/infrastructure/casbin/enforcer.d.mts +9 -0
  183. package/dist/modules/user/infrastructure/casbin/enforcer.d.mts.map +1 -0
  184. package/dist/modules/user/infrastructure/casbin/enforcer.mjs +150 -0
  185. package/dist/modules/user/infrastructure/casbin/enforcer.mjs.map +1 -0
  186. package/dist/modules/user/infrastructure/casbin-rule.po.d.mts +643 -0
  187. package/dist/modules/user/infrastructure/casbin-rule.po.d.mts.map +1 -0
  188. package/dist/modules/user/infrastructure/casbin-rule.po.mjs +30 -0
  189. package/dist/modules/user/infrastructure/casbin-rule.po.mjs.map +1 -0
  190. package/dist/modules/user/infrastructure/user.po.d.mts +392 -0
  191. package/dist/modules/user/infrastructure/user.po.d.mts.map +1 -0
  192. package/dist/modules/user/infrastructure/user.po.mjs +34 -0
  193. package/dist/modules/user/infrastructure/user.po.mjs.map +1 -0
  194. package/dist/modules/user/infrastructure/user.repo.pg.d.mts +24 -0
  195. package/dist/modules/user/infrastructure/user.repo.pg.d.mts.map +1 -0
  196. package/dist/modules/user/infrastructure/user.repo.pg.mjs +90 -0
  197. package/dist/modules/user/infrastructure/user.repo.pg.mjs.map +1 -0
  198. package/dist/modules/user/infrastructure/user.repo.sqlite.d.mts +24 -0
  199. package/dist/modules/user/infrastructure/user.repo.sqlite.d.mts.map +1 -0
  200. package/dist/modules/user/infrastructure/user.repo.sqlite.mjs +88 -0
  201. package/dist/modules/user/infrastructure/user.repo.sqlite.mjs.map +1 -0
  202. package/dist/modules/user/interfaces/admin.route.d.mts +8270 -0
  203. package/dist/modules/user/interfaces/admin.route.d.mts.map +1 -0
  204. package/dist/modules/user/interfaces/admin.route.mjs +74 -0
  205. package/dist/modules/user/interfaces/admin.route.mjs.map +1 -0
  206. package/dist/modules/user/interfaces/role.route.d.mts +102 -0
  207. package/dist/modules/user/interfaces/role.route.d.mts.map +1 -0
  208. package/dist/modules/user/interfaces/role.route.mjs +60 -0
  209. package/dist/modules/user/interfaces/role.route.mjs.map +1 -0
  210. package/dist/modules/user/interfaces/user.dto.d.mts +106 -0
  211. package/dist/modules/user/interfaces/user.dto.d.mts.map +1 -0
  212. package/dist/modules/user/interfaces/user.dto.mjs +32 -0
  213. package/dist/modules/user/interfaces/user.dto.mjs.map +1 -0
  214. package/dist/modules/user/interfaces/user.route.d.mts +2093 -0
  215. package/dist/modules/user/interfaces/user.route.d.mts.map +1 -0
  216. package/dist/modules/user/interfaces/user.route.mjs +69 -0
  217. package/dist/modules/user/interfaces/user.route.mjs.map +1 -0
  218. package/dist/modules/user/interfaces/user.vo.d.mts +28 -0
  219. package/dist/modules/user/interfaces/user.vo.d.mts.map +1 -0
  220. package/dist/modules/user/interfaces/user.vo.mjs +18 -0
  221. package/dist/modules/user/interfaces/user.vo.mjs.map +1 -0
  222. package/dist/rank.service-D2h-2iJA.mjs +109 -0
  223. package/dist/rank.service-D2h-2iJA.mjs.map +1 -0
  224. package/dist/settings.d.mts +12 -0
  225. package/dist/settings.d.mts.map +1 -0
  226. package/dist/settings.mjs +27 -0
  227. package/dist/settings.mjs.map +1 -0
  228. package/dist/shared/create-app.d.mts +13 -0
  229. package/dist/shared/create-app.d.mts.map +1 -0
  230. package/dist/shared/create-app.mjs +45 -0
  231. package/dist/shared/create-app.mjs.map +1 -0
  232. package/dist/shared/db/bootstrap.d.mts +5 -0
  233. package/dist/shared/db/bootstrap.d.mts.map +1 -0
  234. package/dist/shared/db/bootstrap.mjs +51 -0
  235. package/dist/shared/db/bootstrap.mjs.map +1 -0
  236. package/dist/shared/db/connection.d.mts +1567 -0
  237. package/dist/shared/db/connection.d.mts.map +1 -0
  238. package/dist/shared/db/connection.mjs +59 -0
  239. package/dist/shared/db/connection.mjs.map +1 -0
  240. package/dist/shared/db/migrations/pg/0000_init.sql +74 -0
  241. package/dist/shared/db/migrations/pg/0001_snippets & tokens.sql +6 -0
  242. package/dist/shared/db/migrations/pg/0002_change_task_id_to_uuid_v7.sql +3 -0
  243. package/dist/shared/db/migrations/pg/meta/0000_snapshot.json +498 -0
  244. package/dist/shared/db/migrations/pg/meta/0001_snapshot.json +513 -0
  245. package/dist/shared/db/migrations/pg/meta/0002_snapshot.json +514 -0
  246. package/dist/shared/db/migrations/pg/meta/_journal.json +27 -0
  247. package/dist/shared/db/migrations/sqlite/0000_init.sql +72 -0
  248. package/dist/shared/db/migrations/sqlite/0001_snippets & tokens.sql +2 -0
  249. package/dist/shared/db/migrations/sqlite/0002_change_task_id_to_uuid_v7.sql +35 -0
  250. package/dist/shared/db/migrations/sqlite/meta/0000_snapshot.json +493 -0
  251. package/dist/shared/db/migrations/sqlite/meta/0001_snapshot.json +509 -0
  252. package/dist/shared/db/migrations/sqlite/meta/0002_snapshot.json +509 -0
  253. package/dist/shared/db/migrations/sqlite/meta/_journal.json +27 -0
  254. package/dist/shared/db/seed.d.mts +5 -0
  255. package/dist/shared/db/seed.d.mts.map +1 -0
  256. package/dist/shared/db/seed.mjs +42 -0
  257. package/dist/shared/db/seed.mjs.map +1 -0
  258. package/dist/shared/deps.d.mts +28 -0
  259. package/dist/shared/deps.d.mts.map +1 -0
  260. package/dist/shared/deps.mjs +69 -0
  261. package/dist/shared/deps.mjs.map +1 -0
  262. package/dist/shared/dto/index.d.mts +11 -0
  263. package/dist/shared/dto/index.d.mts.map +1 -0
  264. package/dist/shared/dto/index.mjs +11 -0
  265. package/dist/shared/dto/index.mjs.map +1 -0
  266. package/dist/shared/logger.d.mts +14 -0
  267. package/dist/shared/logger.d.mts.map +1 -0
  268. package/dist/shared/logger.mjs +37 -0
  269. package/dist/shared/logger.mjs.map +1 -0
  270. package/dist/shared/mcp/createTool.d.mts +15 -0
  271. package/dist/shared/mcp/createTool.d.mts.map +1 -0
  272. package/dist/shared/mcp/createTool.mjs +8 -0
  273. package/dist/shared/mcp/createTool.mjs.map +1 -0
  274. package/dist/shared/middleware/authorization.d.mts +15 -0
  275. package/dist/shared/middleware/authorization.d.mts.map +1 -0
  276. package/dist/shared/middleware/authorization.mjs +46 -0
  277. package/dist/shared/middleware/authorization.mjs.map +1 -0
  278. package/dist/shared/middleware/http-logger.d.mts +7 -0
  279. package/dist/shared/middleware/http-logger.d.mts.map +1 -0
  280. package/dist/shared/middleware/http-logger.mjs +40 -0
  281. package/dist/shared/middleware/http-logger.mjs.map +1 -0
  282. package/dist/shared/middleware/jwt.d.mts +7 -0
  283. package/dist/shared/middleware/jwt.d.mts.map +1 -0
  284. package/dist/shared/middleware/jwt.mjs +34 -0
  285. package/dist/shared/middleware/jwt.mjs.map +1 -0
  286. package/dist/shared/middleware/limiter.d.mts +7 -0
  287. package/dist/shared/middleware/limiter.d.mts.map +1 -0
  288. package/dist/shared/middleware/limiter.mjs +10 -0
  289. package/dist/shared/middleware/limiter.mjs.map +1 -0
  290. package/dist/shared/middleware/services.d.mts +8 -0
  291. package/dist/shared/middleware/services.d.mts.map +1 -0
  292. package/dist/shared/middleware/services.mjs +19 -0
  293. package/dist/shared/middleware/services.mjs.map +1 -0
  294. package/dist/shared/redis/decorator.d.mts +113 -0
  295. package/dist/shared/redis/decorator.d.mts.map +1 -0
  296. package/dist/shared/redis/decorator.mjs +203 -0
  297. package/dist/shared/redis/decorator.mjs.map +1 -0
  298. package/dist/shared/redis/factory.d.mts +18 -0
  299. package/dist/shared/redis/factory.d.mts.map +1 -0
  300. package/dist/shared/redis/factory.mjs +41 -0
  301. package/dist/shared/redis/factory.mjs.map +1 -0
  302. package/dist/shared/redis/index.d.mts +12 -0
  303. package/dist/shared/redis/index.d.mts.map +1 -0
  304. package/dist/shared/redis/index.mjs +14 -0
  305. package/dist/shared/redis/index.mjs.map +1 -0
  306. package/dist/shared/types.d.mts +36 -0
  307. package/dist/shared/types.d.mts.map +1 -0
  308. package/dist/shared/types.mjs +1 -0
  309. package/dist/shared/utils/date.d.mts +1 -0
  310. package/dist/shared/utils/date.mjs +1 -0
  311. package/dist/shared/utils/error-handler.d.mts +7 -0
  312. package/dist/shared/utils/error-handler.d.mts.map +1 -0
  313. package/dist/shared/utils/error-handler.mjs +22 -0
  314. package/dist/shared/utils/error-handler.mjs.map +1 -0
  315. package/dist/shared/utils/format.d.mts +8 -0
  316. package/dist/shared/utils/format.d.mts.map +1 -0
  317. package/dist/shared/utils/format.mjs +24 -0
  318. package/dist/shared/utils/format.mjs.map +1 -0
  319. package/dist/shared/utils/pagination.d.mts +9 -0
  320. package/dist/shared/utils/pagination.d.mts.map +1 -0
  321. package/dist/shared/utils/pagination.mjs +12 -0
  322. package/dist/shared/utils/pagination.mjs.map +1 -0
  323. package/dist/shared/utils/response-template.d.mts +69 -0
  324. package/dist/shared/utils/response-template.d.mts.map +1 -0
  325. package/dist/shared/utils/response-template.mjs +96 -0
  326. package/dist/shared/utils/response-template.mjs.map +1 -0
  327. package/dist/shared/utils/url.d.mts +18 -0
  328. package/dist/shared/utils/url.d.mts.map +1 -0
  329. package/dist/shared/utils/url.mjs +39 -0
  330. package/dist/shared/utils/url.mjs.map +1 -0
  331. package/dist/shared/utils/user.d.mts +8 -0
  332. package/dist/shared/utils/user.d.mts.map +1 -0
  333. package/dist/shared/utils/user.mjs +11 -0
  334. package/dist/shared/utils/user.mjs.map +1 -0
  335. package/dist/shared/utils/validator.d.mts +5984 -0
  336. package/dist/shared/utils/validator.d.mts.map +1 -0
  337. package/dist/shared/utils/validator.mjs +34 -0
  338. package/dist/shared/utils/validator.mjs.map +1 -0
  339. package/dist/shared/vo/index.d.mts +11 -0
  340. package/dist/shared/vo/index.d.mts.map +1 -0
  341. package/dist/shared/vo/index.mjs +1 -0
  342. package/package.json +86 -0
@@ -0,0 +1,12 @@
1
+ //#region src/modules/doc/infrastructure/agent/engine/query-filter.ts
2
+ function generateFilters(documentIds) {
3
+ return { filters: [{
4
+ key: "biz_doc_id",
5
+ value: documentIds,
6
+ operator: "in"
7
+ }] };
8
+ }
9
+
10
+ //#endregion
11
+ export { generateFilters };
12
+ //# sourceMappingURL=query-filter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-filter.mjs","names":[],"sources":["../../../../../../src/modules/doc/infrastructure/agent/engine/query-filter.ts"],"sourcesContent":["import type { MetadataFilter, MetadataFilters } from 'llamaindex'\n\nexport function generateFilters(documentIds: string[]): MetadataFilters {\n const filter: MetadataFilter = {\n key: 'biz_doc_id',\n value: documentIds,\n operator: 'in',\n }\n\n return { filters: [filter] }\n}\n"],"mappings":";AAEA,SAAgB,gBAAgB,aAAwC;AAOtE,QAAO,EAAE,SAAS,CANa;EAC7B,KAAK;EACL,OAAO;EACP,UAAU;EACX,CAEyB,EAAE"}
@@ -0,0 +1,54 @@
1
+ import { Document } from "llamaindex";
2
+
3
+ //#region src/modules/doc/infrastructure/agent/loaders/git-repository-reader.d.ts
4
+ interface FilterDirectories {
5
+ includes?: string[];
6
+ excludes?: string[];
7
+ }
8
+ /**
9
+ * filter file extensions
10
+ */
11
+ interface FilterFileExtensions {
12
+ includes?: string[];
13
+ excludes?: string[];
14
+ }
15
+ /**
16
+ * github repository reader options
17
+ */
18
+ interface GitRepositoryReaderOptions {
19
+ repo: string;
20
+ branch?: string;
21
+ filterDirectories?: FilterDirectories;
22
+ filterFileExtensions?: FilterFileExtensions;
23
+ targetBaseDir?: string;
24
+ numWorkers?: number;
25
+ debug?: boolean;
26
+ }
27
+ /**
28
+ * github repository reader
29
+ */
30
+ declare class GitRepositoryReader {
31
+ private readonly repo;
32
+ private readonly branch?;
33
+ private readonly filterDirectories;
34
+ private readonly filterFileExtensions;
35
+ private readonly targetBaseDir;
36
+ private readonly numWorkers;
37
+ private readonly debug;
38
+ constructor(options: GitRepositoryReaderOptions);
39
+ /**
40
+ * load data from github repository
41
+ */
42
+ loadData(): Promise<Document[]>;
43
+ /**
44
+ * ensure repository is cloned
45
+ */
46
+ private ensureRepository;
47
+ /**
48
+ * clear temporary repository directory
49
+ */
50
+ clearTmpRepo(dir: string): Promise<void>;
51
+ }
52
+ //#endregion
53
+ export { FilterDirectories, FilterFileExtensions, GitRepositoryReader, GitRepositoryReaderOptions };
54
+ //# sourceMappingURL=git-repository-reader.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-repository-reader.d.mts","names":[],"sources":["../../../../../../src/modules/doc/infrastructure/agent/loaders/git-repository-reader.ts"],"mappings":";;;UAYiB,iBAAA;EACf,QAAA;EACA,QAAA;AAAA;;;;UAMe,oBAAA;EACf,QAAA;EACA,QAAA;AAAA;;AAMF;;UAAiB,0BAAA;EACf,IAAA;EACA,MAAA;EACA,iBAAA,GAAoB,iBAAA;EACpB,oBAAA,GAAuB,oBAAA;EACvB,aAAA;EACA,UAAA;EACA,KAAA;AAAA;;;;cAMW,mBAAA;EAAA,iBACM,IAAA;EAAA,iBACA,MAAA;EAAA,iBACA,iBAAA;EAAA,iBACA,oBAAA;EAAA,iBACA,aAAA;EAAA,iBACA,UAAA;EAAA,iBACA,KAAA;cAEL,OAAA,EAAS,0BAAA;EAqHmB;;;EAxGlC,QAAA,CAAA,GAAY,OAAA,CAAQ,QAAA;EAlBT;;;EAAA,QAkFH,gBAAA;;;;EAwCR,YAAA,CAAa,GAAA,WAAc,OAAA;AAAA"}
@@ -0,0 +1,142 @@
1
+ import { logger } from "../../../../../shared/logger.mjs";
2
+ import path from "node:path";
3
+ import { TMP_GIT_REPOS_PATH } from "@pcontext/shared";
4
+ import { randomUUID } from "node:crypto";
5
+ import { exec } from "node:child_process";
6
+ import fs from "node:fs/promises";
7
+ import { promisify } from "node:util";
8
+ import { SimpleDirectoryReader } from "@llamaindex/readers/directory";
9
+
10
+ //#region src/modules/doc/infrastructure/agent/loaders/git-repository-reader.ts
11
+ const exec$1 = promisify(exec);
12
+ /**
13
+ * github repository reader
14
+ */
15
+ var GitRepositoryReader = class {
16
+ repo;
17
+ branch;
18
+ filterDirectories;
19
+ filterFileExtensions;
20
+ targetBaseDir;
21
+ numWorkers;
22
+ debug;
23
+ constructor(options) {
24
+ this.repo = options.repo;
25
+ this.branch = options.branch;
26
+ this.filterDirectories = options.filterDirectories ?? {};
27
+ this.filterFileExtensions = options.filterFileExtensions ?? {};
28
+ this.targetBaseDir = options.targetBaseDir ?? TMP_GIT_REPOS_PATH;
29
+ this.numWorkers = options.numWorkers ?? 4;
30
+ this.debug = options.debug ?? false;
31
+ }
32
+ /**
33
+ * load data from github repository
34
+ */
35
+ async loadData() {
36
+ const repoDir = await this.ensureRepository();
37
+ const includes = (this.filterDirectories.includes ?? []).map((d) => normalizeDir(d));
38
+ const excludes = (this.filterDirectories.excludes ?? []).map((d) => normalizeDir(d));
39
+ const extIncludesSet = new Set((this.filterFileExtensions.includes ?? []).map((e) => normalizeExt(e)));
40
+ const extExcludesSet = new Set((this.filterFileExtensions.excludes ?? []).map((e) => normalizeExt(e)));
41
+ const observer = (category, name, status) => {
42
+ if (category === "file" && status === 0) {
43
+ const rel = path.relative(repoDir, name);
44
+ if (excludes.some((ex) => rel === ex || rel.startsWith(ex + path.sep))) return false;
45
+ if (!(includes.length === 0 ? true : includes.some((inc) => rel === inc || rel.startsWith(inc + path.sep)))) return false;
46
+ const ext = normalizeExt(path.extname(name));
47
+ if (extExcludesSet.has(ext)) return false;
48
+ if (extIncludesSet.size > 0 && !extIncludesSet.has(ext)) return false;
49
+ }
50
+ return true;
51
+ };
52
+ const reader = new SimpleDirectoryReader(observer);
53
+ const roots = includes.length > 0 ? includes.map((d) => path.join(repoDir, d)) : [repoDir];
54
+ const docs = [];
55
+ for (const root of roots) {
56
+ if (!await pathExists(root)) continue;
57
+ const part = await reader.loadData({
58
+ directoryPath: root,
59
+ numWorkers: this.numWorkers
60
+ });
61
+ docs.push(...part);
62
+ }
63
+ return docs;
64
+ }
65
+ /**
66
+ * ensure repository is cloned
67
+ */
68
+ async ensureRepository() {
69
+ const repoName = deriveRepoName(this.repo);
70
+ await fs.mkdir(this.targetBaseDir, { recursive: true });
71
+ logger.info(`[git info]: start to clone repository "${repoName}" to directory "${this.targetBaseDir}"`);
72
+ if (this.debug) {
73
+ const existing = await findExistingRepoDir(this.targetBaseDir, repoName);
74
+ if (existing) {
75
+ logger.info(`[git info]: repository "${repoName}" already cloned, use existing directory`);
76
+ return existing;
77
+ }
78
+ }
79
+ const uniqueDirName = `${repoName}-${randomUUID()}`;
80
+ const repoDir = path.join(this.targetBaseDir, uniqueDirName);
81
+ const branchArg = this.branch ? ` --branch ${shellEscape(this.branch)} --single-branch` : "";
82
+ try {
83
+ await exec$1(`git clone --depth 1${branchArg} ${shellEscape(this.repo)} ${shellEscape(repoDir)}`);
84
+ } catch {
85
+ logger.warn("[git error]: git clone (use http2) failed, try http1.1");
86
+ try {
87
+ await exec$1(`git clone -c http.version=HTTP/1.1 --depth 1${branchArg} ${shellEscape(this.repo)} ${shellEscape(repoDir)}`);
88
+ logger.info(`[git info]: repository "${repoName}" cloned successfully`);
89
+ } catch {
90
+ logger.error("[git error]: git clone (use http1.1) failed");
91
+ throw new Error(`git clone failed for repository "${this.repo}". please make sure the repository is public and accessible.`);
92
+ }
93
+ }
94
+ return repoDir;
95
+ }
96
+ /**
97
+ * clear temporary repository directory
98
+ */
99
+ async clearTmpRepo(dir) {
100
+ await fs.rm(dir, {
101
+ recursive: true,
102
+ force: true
103
+ });
104
+ }
105
+ };
106
+ function deriveRepoName(repoUrl) {
107
+ const segments = (repoUrl.endsWith(".git") ? repoUrl.slice(0, -4) : repoUrl).split("/");
108
+ return segments[segments.length - 1] || "repo";
109
+ }
110
+ function normalizeDir(d) {
111
+ return d.replace(/^\/+/, "").replace(/\\/g, path.sep);
112
+ }
113
+ function normalizeExt(extOrName) {
114
+ return (extOrName.startsWith(".") ? extOrName.slice(1) : extOrName).toLowerCase();
115
+ }
116
+ async function pathExists(p) {
117
+ try {
118
+ await fs.access(p);
119
+ return true;
120
+ } catch {
121
+ return false;
122
+ }
123
+ }
124
+ async function findExistingRepoDir(baseDir, repoName) {
125
+ const entries = await fs.readdir(baseDir, { withFileTypes: true });
126
+ const candidates = [];
127
+ for (const e of entries) if (e.isDirectory() && (e.name === repoName || e.name.startsWith(`${repoName}-`))) candidates.push(path.join(baseDir, e.name));
128
+ if (candidates.length === 0) return null;
129
+ const stats = await Promise.all(candidates.map(async (p) => ({
130
+ p,
131
+ s: await fs.stat(p)
132
+ })));
133
+ stats.sort((a, b) => b.s.mtimeMs - a.s.mtimeMs);
134
+ return stats[0]?.p ?? null;
135
+ }
136
+ function shellEscape(s) {
137
+ return `'${s.replace(/'/g, "'\\''")}'`;
138
+ }
139
+
140
+ //#endregion
141
+ export { GitRepositoryReader };
142
+ //# sourceMappingURL=git-repository-reader.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-repository-reader.mjs","names":["exec","execCb"],"sources":["../../../../../../src/modules/doc/infrastructure/agent/loaders/git-repository-reader.ts"],"sourcesContent":["import type { Document } from 'llamaindex'\nimport { exec as execCb } from 'node:child_process'\nimport { randomUUID } from 'node:crypto'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\nimport { promisify } from 'node:util'\nimport { SimpleDirectoryReader } from '@llamaindex/readers/directory'\nimport { TMP_GIT_REPOS_PATH } from '@pcontext/shared'\nimport { logger } from '@/shared/logger'\n\nconst exec = promisify(execCb)\n\nexport interface FilterDirectories {\n includes?: string[]\n excludes?: string[]\n}\n\n/**\n * filter file extensions\n */\nexport interface FilterFileExtensions {\n includes?: string[]\n excludes?: string[]\n}\n\n/**\n * github repository reader options\n */\nexport interface GitRepositoryReaderOptions {\n repo: string\n branch?: string\n filterDirectories?: FilterDirectories\n filterFileExtensions?: FilterFileExtensions\n targetBaseDir?: string\n numWorkers?: number\n debug?: boolean\n}\n\n/**\n * github repository reader\n */\nexport class GitRepositoryReader {\n private readonly repo: string\n private readonly branch?: string\n private readonly filterDirectories: FilterDirectories\n private readonly filterFileExtensions: FilterFileExtensions\n private readonly targetBaseDir: string\n private readonly numWorkers: number\n private readonly debug: boolean\n\n constructor(options: GitRepositoryReaderOptions) {\n this.repo = options.repo\n this.branch = options.branch\n this.filterDirectories = options.filterDirectories ?? {}\n this.filterFileExtensions = options.filterFileExtensions ?? {}\n this.targetBaseDir = options.targetBaseDir ?? TMP_GIT_REPOS_PATH\n this.numWorkers = options.numWorkers ?? 4\n this.debug = options.debug ?? false\n }\n\n /**\n * load data from github repository\n */\n async loadData(): Promise<Document[]> {\n const repoDir = await this.ensureRepository()\n\n const includes = (this.filterDirectories.includes ?? []).map(d => normalizeDir(d))\n const excludes = (this.filterDirectories.excludes ?? []).map(d => normalizeDir(d))\n\n const extIncludesSet = new Set(\n (this.filterFileExtensions.includes ?? []).map(e => normalizeExt(e)),\n )\n const extExcludesSet = new Set(\n (this.filterFileExtensions.excludes ?? []).map(e => normalizeExt(e)),\n )\n\n const observer = (\n category: 'file' | 'directory',\n name: string,\n status: number,\n ): boolean => {\n if (category === 'file' && status === 0) {\n const rel = path.relative(repoDir, name)\n const inExcludeDir = excludes.some(\n ex => rel === ex || rel.startsWith(ex + path.sep),\n )\n if (inExcludeDir)\n return false\n\n const inIncludeDir = includes.length === 0\n ? true\n : includes.some(inc => rel === inc || rel.startsWith(inc + path.sep))\n if (!inIncludeDir)\n return false\n\n const ext = normalizeExt(path.extname(name))\n if (extExcludesSet.has(ext))\n return false\n if (extIncludesSet.size > 0 && !extIncludesSet.has(ext))\n return false\n }\n return true\n }\n\n const reader = new SimpleDirectoryReader(observer)\n\n const roots: string[] = includes.length > 0\n ? includes.map(d => path.join(repoDir, d))\n : [repoDir]\n\n const docs: Document[] = []\n for (const root of roots) {\n const exists = await pathExists(root)\n if (!exists)\n continue\n const part = await reader.loadData({\n directoryPath: root,\n numWorkers: this.numWorkers,\n })\n docs.push(...part)\n }\n return docs\n }\n\n /**\n * ensure repository is cloned\n */\n private async ensureRepository(): Promise<string> {\n const repoName = deriveRepoName(this.repo)\n await fs.mkdir(this.targetBaseDir, { recursive: true })\n logger.info(`[git info]: start to clone repository \"${repoName}\" to directory \"${this.targetBaseDir}\"`)\n if (this.debug) {\n const existing = await findExistingRepoDir(this.targetBaseDir, repoName)\n if (existing) {\n logger.info(`[git info]: repository \"${repoName}\" already cloned, use existing directory`)\n return existing\n }\n }\n const uniqueDirName = `${repoName}-${randomUUID()}`\n const repoDir = path.join(this.targetBaseDir, uniqueDirName)\n const branchArg = this.branch\n ? ` --branch ${shellEscape(this.branch)} --single-branch`\n : ''\n try {\n await exec(\n `git clone --depth 1${branchArg} ${shellEscape(this.repo)} ${shellEscape(repoDir)}`,\n )\n }\n catch {\n logger.warn('[git error]: git clone (use http2) failed, try http1.1')\n try {\n await exec(\n `git clone -c http.version=HTTP/1.1 --depth 1${branchArg} ${shellEscape(this.repo)} ${shellEscape(repoDir)}`,\n )\n logger.info(`[git info]: repository \"${repoName}\" cloned successfully`)\n }\n catch {\n logger.error('[git error]: git clone (use http1.1) failed')\n throw new Error(`git clone failed for repository \"${this.repo}\". please make sure the repository is public and accessible.`)\n }\n }\n return repoDir\n }\n\n /**\n * clear temporary repository directory\n */\n async clearTmpRepo(dir: string): Promise<void> {\n await fs.rm(dir, { recursive: true, force: true })\n }\n}\n\nfunction deriveRepoName(repoUrl: string): string {\n const withoutSuffix = repoUrl.endsWith('.git')\n ? repoUrl.slice(0, -4)\n : repoUrl\n const segments = withoutSuffix.split('/')\n return segments[segments.length - 1] || 'repo'\n}\n\nfunction normalizeDir(d: string): string {\n const p = d.replace(/^\\/+/, '')\n return p.replace(/\\\\/g, path.sep)\n}\n\nfunction normalizeExt(extOrName: string): string {\n const ext = extOrName.startsWith('.') ? extOrName.slice(1) : extOrName\n return ext.toLowerCase()\n}\n\nasync function pathExists(p: string): Promise<boolean> {\n try {\n await fs.access(p)\n return true\n }\n catch {\n return false\n }\n}\n\nasync function findExistingRepoDir(baseDir: string, repoName: string): Promise<string | null> {\n const entries = await fs.readdir(baseDir, { withFileTypes: true })\n const candidates: string[] = []\n for (const e of entries) {\n if (e.isDirectory() && (e.name === repoName || e.name.startsWith(`${repoName}-`))) {\n candidates.push(path.join(baseDir, e.name))\n }\n }\n if (candidates.length === 0)\n return null\n const stats = await Promise.all(candidates.map(async p => ({ p, s: await fs.stat(p) })))\n stats.sort((a, b) => b.s.mtimeMs - a.s.mtimeMs)\n return stats[0]?.p ?? null\n}\n\nfunction shellEscape(s: string): string {\n return `'${s.replace(/'/g, '\\'\\\\\\'\\'')}'`\n}\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { FilterDirectories, FilterFileExtensions, GitRepositoryReader, GitRepositoryReaderOptions } from "./git-repository-reader.mjs";
2
+ import { CrawlDocumentData, CrawlDoneData, CrawlProgressCallback, CrawlStartData, WebsiteCrawlReader, WebsiteCrawlReaderOptions } from "./website-crawl-reader.mjs";
3
+ export { CrawlDocumentData, CrawlDoneData, CrawlProgressCallback, CrawlStartData, FilterDirectories, FilterFileExtensions, GitRepositoryReader, GitRepositoryReaderOptions, WebsiteCrawlReader, WebsiteCrawlReaderOptions };
@@ -0,0 +1,4 @@
1
+ import { GitRepositoryReader } from "./git-repository-reader.mjs";
2
+ import { WebsiteCrawlReader } from "./website-crawl-reader.mjs";
3
+
4
+ export { GitRepositoryReader, WebsiteCrawlReader };
@@ -0,0 +1,42 @@
1
+ import { Document } from "llamaindex";
2
+
3
+ //#region src/modules/doc/infrastructure/agent/loaders/website-crawl-reader.d.ts
4
+ interface WebsiteCrawlReaderOptions {
5
+ baseUrl: string;
6
+ apiKey: string;
7
+ limit?: number;
8
+ excludeTags?: string[];
9
+ debug?: boolean;
10
+ progress?: CrawlProgressCallback;
11
+ }
12
+ interface CrawlStartData {
13
+ baseUrl: string;
14
+ limit: number;
15
+ jobId?: string;
16
+ }
17
+ interface CrawlDocumentData {
18
+ url: string;
19
+ title: string;
20
+ count: number;
21
+ }
22
+ interface CrawlDoneData {
23
+ count: number;
24
+ }
25
+ interface CrawlProgressCallback {
26
+ (event: 'start', data: CrawlStartData): void;
27
+ (event: 'document', data: CrawlDocumentData): void;
28
+ (event: 'done', data: CrawlDoneData): void;
29
+ }
30
+ declare class WebsiteCrawlReader {
31
+ private readonly baseUrl;
32
+ private readonly apiKey;
33
+ private readonly limit;
34
+ private readonly excludeTags;
35
+ private readonly debug;
36
+ private readonly progress?;
37
+ constructor(options: WebsiteCrawlReaderOptions);
38
+ loadData(): Promise<Document[]>;
39
+ }
40
+ //#endregion
41
+ export { CrawlDocumentData, CrawlDoneData, CrawlProgressCallback, CrawlStartData, WebsiteCrawlReader, WebsiteCrawlReaderOptions };
42
+ //# sourceMappingURL=website-crawl-reader.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"website-crawl-reader.d.mts","names":[],"sources":["../../../../../../src/modules/doc/infrastructure/agent/loaders/website-crawl-reader.ts"],"mappings":";;;UAKiB,yBAAA;EACf,OAAA;EACA,MAAA;EACA,KAAA;EACA,WAAA;EACA,KAAA;EACA,QAAA,GAAW,qBAAA;AAAA;AAAA,UAGI,cAAA;EAAiB,OAAA;EAAiB,KAAA;EAAe,KAAA;AAAA;AAAA,UACjD,iBAAA;EAAoB,GAAA;EAAa,KAAA;EAAe,KAAA;AAAA;AAAA,UAChD,aAAA;EAAgB,KAAA;AAAA;AAAA,UAEhB,qBAAA;EAAA,CACd,KAAA,WAAgB,IAAA,EAAM,cAAA;EAAA,CACtB,KAAA,cAAmB,IAAA,EAAM,iBAAA;EAAA,CACzB,KAAA,UAAe,IAAA,EAAM,aAAA;AAAA;AAAA,cAkBX,kBAAA;EAAA,iBACM,OAAA;EAAA,iBACA,MAAA;EAAA,iBACA,KAAA;EAAA,iBACA,WAAA;EAAA,iBACA,KAAA;EAAA,iBACA,QAAA;cAEL,OAAA,EAAS,yBAAA;EASf,QAAA,CAAA,GAAY,OAAA,CAAQ,QAAA;AAAA"}
@@ -0,0 +1,104 @@
1
+ import { logger } from "../../../../../shared/logger.mjs";
2
+ import { Document } from "llamaindex";
3
+ import FirecrawlApp from "@mendable/firecrawl-js";
4
+
5
+ //#region src/modules/doc/infrastructure/agent/loaders/website-crawl-reader.ts
6
+ const DEFAULT_EXCLUDE_TAGS = [
7
+ "nav",
8
+ "header",
9
+ "footer",
10
+ "aside",
11
+ "script",
12
+ "style",
13
+ ".cm-gutter",
14
+ ".cm-lineNumbers",
15
+ ".cm-gutterElement",
16
+ ".sp-line-numbers",
17
+ ".sp-pre-placeholder"
18
+ ];
19
+ var WebsiteCrawlReader = class {
20
+ baseUrl;
21
+ apiKey;
22
+ limit;
23
+ excludeTags;
24
+ debug;
25
+ progress;
26
+ constructor(options) {
27
+ this.baseUrl = options.baseUrl;
28
+ this.apiKey = options.apiKey;
29
+ this.limit = options.limit ?? 100;
30
+ this.excludeTags = options.excludeTags ?? DEFAULT_EXCLUDE_TAGS;
31
+ this.debug = options.debug ?? false;
32
+ this.progress = options.progress;
33
+ }
34
+ async loadData() {
35
+ const firecrawl = new FirecrawlApp({ apiKey: this.apiKey });
36
+ logger.info(`🚀 开始爬取网站: ${this.baseUrl},最多抓取 ${this.limit} 页...`);
37
+ this.progress?.("start", {
38
+ baseUrl: this.baseUrl,
39
+ limit: this.limit
40
+ });
41
+ try {
42
+ const crawlResponse = await firecrawl.startCrawl(this.baseUrl, {
43
+ limit: this.limit,
44
+ scrapeOptions: {
45
+ formats: ["markdown"],
46
+ onlyMainContent: true,
47
+ excludeTags: this.excludeTags
48
+ }
49
+ });
50
+ if (!crawlResponse.id) throw new Error(`Failed to start crawl: ${JSON.stringify(crawlResponse)}`);
51
+ const jobId = crawlResponse.id;
52
+ this.progress?.("start", {
53
+ baseUrl: this.baseUrl,
54
+ limit: this.limit,
55
+ jobId
56
+ });
57
+ const documents = [];
58
+ const watcher = firecrawl.watcher(jobId, {
59
+ kind: "crawl",
60
+ pollInterval: 2,
61
+ timeout: 120
62
+ });
63
+ return await new Promise((resolve, reject) => {
64
+ watcher.on("document", (doc) => {
65
+ const document = new Document({
66
+ text: doc.markdown || "",
67
+ metadata: {
68
+ source: doc.metadata?.sourceURL || doc.metadata?.url || this.baseUrl,
69
+ title: doc.metadata?.title || "未命名页面"
70
+ }
71
+ });
72
+ documents.push(document);
73
+ this.progress?.("document", {
74
+ url: document.metadata.source,
75
+ title: document.metadata.title,
76
+ count: documents.length
77
+ });
78
+ });
79
+ watcher.on("error", (err) => {
80
+ logger.error(err, "Watcher error");
81
+ reject(err);
82
+ });
83
+ watcher.on("done", (state) => {
84
+ if (state.status === "failed") {
85
+ logger.error(`爬取失败: ${state.status}`);
86
+ reject(/* @__PURE__ */ new Error(`爬取失败: ${state.status}`));
87
+ } else {
88
+ logger.info(`✅ 爬取完成!共成功获取并去噪了 ${documents.length} 个页面。`);
89
+ this.progress?.("done", { count: documents.length });
90
+ resolve(documents);
91
+ }
92
+ });
93
+ watcher.start();
94
+ });
95
+ } catch (error) {
96
+ logger.error(error, "❌ 抓取过程中发生错误");
97
+ throw error;
98
+ }
99
+ }
100
+ };
101
+
102
+ //#endregion
103
+ export { WebsiteCrawlReader };
104
+ //# sourceMappingURL=website-crawl-reader.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"website-crawl-reader.mjs","names":["LlamaDocument"],"sources":["../../../../../../src/modules/doc/infrastructure/agent/loaders/website-crawl-reader.ts"],"sourcesContent":["import type { Document } from 'llamaindex'\nimport FirecrawlApp from '@mendable/firecrawl-js'\nimport { Document as LlamaDocument } from 'llamaindex'\nimport { logger } from '@/shared/logger'\n\nexport interface WebsiteCrawlReaderOptions {\n baseUrl: string\n apiKey: string\n limit?: number\n excludeTags?: string[]\n debug?: boolean\n progress?: CrawlProgressCallback\n}\n\nexport interface CrawlStartData { baseUrl: string, limit: number, jobId?: string }\nexport interface CrawlDocumentData { url: string, title: string, count: number }\nexport interface CrawlDoneData { count: number }\n\nexport interface CrawlProgressCallback {\n (event: 'start', data: CrawlStartData): void\n (event: 'document', data: CrawlDocumentData): void\n (event: 'done', data: CrawlDoneData): void\n}\n\nconst DEFAULT_EXCLUDE_TAGS = [\n 'nav',\n 'header',\n 'footer',\n 'aside',\n 'script',\n 'style',\n // 把代码行号也屏蔽掉\n '.cm-gutter',\n '.cm-lineNumbers',\n '.cm-gutterElement',\n '.sp-line-numbers',\n '.sp-pre-placeholder',\n]\n\nexport class WebsiteCrawlReader {\n private readonly baseUrl: string\n private readonly apiKey: string\n private readonly limit: number\n private readonly excludeTags: string[]\n private readonly debug: boolean\n private readonly progress?: CrawlProgressCallback\n\n constructor(options: WebsiteCrawlReaderOptions) {\n this.baseUrl = options.baseUrl\n this.apiKey = options.apiKey\n this.limit = options.limit ?? 100\n this.excludeTags = options.excludeTags ?? DEFAULT_EXCLUDE_TAGS\n this.debug = options.debug ?? false\n this.progress = options.progress\n }\n\n async loadData(): Promise<Document[]> {\n const firecrawl = new FirecrawlApp({ apiKey: this.apiKey })\n\n logger.info(`🚀 开始爬取网站: ${this.baseUrl},最多抓取 ${this.limit} 页...`)\n this.progress?.('start', { baseUrl: this.baseUrl, limit: this.limit })\n\n try {\n const crawlResponse = await firecrawl.startCrawl(this.baseUrl, {\n limit: this.limit,\n scrapeOptions: {\n formats: ['markdown'],\n onlyMainContent: true,\n excludeTags: this.excludeTags,\n },\n })\n\n if (!crawlResponse.id) {\n throw new Error(`Failed to start crawl: ${JSON.stringify(crawlResponse)}`)\n }\n\n const jobId = crawlResponse.id\n this.progress?.('start', { baseUrl: this.baseUrl, limit: this.limit, jobId })\n\n const documents: Document[] = []\n const watcher = firecrawl.watcher(jobId, { kind: 'crawl', pollInterval: 2, timeout: 120 })\n\n return await new Promise<Document[]>((resolve, reject) => {\n watcher.on('document', (doc) => {\n const document = new LlamaDocument({\n text: doc.markdown || '',\n metadata: {\n source: doc.metadata?.sourceURL || doc.metadata?.url || this.baseUrl,\n title: doc.metadata?.title || '未命名页面',\n },\n })\n documents.push(document)\n // console.log(`已获取页面 ${document.metadata.source},标题: ${document.metadata.title}`)\n // console.log(doc.markdown)\n this.progress?.('document', {\n url: document.metadata.source,\n title: document.metadata.title,\n count: documents.length,\n })\n })\n\n watcher.on('error', (err: any) => {\n logger.error(err, 'Watcher error')\n reject(err)\n })\n\n watcher.on('done', (state) => {\n if (state.status === 'failed') {\n logger.error(`爬取失败: ${state.status}`)\n reject(new Error(`爬取失败: ${state.status}`))\n }\n else {\n logger.info(`✅ 爬取完成!共成功获取并去噪了 ${documents.length} 个页面。`)\n this.progress?.('done', { count: documents.length })\n resolve(documents)\n }\n })\n\n watcher.start()\n })\n }\n catch (error) {\n logger.error(error, '❌ 抓取过程中发生错误')\n throw error\n }\n }\n}\n"],"mappings":";;;;;AAwBA,MAAM,uBAAuB;CAC3B;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CACD;AAED,IAAa,qBAAb,MAAgC;CAC9B,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CAEjB,YAAY,SAAoC;AAC9C,OAAK,UAAU,QAAQ;AACvB,OAAK,SAAS,QAAQ;AACtB,OAAK,QAAQ,QAAQ,SAAS;AAC9B,OAAK,cAAc,QAAQ,eAAe;AAC1C,OAAK,QAAQ,QAAQ,SAAS;AAC9B,OAAK,WAAW,QAAQ;;CAG1B,MAAM,WAAgC;EACpC,MAAM,YAAY,IAAI,aAAa,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAE3D,SAAO,KAAK,cAAc,KAAK,QAAQ,QAAQ,KAAK,MAAM,OAAO;AACjE,OAAK,WAAW,SAAS;GAAE,SAAS,KAAK;GAAS,OAAO,KAAK;GAAO,CAAC;AAEtE,MAAI;GACF,MAAM,gBAAgB,MAAM,UAAU,WAAW,KAAK,SAAS;IAC7D,OAAO,KAAK;IACZ,eAAe;KACb,SAAS,CAAC,WAAW;KACrB,iBAAiB;KACjB,aAAa,KAAK;KACnB;IACF,CAAC;AAEF,OAAI,CAAC,cAAc,GACjB,OAAM,IAAI,MAAM,0BAA0B,KAAK,UAAU,cAAc,GAAG;GAG5E,MAAM,QAAQ,cAAc;AAC5B,QAAK,WAAW,SAAS;IAAE,SAAS,KAAK;IAAS,OAAO,KAAK;IAAO;IAAO,CAAC;GAE7E,MAAM,YAAwB,EAAE;GAChC,MAAM,UAAU,UAAU,QAAQ,OAAO;IAAE,MAAM;IAAS,cAAc;IAAG,SAAS;IAAK,CAAC;AAE1F,UAAO,MAAM,IAAI,SAAqB,SAAS,WAAW;AACxD,YAAQ,GAAG,aAAa,QAAQ;KAC9B,MAAM,WAAW,IAAIA,SAAc;MACjC,MAAM,IAAI,YAAY;MACtB,UAAU;OACR,QAAQ,IAAI,UAAU,aAAa,IAAI,UAAU,OAAO,KAAK;OAC7D,OAAO,IAAI,UAAU,SAAS;OAC/B;MACF,CAAC;AACF,eAAU,KAAK,SAAS;AAGxB,UAAK,WAAW,YAAY;MAC1B,KAAK,SAAS,SAAS;MACvB,OAAO,SAAS,SAAS;MACzB,OAAO,UAAU;MAClB,CAAC;MACF;AAEF,YAAQ,GAAG,UAAU,QAAa;AAChC,YAAO,MAAM,KAAK,gBAAgB;AAClC,YAAO,IAAI;MACX;AAEF,YAAQ,GAAG,SAAS,UAAU;AAC5B,SAAI,MAAM,WAAW,UAAU;AAC7B,aAAO,MAAM,SAAS,MAAM,SAAS;AACrC,6BAAO,IAAI,MAAM,SAAS,MAAM,SAAS,CAAC;YAEvC;AACH,aAAO,KAAK,oBAAoB,UAAU,OAAO,OAAO;AACxD,WAAK,WAAW,QAAQ,EAAE,OAAO,UAAU,QAAQ,CAAC;AACpD,cAAQ,UAAU;;MAEpB;AAEF,YAAQ,OAAO;KACf;WAEG,OAAO;AACZ,UAAO,MAAM,OAAO,cAAc;AAClC,SAAM"}
@@ -0,0 +1,5 @@
1
+ //#region src/modules/doc/infrastructure/agent/settings.d.ts
2
+ declare function initSettings(): void;
3
+ //#endregion
4
+ export { initSettings };
5
+ //# sourceMappingURL=settings.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.mts","names":[],"sources":["../../../../../src/modules/doc/infrastructure/agent/settings.ts"],"mappings":";iBAQgB,YAAA,CAAA"}
@@ -0,0 +1,72 @@
1
+ import AppSettings from "../../../../settings.mjs";
2
+ import { logger } from "../../../../shared/logger.mjs";
3
+ import { VectorStoreProvider } from "./storage/vector-store.mjs";
4
+ import { OpenAI, OpenAIEmbedding } from "@llamaindex/openai";
5
+ import { CallbackManager, Settings } from "llamaindex";
6
+
7
+ //#region src/modules/doc/infrastructure/agent/settings.ts
8
+ const { config } = AppSettings;
9
+ function initSettings() {
10
+ logger.info("Start");
11
+ const agent = config.agent;
12
+ const client = agent.client;
13
+ const embedding = agent.embedding;
14
+ const milvus = agent.milvus;
15
+ const missing = [];
16
+ if (!client.api_key || client.api_key.trim().length === 0) missing.push("agent.client.api_key");
17
+ if (!client.base_url || client.base_url.trim().length === 0) missing.push("agent.client.base_url");
18
+ if (!agent.model || agent.model.trim().length === 0) missing.push("agent.model");
19
+ if (!embedding.model || embedding.model.trim().length === 0) missing.push("agent.embedding.model");
20
+ if (!embedding.dim || embedding.dim <= 0) missing.push("agent.embedding.dim");
21
+ if (!milvus || !milvus.address || milvus.address.trim().length === 0) missing.push("agent.milvus.address");
22
+ if (missing.length > 0) {
23
+ logger.error({ missing }, `Agent config missing fields: ${missing.join(", ")}`);
24
+ process.exit(1);
25
+ }
26
+ Settings.llm = new OpenAI({
27
+ model: agent.model,
28
+ temperature: client.temperature,
29
+ apiKey: client.api_key,
30
+ baseURL: client.base_url,
31
+ maxTokens: client.max_tokens
32
+ });
33
+ logger.info(`Settings.llm initialized with: ${agent.model}`);
34
+ Settings.embedModel = new OpenAIEmbedding({
35
+ model: embedding.model,
36
+ apiKey: client.api_key,
37
+ baseURL: client.base_url,
38
+ dimensions: embedding.dim,
39
+ timeout: 60 * 1e3
40
+ });
41
+ logger.info(`Settings.embedModel initialized with: ${embedding.model}`);
42
+ VectorStoreProvider.getVectorStore();
43
+ if (process.env.QUERY_ENGINE_LOG === "true") {
44
+ const callbackManager = new CallbackManager();
45
+ callbackManager.on("query-start", (event) => {
46
+ logger.info("[query-start]");
47
+ });
48
+ callbackManager.on("retrieve-start", (event) => {
49
+ logger.info("[retrieve-start]");
50
+ });
51
+ callbackManager.on("retrieve-end", (event) => {
52
+ logger.info("[retrieve-end]");
53
+ });
54
+ callbackManager.on("llm-start", (event) => {
55
+ logger.info("[llm-start]");
56
+ });
57
+ callbackManager.on("llm-stream", (event) => {
58
+ logger.info("[llm-stream]");
59
+ });
60
+ callbackManager.on("llm-end", (event) => {
61
+ logger.info("[llm-end]");
62
+ });
63
+ callbackManager.on("query-end", (event) => {
64
+ logger.info("[query-end]");
65
+ });
66
+ Settings.callbackManager = callbackManager;
67
+ }
68
+ }
69
+
70
+ //#endregion
71
+ export { initSettings };
72
+ //# sourceMappingURL=settings.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.mjs","names":[],"sources":["../../../../../src/modules/doc/infrastructure/agent/settings.ts"],"sourcesContent":["import { OpenAI, OpenAIEmbedding } from '@llamaindex/openai'\nimport { CallbackManager, Settings } from 'llamaindex'\nimport AppSettings from '@/settings'\nimport { logger } from '@/shared/logger'\nimport { VectorStoreProvider } from './storage/vector-store'\n\nconst { config } = AppSettings\n\nexport function initSettings() {\n logger.info('Start')\n const agent = config.agent\n const client = agent.client\n const embedding = agent.embedding\n const milvus = agent.milvus\n\n const missing: string[] = []\n\n if (!client.api_key || client.api_key.trim().length === 0) {\n missing.push('agent.client.api_key')\n }\n if (!client.base_url || client.base_url.trim().length === 0) {\n missing.push('agent.client.base_url')\n }\n if (!agent.model || agent.model.trim().length === 0) {\n missing.push('agent.model')\n }\n if (!embedding.model || embedding.model.trim().length === 0) {\n missing.push('agent.embedding.model')\n }\n if (!embedding.dim || embedding.dim <= 0) {\n missing.push('agent.embedding.dim')\n }\n if (!milvus || !milvus.address || milvus.address.trim().length === 0) {\n missing.push('agent.milvus.address')\n }\n\n if (missing.length > 0) {\n logger.error({ missing }, `Agent config missing fields: ${missing.join(', ')}`)\n process.exit(1)\n }\n\n Settings.llm = new OpenAI({\n model: agent.model,\n temperature: client.temperature,\n apiKey: client.api_key,\n baseURL: client.base_url,\n maxTokens: client.max_tokens,\n })\n logger.info(`Settings.llm initialized with: ${agent.model}`)\n Settings.embedModel = new OpenAIEmbedding({\n model: embedding.model,\n apiKey: client.api_key,\n baseURL: client.base_url,\n dimensions: embedding.dim,\n timeout: 60 * 1000,\n })\n\n logger.info(`Settings.embedModel initialized with: ${embedding.model}`)\n\n // 初始化vectorStore\n VectorStoreProvider.getVectorStore()\n\n if (process.env.QUERY_ENGINE_LOG === 'true') {\n const callbackManager = new CallbackManager()\n callbackManager.on('query-start', (event) => {\n logger.info('[query-start]')\n })\n callbackManager.on('retrieve-start', (event) => {\n logger.info('[retrieve-start]')\n })\n callbackManager.on('retrieve-end', (event) => {\n logger.info('[retrieve-end]')\n })\n callbackManager.on('llm-start', (event) => {\n logger.info('[llm-start]')\n })\n callbackManager.on('llm-stream', (event) => {\n logger.info('[llm-stream]')\n })\n callbackManager.on('llm-end', (event) => {\n logger.info('[llm-end]')\n })\n callbackManager.on('query-end', (event) => {\n logger.info('[query-end]')\n })\n\n Settings.callbackManager = callbackManager\n }\n}\n"],"mappings":";;;;;;;AAMA,MAAM,EAAE,WAAW;AAEnB,SAAgB,eAAe;AAC7B,QAAO,KAAK,QAAQ;CACpB,MAAM,QAAQ,OAAO;CACrB,MAAM,SAAS,MAAM;CACrB,MAAM,YAAY,MAAM;CACxB,MAAM,SAAS,MAAM;CAErB,MAAM,UAAoB,EAAE;AAE5B,KAAI,CAAC,OAAO,WAAW,OAAO,QAAQ,MAAM,CAAC,WAAW,EACtD,SAAQ,KAAK,uBAAuB;AAEtC,KAAI,CAAC,OAAO,YAAY,OAAO,SAAS,MAAM,CAAC,WAAW,EACxD,SAAQ,KAAK,wBAAwB;AAEvC,KAAI,CAAC,MAAM,SAAS,MAAM,MAAM,MAAM,CAAC,WAAW,EAChD,SAAQ,KAAK,cAAc;AAE7B,KAAI,CAAC,UAAU,SAAS,UAAU,MAAM,MAAM,CAAC,WAAW,EACxD,SAAQ,KAAK,wBAAwB;AAEvC,KAAI,CAAC,UAAU,OAAO,UAAU,OAAO,EACrC,SAAQ,KAAK,sBAAsB;AAErC,KAAI,CAAC,UAAU,CAAC,OAAO,WAAW,OAAO,QAAQ,MAAM,CAAC,WAAW,EACjE,SAAQ,KAAK,uBAAuB;AAGtC,KAAI,QAAQ,SAAS,GAAG;AACtB,SAAO,MAAM,EAAE,SAAS,EAAE,gCAAgC,QAAQ,KAAK,KAAK,GAAG;AAC/E,UAAQ,KAAK,EAAE;;AAGjB,UAAS,MAAM,IAAI,OAAO;EACxB,OAAO,MAAM;EACb,aAAa,OAAO;EACpB,QAAQ,OAAO;EACf,SAAS,OAAO;EAChB,WAAW,OAAO;EACnB,CAAC;AACF,QAAO,KAAK,kCAAkC,MAAM,QAAQ;AAC5D,UAAS,aAAa,IAAI,gBAAgB;EACxC,OAAO,UAAU;EACjB,QAAQ,OAAO;EACf,SAAS,OAAO;EAChB,YAAY,UAAU;EACtB,SAAS,KAAK;EACf,CAAC;AAEF,QAAO,KAAK,yCAAyC,UAAU,QAAQ;AAGvE,qBAAoB,gBAAgB;AAEpC,KAAI,QAAQ,IAAI,qBAAqB,QAAQ;EAC3C,MAAM,kBAAkB,IAAI,iBAAiB;AAC7C,kBAAgB,GAAG,gBAAgB,UAAU;AAC3C,UAAO,KAAK,gBAAgB;IAC5B;AACF,kBAAgB,GAAG,mBAAmB,UAAU;AAC9C,UAAO,KAAK,mBAAmB;IAC/B;AACF,kBAAgB,GAAG,iBAAiB,UAAU;AAC5C,UAAO,KAAK,iBAAiB;IAC7B;AACF,kBAAgB,GAAG,cAAc,UAAU;AACzC,UAAO,KAAK,cAAc;IAC1B;AACF,kBAAgB,GAAG,eAAe,UAAU;AAC1C,UAAO,KAAK,eAAe;IAC3B;AACF,kBAAgB,GAAG,YAAY,UAAU;AACvC,UAAO,KAAK,YAAY;IACxB;AACF,kBAAgB,GAAG,cAAc,UAAU;AACzC,UAAO,KAAK,cAAc;IAC1B;AAEF,WAAS,kBAAkB"}
@@ -0,0 +1,7 @@
1
+ import { VectorStoreIndex } from "llamaindex";
2
+
3
+ //#region src/modules/doc/infrastructure/agent/storage/index.d.ts
4
+ declare function getIndex(): Promise<VectorStoreIndex>;
5
+ //#endregion
6
+ export { getIndex };
7
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../../../src/modules/doc/infrastructure/agent/storage/index.ts"],"mappings":";;;iBAMgB,QAAA,CAAA,GAAQ,OAAA,CAAA,gBAAA"}
@@ -0,0 +1,12 @@
1
+ import { VectorStoreProvider } from "./vector-store.mjs";
2
+ import { VectorStoreIndex } from "llamaindex";
3
+
4
+ //#region src/modules/doc/infrastructure/agent/storage/index.ts
5
+ function getIndex() {
6
+ const vectorStore = VectorStoreProvider.getVectorStore();
7
+ return VectorStoreIndex.fromVectorStore(vectorStore);
8
+ }
9
+
10
+ //#endregion
11
+ export { getIndex };
12
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../src/modules/doc/infrastructure/agent/storage/index.ts"],"sourcesContent":["// src/infrastructure/rag/storage/index-manager.ts\nimport {\n VectorStoreIndex,\n} from 'llamaindex'\nimport { VectorStoreProvider } from './vector-store'\n\nexport function getIndex() {\n const vectorStore = VectorStoreProvider.getVectorStore()\n return VectorStoreIndex.fromVectorStore(vectorStore)\n}\n"],"mappings":";;;;AAMA,SAAgB,WAAW;CACzB,MAAM,cAAc,oBAAoB,gBAAgB;AACxD,QAAO,iBAAiB,gBAAgB,YAAY"}
@@ -0,0 +1,14 @@
1
+ import { MilvusVectorStore } from "@llamaindex/milvus";
2
+
3
+ //#region src/modules/doc/infrastructure/agent/storage/vector-store.d.ts
4
+ declare class VectorStoreProvider {
5
+ private static instance;
6
+ /**
7
+ * 获取全局唯一的 Milvus Vector Store 实例
8
+ * 单例模式:整个应用生命周期只保持一个连接
9
+ */
10
+ static getVectorStore(): MilvusVectorStore;
11
+ }
12
+ //#endregion
13
+ export { VectorStoreProvider };
14
+ //# sourceMappingURL=vector-store.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-store.d.mts","names":[],"sources":["../../../../../../src/modules/doc/infrastructure/agent/storage/vector-store.ts"],"mappings":";;;cAMa,mBAAA;EAAA,eACI,QAAA;EADJ;;;;EAAA,OAOJ,cAAA,CAAA,GAAkB,iBAAA;AAAA"}
@@ -0,0 +1,35 @@
1
+ import AppSettings from "../../../../../settings.mjs";
2
+ import { logger } from "../../../../../shared/logger.mjs";
3
+ import { MilvusVectorStore } from "@llamaindex/milvus";
4
+
5
+ //#region src/modules/doc/infrastructure/agent/storage/vector-store.ts
6
+ const { config } = AppSettings;
7
+ var VectorStoreProvider = class {
8
+ static instance = null;
9
+ /**
10
+ * 获取全局唯一的 Milvus Vector Store 实例
11
+ * 单例模式:整个应用生命周期只保持一个连接
12
+ */
13
+ static getVectorStore() {
14
+ if (this.instance) return this.instance;
15
+ const milvus = config.agent.milvus;
16
+ if (!milvus || !milvus.address) {
17
+ logger.error("Agent config missing fields: milvus.address. exiting process");
18
+ process.exit(1);
19
+ }
20
+ this.instance = new MilvusVectorStore({
21
+ params: {
22
+ configOrAddress: milvus.address,
23
+ username: milvus.username,
24
+ password: milvus.password,
25
+ ssl: false
26
+ },
27
+ collection: milvus.collection_name
28
+ });
29
+ return this.instance;
30
+ }
31
+ };
32
+
33
+ //#endregion
34
+ export { VectorStoreProvider };
35
+ //# sourceMappingURL=vector-store.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-store.mjs","names":[],"sources":["../../../../../../src/modules/doc/infrastructure/agent/storage/vector-store.ts"],"sourcesContent":["import { MilvusVectorStore } from '@llamaindex/milvus'\nimport AppSettings from '@/settings'\nimport { logger } from '@/shared/logger'\n\nconst { config } = AppSettings\n\nexport class VectorStoreProvider {\n private static instance: MilvusVectorStore | null = null\n\n /**\n * 获取全局唯一的 Milvus Vector Store 实例\n * 单例模式:整个应用生命周期只保持一个连接\n */\n static getVectorStore(): MilvusVectorStore {\n if (this.instance) {\n return this.instance\n }\n\n const milvus = config.agent.milvus\n\n if (!milvus || !milvus.address) {\n logger.error('Agent config missing fields: milvus.address. exiting process')\n process.exit(1)\n }\n\n this.instance = new MilvusVectorStore({\n params: {\n configOrAddress: milvus.address,\n username: milvus.username,\n password: milvus.password,\n ssl: false, // TODO: 增加配置\n },\n collection: milvus.collection_name,\n })\n return this.instance\n }\n}\n"],"mappings":";;;;;AAIA,MAAM,EAAE,WAAW;AAEnB,IAAa,sBAAb,MAAiC;CAC/B,OAAe,WAAqC;;;;;CAMpD,OAAO,iBAAoC;AACzC,MAAI,KAAK,SACP,QAAO,KAAK;EAGd,MAAM,SAAS,OAAO,MAAM;AAE5B,MAAI,CAAC,UAAU,CAAC,OAAO,SAAS;AAC9B,UAAO,MAAM,+DAA+D;AAC5E,WAAQ,KAAK,EAAE;;AAGjB,OAAK,WAAW,IAAI,kBAAkB;GACpC,QAAQ;IACN,iBAAiB,OAAO;IACxB,UAAU,OAAO;IACjB,UAAU,OAAO;IACjB,KAAK;IACN;GACD,YAAY,OAAO;GACpB,CAAC;AACF,SAAO,KAAK"}