agentdb 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/LICENSE +38 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/LICENSE-MIT +21 -0
  4. package/README.md +953 -0
  5. package/bin/agentdb.js +485 -0
  6. package/bin/plugin-cli-wrapper.mjs +21 -0
  7. package/dist/cache/query-cache.d.ts +105 -0
  8. package/dist/cache/query-cache.d.ts.map +1 -0
  9. package/dist/cache/query-cache.js +224 -0
  10. package/dist/cache/query-cache.js.map +1 -0
  11. package/dist/cache/query-cache.mjs +219 -0
  12. package/dist/cli/cache/query-cache.d.ts +104 -0
  13. package/dist/cli/cache/query-cache.js +244 -0
  14. package/dist/cli/cli/db-commands.d.ts +48 -0
  15. package/dist/cli/cli/db-commands.js +613 -0
  16. package/dist/cli/commands.d.ts +7 -0
  17. package/dist/cli/commands.d.ts.map +1 -0
  18. package/dist/cli/commands.js +113 -0
  19. package/dist/cli/commands.js.map +1 -0
  20. package/dist/cli/commands.mjs +104 -0
  21. package/dist/cli/core/backend-interface.d.ts +70 -0
  22. package/dist/cli/core/backend-interface.js +15 -0
  23. package/dist/cli/core/native-backend.d.ts +140 -0
  24. package/dist/cli/core/native-backend.js +432 -0
  25. package/dist/cli/core/vector-db.d.ts +126 -0
  26. package/dist/cli/core/vector-db.js +338 -0
  27. package/dist/cli/core/wasm-backend.d.ts +95 -0
  28. package/dist/cli/core/wasm-backend.js +418 -0
  29. package/dist/cli/db-commands.d.ts +49 -0
  30. package/dist/cli/db-commands.d.ts.map +1 -0
  31. package/dist/cli/db-commands.js +533 -0
  32. package/dist/cli/db-commands.js.map +1 -0
  33. package/dist/cli/db-commands.mjs +522 -0
  34. package/dist/cli/generator.d.ts +11 -0
  35. package/dist/cli/generator.d.ts.map +1 -0
  36. package/dist/cli/generator.js +567 -0
  37. package/dist/cli/generator.js.map +1 -0
  38. package/dist/cli/generator.mjs +527 -0
  39. package/dist/cli/help.d.ts +18 -0
  40. package/dist/cli/help.d.ts.map +1 -0
  41. package/dist/cli/help.js +676 -0
  42. package/dist/cli/help.js.map +1 -0
  43. package/dist/cli/help.mjs +667 -0
  44. package/dist/cli/index/hnsw.d.ts +164 -0
  45. package/dist/cli/index/hnsw.js +558 -0
  46. package/dist/cli/plugin-cli.d.ts +7 -0
  47. package/dist/cli/plugin-cli.d.ts.map +1 -0
  48. package/dist/cli/plugin-cli.js +295 -0
  49. package/dist/cli/plugin-cli.js.map +1 -0
  50. package/dist/cli/plugin-cli.mjs +289 -0
  51. package/dist/cli/quantization/product-quantization.d.ts +108 -0
  52. package/dist/cli/quantization/product-quantization.js +350 -0
  53. package/dist/cli/query/query-builder.d.ts +322 -0
  54. package/dist/cli/query/query-builder.js +600 -0
  55. package/dist/cli/templates.d.ts +14 -0
  56. package/dist/cli/templates.d.ts.map +1 -0
  57. package/dist/cli/templates.js +182 -0
  58. package/dist/cli/templates.js.map +1 -0
  59. package/dist/cli/templates.mjs +176 -0
  60. package/dist/cli/types/index.d.ts +116 -0
  61. package/dist/cli/types/index.js +5 -0
  62. package/dist/cli/types.d.ts +91 -0
  63. package/dist/cli/types.d.ts.map +1 -0
  64. package/dist/cli/types.js +6 -0
  65. package/dist/cli/types.js.map +1 -0
  66. package/dist/cli/types.mjs +4 -0
  67. package/dist/cli/wizard/index.d.ts +6 -0
  68. package/dist/cli/wizard/index.d.ts.map +1 -0
  69. package/dist/cli/wizard/index.js +138 -0
  70. package/dist/cli/wizard/index.js.map +1 -0
  71. package/dist/cli/wizard/index.mjs +131 -0
  72. package/dist/cli/wizard/prompts.d.ts +11 -0
  73. package/dist/cli/wizard/prompts.d.ts.map +1 -0
  74. package/dist/cli/wizard/prompts.js +482 -0
  75. package/dist/cli/wizard/prompts.js.map +1 -0
  76. package/dist/cli/wizard/prompts.mjs +470 -0
  77. package/dist/cli/wizard/validator.d.ts +13 -0
  78. package/dist/cli/wizard/validator.d.ts.map +1 -0
  79. package/dist/cli/wizard/validator.js +234 -0
  80. package/dist/cli/wizard/validator.js.map +1 -0
  81. package/dist/cli/wizard/validator.mjs +224 -0
  82. package/dist/core/backend-interface.d.ts +71 -0
  83. package/dist/core/backend-interface.d.ts.map +1 -0
  84. package/dist/core/backend-interface.js +16 -0
  85. package/dist/core/backend-interface.js.map +1 -0
  86. package/dist/core/backend-interface.mjs +12 -0
  87. package/dist/core/native-backend.d.ts +141 -0
  88. package/dist/core/native-backend.d.ts.map +1 -0
  89. package/dist/core/native-backend.js +457 -0
  90. package/dist/core/native-backend.js.map +1 -0
  91. package/dist/core/native-backend.mjs +449 -0
  92. package/dist/core/vector-db.d.ts +127 -0
  93. package/dist/core/vector-db.d.ts.map +1 -0
  94. package/dist/core/vector-db.js +266 -0
  95. package/dist/core/vector-db.js.map +1 -0
  96. package/dist/core/vector-db.mjs +261 -0
  97. package/dist/core/wasm-backend.d.ts +96 -0
  98. package/dist/core/wasm-backend.d.ts.map +1 -0
  99. package/dist/core/wasm-backend.js +393 -0
  100. package/dist/core/wasm-backend.js.map +1 -0
  101. package/dist/core/wasm-backend.mjs +385 -0
  102. package/dist/index/hnsw-optimized.d.ts +75 -0
  103. package/dist/index/hnsw-optimized.d.ts.map +1 -0
  104. package/dist/index/hnsw-optimized.js +412 -0
  105. package/dist/index/hnsw-optimized.js.map +1 -0
  106. package/dist/index/hnsw-optimized.mjs +407 -0
  107. package/dist/index/hnsw.d.ts +165 -0
  108. package/dist/index/hnsw.d.ts.map +1 -0
  109. package/dist/index/hnsw.js +521 -0
  110. package/dist/index/hnsw.js.map +1 -0
  111. package/dist/index/hnsw.mjs +516 -0
  112. package/dist/index.d.ts +57 -0
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.js +82 -0
  115. package/dist/index.js.map +1 -0
  116. package/dist/index.mjs +63 -0
  117. package/dist/mcp-server.d.ts +27 -0
  118. package/dist/mcp-server.d.ts.map +1 -0
  119. package/dist/mcp-server.js +789 -0
  120. package/dist/mcp-server.js.map +1 -0
  121. package/dist/mcp-server.mjs +784 -0
  122. package/dist/plugins/base-plugin.d.ts +114 -0
  123. package/dist/plugins/base-plugin.d.ts.map +1 -0
  124. package/dist/plugins/base-plugin.js +313 -0
  125. package/dist/plugins/base-plugin.js.map +1 -0
  126. package/dist/plugins/base-plugin.mjs +275 -0
  127. package/dist/plugins/implementations/active-learning.d.ts +135 -0
  128. package/dist/plugins/implementations/active-learning.d.ts.map +1 -0
  129. package/dist/plugins/implementations/active-learning.js +372 -0
  130. package/dist/plugins/implementations/active-learning.js.map +1 -0
  131. package/dist/plugins/implementations/active-learning.mjs +367 -0
  132. package/dist/plugins/implementations/actor-critic.d.ts +64 -0
  133. package/dist/plugins/implementations/actor-critic.d.ts.map +1 -0
  134. package/dist/plugins/implementations/actor-critic.js +363 -0
  135. package/dist/plugins/implementations/actor-critic.js.map +1 -0
  136. package/dist/plugins/implementations/actor-critic.mjs +358 -0
  137. package/dist/plugins/implementations/adversarial-training.d.ts +133 -0
  138. package/dist/plugins/implementations/adversarial-training.d.ts.map +1 -0
  139. package/dist/plugins/implementations/adversarial-training.js +409 -0
  140. package/dist/plugins/implementations/adversarial-training.js.map +1 -0
  141. package/dist/plugins/implementations/adversarial-training.mjs +404 -0
  142. package/dist/plugins/implementations/curriculum-learning.d.ts +132 -0
  143. package/dist/plugins/implementations/curriculum-learning.d.ts.map +1 -0
  144. package/dist/plugins/implementations/curriculum-learning.js +354 -0
  145. package/dist/plugins/implementations/curriculum-learning.js.map +1 -0
  146. package/dist/plugins/implementations/curriculum-learning.mjs +349 -0
  147. package/dist/plugins/implementations/decision-transformer.d.ts +77 -0
  148. package/dist/plugins/implementations/decision-transformer.d.ts.map +1 -0
  149. package/dist/plugins/implementations/decision-transformer.js +422 -0
  150. package/dist/plugins/implementations/decision-transformer.js.map +1 -0
  151. package/dist/plugins/implementations/decision-transformer.mjs +417 -0
  152. package/dist/plugins/implementations/federated-learning.d.ts +126 -0
  153. package/dist/plugins/implementations/federated-learning.d.ts.map +1 -0
  154. package/dist/plugins/implementations/federated-learning.js +436 -0
  155. package/dist/plugins/implementations/federated-learning.js.map +1 -0
  156. package/dist/plugins/implementations/federated-learning.mjs +431 -0
  157. package/dist/plugins/implementations/index.d.ts +30 -0
  158. package/dist/plugins/implementations/index.d.ts.map +1 -0
  159. package/dist/plugins/implementations/index.js +45 -0
  160. package/dist/plugins/implementations/index.js.map +1 -0
  161. package/dist/plugins/implementations/index.mjs +31 -0
  162. package/dist/plugins/implementations/multi-task-learning.d.ts +115 -0
  163. package/dist/plugins/implementations/multi-task-learning.d.ts.map +1 -0
  164. package/dist/plugins/implementations/multi-task-learning.js +369 -0
  165. package/dist/plugins/implementations/multi-task-learning.js.map +1 -0
  166. package/dist/plugins/implementations/multi-task-learning.mjs +364 -0
  167. package/dist/plugins/implementations/neural-architecture-search.d.ts +148 -0
  168. package/dist/plugins/implementations/neural-architecture-search.d.ts.map +1 -0
  169. package/dist/plugins/implementations/neural-architecture-search.js +379 -0
  170. package/dist/plugins/implementations/neural-architecture-search.js.map +1 -0
  171. package/dist/plugins/implementations/neural-architecture-search.mjs +374 -0
  172. package/dist/plugins/implementations/q-learning.d.ts +98 -0
  173. package/dist/plugins/implementations/q-learning.d.ts.map +1 -0
  174. package/dist/plugins/implementations/q-learning.js +435 -0
  175. package/dist/plugins/implementations/q-learning.js.map +1 -0
  176. package/dist/plugins/implementations/q-learning.mjs +430 -0
  177. package/dist/plugins/implementations/sarsa.d.ts +103 -0
  178. package/dist/plugins/implementations/sarsa.d.ts.map +1 -0
  179. package/dist/plugins/implementations/sarsa.js +347 -0
  180. package/dist/plugins/implementations/sarsa.js.map +1 -0
  181. package/dist/plugins/implementations/sarsa.mjs +342 -0
  182. package/dist/plugins/index.d.ts +107 -0
  183. package/dist/plugins/index.d.ts.map +1 -0
  184. package/dist/plugins/index.js +179 -0
  185. package/dist/plugins/index.js.map +1 -0
  186. package/dist/plugins/index.mjs +168 -0
  187. package/dist/plugins/interface.d.ts +439 -0
  188. package/dist/plugins/interface.d.ts.map +1 -0
  189. package/dist/plugins/interface.js +12 -0
  190. package/dist/plugins/interface.js.map +1 -0
  191. package/dist/plugins/interface.mjs +10 -0
  192. package/dist/plugins/learning-plugin.interface.d.ts +257 -0
  193. package/dist/plugins/learning-plugin.interface.d.ts.map +1 -0
  194. package/dist/plugins/learning-plugin.interface.js +7 -0
  195. package/dist/plugins/learning-plugin.interface.js.map +1 -0
  196. package/dist/plugins/learning-plugin.interface.mjs +5 -0
  197. package/dist/plugins/plugin-exports.d.ts +71 -0
  198. package/dist/plugins/plugin-exports.d.ts.map +1 -0
  199. package/dist/plugins/plugin-exports.js +78 -0
  200. package/dist/plugins/plugin-exports.js.map +1 -0
  201. package/dist/plugins/plugin-exports.mjs +69 -0
  202. package/dist/plugins/registry.d.ts +206 -0
  203. package/dist/plugins/registry.d.ts.map +1 -0
  204. package/dist/plugins/registry.js +365 -0
  205. package/dist/plugins/registry.js.map +1 -0
  206. package/dist/plugins/registry.mjs +356 -0
  207. package/dist/plugins/validator.d.ts +63 -0
  208. package/dist/plugins/validator.d.ts.map +1 -0
  209. package/dist/plugins/validator.js +464 -0
  210. package/dist/plugins/validator.js.map +1 -0
  211. package/dist/plugins/validator.mjs +458 -0
  212. package/dist/quantization/binary-quantization.d.ts +104 -0
  213. package/dist/quantization/binary-quantization.d.ts.map +1 -0
  214. package/dist/quantization/binary-quantization.js +246 -0
  215. package/dist/quantization/binary-quantization.js.map +1 -0
  216. package/dist/quantization/binary-quantization.mjs +240 -0
  217. package/dist/quantization/optimized-pq.d.ts +138 -0
  218. package/dist/quantization/optimized-pq.d.ts.map +1 -0
  219. package/dist/quantization/optimized-pq.js +320 -0
  220. package/dist/quantization/optimized-pq.js.map +1 -0
  221. package/dist/quantization/optimized-pq.mjs +313 -0
  222. package/dist/quantization/product-quantization.d.ts +109 -0
  223. package/dist/quantization/product-quantization.d.ts.map +1 -0
  224. package/dist/quantization/product-quantization.js +287 -0
  225. package/dist/quantization/product-quantization.js.map +1 -0
  226. package/dist/quantization/product-quantization.mjs +282 -0
  227. package/dist/quantization/scalar-quantization.d.ts +100 -0
  228. package/dist/quantization/scalar-quantization.d.ts.map +1 -0
  229. package/dist/quantization/scalar-quantization.js +324 -0
  230. package/dist/quantization/scalar-quantization.js.map +1 -0
  231. package/dist/quantization/scalar-quantization.mjs +319 -0
  232. package/dist/query/index.d.ts +6 -0
  233. package/dist/query/index.d.ts.map +1 -0
  234. package/dist/query/index.js +9 -0
  235. package/dist/query/index.js.map +1 -0
  236. package/dist/query/index.mjs +4 -0
  237. package/dist/query/query-builder.d.ts +323 -0
  238. package/dist/query/query-builder.d.ts.map +1 -0
  239. package/dist/query/query-builder.js +524 -0
  240. package/dist/query/query-builder.js.map +1 -0
  241. package/dist/query/query-builder.mjs +519 -0
  242. package/dist/reasoning/context-synthesizer.d.ts +57 -0
  243. package/dist/reasoning/context-synthesizer.d.ts.map +1 -0
  244. package/dist/reasoning/context-synthesizer.js +224 -0
  245. package/dist/reasoning/context-synthesizer.js.map +1 -0
  246. package/dist/reasoning/context-synthesizer.mjs +219 -0
  247. package/dist/reasoning/experience-curator.d.ts +66 -0
  248. package/dist/reasoning/experience-curator.d.ts.map +1 -0
  249. package/dist/reasoning/experience-curator.js +288 -0
  250. package/dist/reasoning/experience-curator.js.map +1 -0
  251. package/dist/reasoning/experience-curator.mjs +283 -0
  252. package/dist/reasoning/memory-optimizer.d.ts +69 -0
  253. package/dist/reasoning/memory-optimizer.d.ts.map +1 -0
  254. package/dist/reasoning/memory-optimizer.js +331 -0
  255. package/dist/reasoning/memory-optimizer.js.map +1 -0
  256. package/dist/reasoning/memory-optimizer.mjs +326 -0
  257. package/dist/reasoning/pattern-matcher.d.ts +59 -0
  258. package/dist/reasoning/pattern-matcher.d.ts.map +1 -0
  259. package/dist/reasoning/pattern-matcher.js +229 -0
  260. package/dist/reasoning/pattern-matcher.js.map +1 -0
  261. package/dist/reasoning/pattern-matcher.mjs +224 -0
  262. package/dist/reasoningbank/adapter/agentdb-adapter.d.ts +118 -0
  263. package/dist/reasoningbank/adapter/agentdb-adapter.d.ts.map +1 -0
  264. package/dist/reasoningbank/adapter/agentdb-adapter.js +477 -0
  265. package/dist/reasoningbank/adapter/agentdb-adapter.js.map +1 -0
  266. package/dist/reasoningbank/adapter/types.d.ts +113 -0
  267. package/dist/reasoningbank/adapter/types.d.ts.map +1 -0
  268. package/dist/reasoningbank/adapter/types.js +9 -0
  269. package/dist/reasoningbank/adapter/types.js.map +1 -0
  270. package/dist/reasoningbank/cli/commands.d.ts +16 -0
  271. package/dist/reasoningbank/cli/commands.d.ts.map +1 -0
  272. package/dist/reasoningbank/cli/commands.js +272 -0
  273. package/dist/reasoningbank/cli/commands.js.map +1 -0
  274. package/dist/reasoningbank/mcp/agentdb-tools.d.ts +319 -0
  275. package/dist/reasoningbank/mcp/agentdb-tools.d.ts.map +1 -0
  276. package/dist/reasoningbank/mcp/agentdb-tools.js +301 -0
  277. package/dist/reasoningbank/mcp/agentdb-tools.js.map +1 -0
  278. package/dist/reasoningbank/migration/migrate.d.ts +25 -0
  279. package/dist/reasoningbank/migration/migrate.d.ts.map +1 -0
  280. package/dist/reasoningbank/migration/migrate.js +178 -0
  281. package/dist/reasoningbank/migration/migrate.js.map +1 -0
  282. package/dist/reasoningbank/reasoning/context-synthesizer.d.ts +37 -0
  283. package/dist/reasoningbank/reasoning/context-synthesizer.d.ts.map +1 -0
  284. package/dist/reasoningbank/reasoning/context-synthesizer.js +114 -0
  285. package/dist/reasoningbank/reasoning/context-synthesizer.js.map +1 -0
  286. package/dist/reasoningbank/reasoning/experience-curator.d.ts +39 -0
  287. package/dist/reasoningbank/reasoning/experience-curator.d.ts.map +1 -0
  288. package/dist/reasoningbank/reasoning/experience-curator.js +98 -0
  289. package/dist/reasoningbank/reasoning/experience-curator.js.map +1 -0
  290. package/dist/reasoningbank/reasoning/memory-optimizer.d.ts +44 -0
  291. package/dist/reasoningbank/reasoning/memory-optimizer.d.ts.map +1 -0
  292. package/dist/reasoningbank/reasoning/memory-optimizer.js +184 -0
  293. package/dist/reasoningbank/reasoning/memory-optimizer.js.map +1 -0
  294. package/dist/reasoningbank/reasoning/pattern-matcher.d.ts +40 -0
  295. package/dist/reasoningbank/reasoning/pattern-matcher.d.ts.map +1 -0
  296. package/dist/reasoningbank/reasoning/pattern-matcher.js +87 -0
  297. package/dist/reasoningbank/reasoning/pattern-matcher.js.map +1 -0
  298. package/dist/reasoningbank/sync/quic-sync.d.ts +77 -0
  299. package/dist/reasoningbank/sync/quic-sync.d.ts.map +1 -0
  300. package/dist/reasoningbank/sync/quic-sync.js +165 -0
  301. package/dist/reasoningbank/sync/quic-sync.js.map +1 -0
  302. package/dist/sync/conflict.d.ts +78 -0
  303. package/dist/sync/conflict.d.ts.map +1 -0
  304. package/dist/sync/conflict.js +202 -0
  305. package/dist/sync/conflict.js.map +1 -0
  306. package/dist/sync/conflict.mjs +196 -0
  307. package/dist/sync/coordinator.d.ts +111 -0
  308. package/dist/sync/coordinator.d.ts.map +1 -0
  309. package/dist/sync/coordinator.js +256 -0
  310. package/dist/sync/coordinator.js.map +1 -0
  311. package/dist/sync/coordinator.mjs +250 -0
  312. package/dist/sync/delta.d.ts +81 -0
  313. package/dist/sync/delta.d.ts.map +1 -0
  314. package/dist/sync/delta.js +245 -0
  315. package/dist/sync/delta.js.map +1 -0
  316. package/dist/sync/delta.mjs +238 -0
  317. package/dist/sync/index.d.ts +11 -0
  318. package/dist/sync/index.d.ts.map +1 -0
  319. package/dist/sync/index.js +22 -0
  320. package/dist/sync/index.js.map +1 -0
  321. package/dist/sync/index.mjs +9 -0
  322. package/dist/sync/quic-sync.d.ts +81 -0
  323. package/dist/sync/quic-sync.d.ts.map +1 -0
  324. package/dist/sync/quic-sync.js +329 -0
  325. package/dist/sync/quic-sync.js.map +1 -0
  326. package/dist/sync/quic-sync.mjs +323 -0
  327. package/dist/sync/types.d.ts +168 -0
  328. package/dist/sync/types.d.ts.map +1 -0
  329. package/dist/sync/types.js +8 -0
  330. package/dist/sync/types.js.map +1 -0
  331. package/dist/sync/types.mjs +6 -0
  332. package/dist/types/index.d.ts +117 -0
  333. package/dist/types/index.d.ts.map +1 -0
  334. package/dist/types/index.js +6 -0
  335. package/dist/types/index.js.map +1 -0
  336. package/dist/types/index.mjs +4 -0
  337. package/dist/wasm-loader.d.ts +32 -0
  338. package/dist/wasm-loader.d.ts.map +1 -0
  339. package/dist/wasm-loader.js +75 -0
  340. package/dist/wasm-loader.js.map +1 -0
  341. package/dist/wasm-loader.mjs +64 -0
  342. package/examples/adaptive-learning.ts +284 -0
  343. package/examples/browser/README.md +732 -0
  344. package/examples/browser/adaptive-recommendations/index.html +427 -0
  345. package/examples/browser/collaborative-filtering/index.html +310 -0
  346. package/examples/browser/continual-learning/index.html +736 -0
  347. package/examples/browser/experience-replay/index.html +616 -0
  348. package/examples/browser/index.html +369 -0
  349. package/examples/browser/meta-learning/index.html +789 -0
  350. package/examples/browser/neuro-symbolic/index.html +692 -0
  351. package/examples/browser/pattern-learning/index.html +620 -0
  352. package/examples/browser/quantum-inspired/index.html +728 -0
  353. package/examples/browser/rag/index.html +624 -0
  354. package/examples/browser/swarm-intelligence/index.html +811 -0
  355. package/examples/browser-basic.html +170 -0
  356. package/examples/hnsw-example.ts +148 -0
  357. package/examples/node-basic.js +70 -0
  358. package/examples/quic-sync-example.ts +310 -0
  359. package/examples/quick-start.js +68 -0
  360. package/examples/wasm-example.ts +222 -0
  361. package/package.json +118 -0
@@ -0,0 +1,464 @@
1
+ "use strict";
2
+ /**
3
+ * Plugin Configuration Validator
4
+ *
5
+ * This module provides validation utilities for plugin configurations,
6
+ * ensuring they meet required schemas and constraints.
7
+ *
8
+ * @module plugins/validator
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.validatePluginConfig = validatePluginConfig;
12
+ exports.validateRequired = validateRequired;
13
+ exports.getErrorSummary = getErrorSummary;
14
+ /**
15
+ * Plugin name regex (kebab-case)
16
+ */
17
+ const PLUGIN_NAME_REGEX = /^[a-z0-9-]+$/;
18
+ /**
19
+ * Semantic version regex
20
+ */
21
+ const VERSION_REGEX = /^\d+\.\d+\.\d+$/;
22
+ /**
23
+ * Validate plugin configuration
24
+ *
25
+ * @param config - Plugin configuration to validate
26
+ * @returns Validation result
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const result = validatePluginConfig(config);
31
+ * if (!result.valid) {
32
+ * console.error('Validation errors:', result.errors);
33
+ * }
34
+ * ```
35
+ */
36
+ function validatePluginConfig(config) {
37
+ const errors = [];
38
+ const warnings = [];
39
+ // ============ Required Fields ============
40
+ if (!config.name) {
41
+ errors.push({
42
+ field: 'name',
43
+ message: 'Plugin name is required',
44
+ value: config.name
45
+ });
46
+ }
47
+ else if (!PLUGIN_NAME_REGEX.test(config.name)) {
48
+ errors.push({
49
+ field: 'name',
50
+ message: 'Plugin name must be kebab-case (lowercase letters, numbers, and hyphens)',
51
+ value: config.name,
52
+ expected: 'e.g., my-plugin-name'
53
+ });
54
+ }
55
+ else if (config.name.length < 3 || config.name.length > 50) {
56
+ errors.push({
57
+ field: 'name',
58
+ message: 'Plugin name must be between 3 and 50 characters',
59
+ value: config.name,
60
+ expected: '3-50 characters'
61
+ });
62
+ }
63
+ if (!config.version) {
64
+ errors.push({
65
+ field: 'version',
66
+ message: 'Plugin version is required',
67
+ value: config.version
68
+ });
69
+ }
70
+ else if (!VERSION_REGEX.test(config.version)) {
71
+ errors.push({
72
+ field: 'version',
73
+ message: 'Plugin version must follow semantic versioning (X.Y.Z)',
74
+ value: config.version,
75
+ expected: 'e.g., 1.0.0'
76
+ });
77
+ }
78
+ if (!config.description) {
79
+ errors.push({
80
+ field: 'description',
81
+ message: 'Plugin description is required',
82
+ value: config.description
83
+ });
84
+ }
85
+ else if (config.description.length < 10 || config.description.length > 200) {
86
+ errors.push({
87
+ field: 'description',
88
+ message: 'Description must be between 10 and 200 characters',
89
+ value: config.description,
90
+ expected: '10-200 characters'
91
+ });
92
+ }
93
+ if (!config.baseAlgorithm) {
94
+ errors.push({
95
+ field: 'baseAlgorithm',
96
+ message: 'Base algorithm is required',
97
+ value: config.baseAlgorithm
98
+ });
99
+ }
100
+ else {
101
+ const validAlgorithms = ['decision_transformer', 'q_learning', 'sarsa', 'actor_critic', 'custom'];
102
+ if (!validAlgorithms.includes(config.baseAlgorithm)) {
103
+ errors.push({
104
+ field: 'baseAlgorithm',
105
+ message: 'Invalid base algorithm',
106
+ value: config.baseAlgorithm,
107
+ expected: validAlgorithms.join(', ')
108
+ });
109
+ }
110
+ }
111
+ // ============ Algorithm Configuration ============
112
+ if (!config.algorithm) {
113
+ errors.push({
114
+ field: 'algorithm',
115
+ message: 'Algorithm configuration is required',
116
+ value: config.algorithm
117
+ });
118
+ }
119
+ else {
120
+ if (!config.algorithm.type) {
121
+ errors.push({
122
+ field: 'algorithm.type',
123
+ message: 'Algorithm type is required',
124
+ value: config.algorithm.type
125
+ });
126
+ }
127
+ if (config.algorithm.learningRate !== undefined) {
128
+ if (config.algorithm.learningRate <= 0 || config.algorithm.learningRate > 1) {
129
+ errors.push({
130
+ field: 'algorithm.learningRate',
131
+ message: 'Learning rate must be between 0 and 1',
132
+ value: config.algorithm.learningRate,
133
+ expected: '0 < learningRate <= 1'
134
+ });
135
+ }
136
+ }
137
+ if (config.algorithm.discountFactor !== undefined) {
138
+ if (config.algorithm.discountFactor < 0 || config.algorithm.discountFactor > 1) {
139
+ errors.push({
140
+ field: 'algorithm.discountFactor',
141
+ message: 'Discount factor must be between 0 and 1',
142
+ value: config.algorithm.discountFactor,
143
+ expected: '0 <= discountFactor <= 1'
144
+ });
145
+ }
146
+ }
147
+ }
148
+ // ============ State Configuration ============
149
+ if (config.state) {
150
+ if (!config.state.dimension || config.state.dimension <= 0) {
151
+ errors.push({
152
+ field: 'state.dimension',
153
+ message: 'State dimension must be a positive integer',
154
+ value: config.state.dimension,
155
+ expected: 'dimension > 0'
156
+ });
157
+ }
158
+ }
159
+ // ============ Action Configuration ============
160
+ if (config.action) {
161
+ if (!config.action.type) {
162
+ errors.push({
163
+ field: 'action.type',
164
+ message: 'Action type is required',
165
+ value: config.action.type
166
+ });
167
+ }
168
+ else if (!['discrete', 'continuous'].includes(config.action.type)) {
169
+ errors.push({
170
+ field: 'action.type',
171
+ message: 'Action type must be discrete or continuous',
172
+ value: config.action.type,
173
+ expected: 'discrete, continuous'
174
+ });
175
+ }
176
+ if (config.action.type === 'discrete' && !config.action.spaceSize) {
177
+ errors.push({
178
+ field: 'action.spaceSize',
179
+ message: 'Space size is required for discrete actions',
180
+ value: config.action.spaceSize
181
+ });
182
+ }
183
+ if (config.action.type === 'continuous' && !config.action.spaceBounds) {
184
+ warnings.push({
185
+ field: 'action.spaceBounds',
186
+ message: 'Space bounds recommended for continuous actions',
187
+ value: config.action.spaceBounds
188
+ });
189
+ }
190
+ if (!config.action.selectionStrategy) {
191
+ errors.push({
192
+ field: 'action.selectionStrategy',
193
+ message: 'Action selection strategy is required',
194
+ value: config.action.selectionStrategy
195
+ });
196
+ }
197
+ }
198
+ // ============ Reward Configuration ============
199
+ if (config.reward) {
200
+ const validRewardTypes = ['success_based', 'time_aware', 'token_aware', 'custom'];
201
+ if (!validRewardTypes.includes(config.reward.type)) {
202
+ errors.push({
203
+ field: 'reward.type',
204
+ message: 'Invalid reward type',
205
+ value: config.reward.type,
206
+ expected: validRewardTypes.join(', ')
207
+ });
208
+ }
209
+ if (config.reward.type === 'custom' && !config.reward.function) {
210
+ errors.push({
211
+ field: 'reward.function',
212
+ message: 'Custom reward function is required when type is custom',
213
+ value: config.reward.function
214
+ });
215
+ }
216
+ }
217
+ // ============ Experience Replay Configuration ============
218
+ if (config.experienceReplay) {
219
+ const validReplayTypes = ['none', 'uniform', 'prioritized'];
220
+ if (!validReplayTypes.includes(config.experienceReplay.type)) {
221
+ errors.push({
222
+ field: 'experienceReplay.type',
223
+ message: 'Invalid experience replay type',
224
+ value: config.experienceReplay.type,
225
+ expected: validReplayTypes.join(', ')
226
+ });
227
+ }
228
+ if (config.experienceReplay.type !== 'none') {
229
+ if (!config.experienceReplay.capacity || config.experienceReplay.capacity <= 0) {
230
+ errors.push({
231
+ field: 'experienceReplay.capacity',
232
+ message: 'Replay capacity must be a positive integer',
233
+ value: config.experienceReplay.capacity,
234
+ expected: 'capacity > 0'
235
+ });
236
+ }
237
+ }
238
+ if (config.experienceReplay.type === 'prioritized') {
239
+ if (config.experienceReplay.alpha !== undefined) {
240
+ if (config.experienceReplay.alpha < 0 || config.experienceReplay.alpha > 1) {
241
+ errors.push({
242
+ field: 'experienceReplay.alpha',
243
+ message: 'Priority alpha must be between 0 and 1',
244
+ value: config.experienceReplay.alpha,
245
+ expected: '0 <= alpha <= 1'
246
+ });
247
+ }
248
+ }
249
+ if (config.experienceReplay.beta !== undefined) {
250
+ if (config.experienceReplay.beta < 0 || config.experienceReplay.beta > 1) {
251
+ errors.push({
252
+ field: 'experienceReplay.beta',
253
+ message: 'Priority beta must be between 0 and 1',
254
+ value: config.experienceReplay.beta,
255
+ expected: '0 <= beta <= 1'
256
+ });
257
+ }
258
+ }
259
+ }
260
+ }
261
+ // ============ Storage Configuration ============
262
+ if (!config.storage) {
263
+ errors.push({
264
+ field: 'storage',
265
+ message: 'Storage configuration is required',
266
+ value: config.storage
267
+ });
268
+ }
269
+ else {
270
+ if (!config.storage.backend) {
271
+ errors.push({
272
+ field: 'storage.backend',
273
+ message: 'Storage backend is required',
274
+ value: config.storage.backend
275
+ });
276
+ }
277
+ else if (config.storage.backend !== 'agentdb') {
278
+ errors.push({
279
+ field: 'storage.backend',
280
+ message: 'Only agentdb backend is supported',
281
+ value: config.storage.backend,
282
+ expected: 'agentdb'
283
+ });
284
+ }
285
+ if (!config.storage.path) {
286
+ errors.push({
287
+ field: 'storage.path',
288
+ message: 'Storage path is required',
289
+ value: config.storage.path
290
+ });
291
+ }
292
+ if (config.storage.hnsw) {
293
+ if (config.storage.hnsw.M && (config.storage.hnsw.M < 2 || config.storage.hnsw.M > 100)) {
294
+ warnings.push({
295
+ field: 'storage.hnsw.M',
296
+ message: 'HNSW M parameter typically between 2 and 100',
297
+ value: config.storage.hnsw.M,
298
+ expected: '2 <= M <= 100'
299
+ });
300
+ }
301
+ if (config.storage.hnsw.efConstruction && config.storage.hnsw.efConstruction < 10) {
302
+ warnings.push({
303
+ field: 'storage.hnsw.efConstruction',
304
+ message: 'HNSW efConstruction should be at least 10 for good quality',
305
+ value: config.storage.hnsw.efConstruction,
306
+ expected: 'efConstruction >= 10'
307
+ });
308
+ }
309
+ }
310
+ if (config.storage.quantization?.enabled && config.storage.quantization.bits) {
311
+ if (![8, 16].includes(config.storage.quantization.bits)) {
312
+ errors.push({
313
+ field: 'storage.quantization.bits',
314
+ message: 'Quantization bits must be 8 or 16',
315
+ value: config.storage.quantization.bits,
316
+ expected: '8, 16'
317
+ });
318
+ }
319
+ }
320
+ }
321
+ // ============ Training Configuration ============
322
+ if (!config.training) {
323
+ errors.push({
324
+ field: 'training',
325
+ message: 'Training configuration is required',
326
+ value: config.training
327
+ });
328
+ }
329
+ else {
330
+ if (!config.training.batchSize || config.training.batchSize < 1) {
331
+ errors.push({
332
+ field: 'training.batchSize',
333
+ message: 'Batch size must be at least 1',
334
+ value: config.training.batchSize,
335
+ expected: 'batchSize >= 1'
336
+ });
337
+ }
338
+ else if (config.training.batchSize > 1024) {
339
+ warnings.push({
340
+ field: 'training.batchSize',
341
+ message: 'Large batch size may cause memory issues',
342
+ value: config.training.batchSize,
343
+ expected: 'batchSize <= 1024 recommended'
344
+ });
345
+ }
346
+ if (config.training.epochs && config.training.epochs < 1) {
347
+ errors.push({
348
+ field: 'training.epochs',
349
+ message: 'Epochs must be at least 1',
350
+ value: config.training.epochs,
351
+ expected: 'epochs >= 1'
352
+ });
353
+ }
354
+ if (config.training.validationSplit !== undefined) {
355
+ if (config.training.validationSplit < 0 || config.training.validationSplit >= 1) {
356
+ errors.push({
357
+ field: 'training.validationSplit',
358
+ message: 'Validation split must be between 0 and 1',
359
+ value: config.training.validationSplit,
360
+ expected: '0 <= validationSplit < 1'
361
+ });
362
+ }
363
+ }
364
+ if (!config.training.minExperiences || config.training.minExperiences < 1) {
365
+ errors.push({
366
+ field: 'training.minExperiences',
367
+ message: 'Minimum experiences must be at least 1',
368
+ value: config.training.minExperiences,
369
+ expected: 'minExperiences >= 1'
370
+ });
371
+ }
372
+ if (config.training.trainEvery && config.training.trainEvery < 1) {
373
+ errors.push({
374
+ field: 'training.trainEvery',
375
+ message: 'Train every must be at least 1',
376
+ value: config.training.trainEvery,
377
+ expected: 'trainEvery >= 1'
378
+ });
379
+ }
380
+ }
381
+ // ============ Monitoring Configuration ============
382
+ if (config.monitoring) {
383
+ if (!config.monitoring.trackMetrics || config.monitoring.trackMetrics.length === 0) {
384
+ warnings.push({
385
+ field: 'monitoring.trackMetrics',
386
+ message: 'No metrics are being tracked',
387
+ value: config.monitoring.trackMetrics
388
+ });
389
+ }
390
+ if (config.monitoring.logInterval && config.monitoring.logInterval < 1) {
391
+ errors.push({
392
+ field: 'monitoring.logInterval',
393
+ message: 'Log interval must be at least 1',
394
+ value: config.monitoring.logInterval,
395
+ expected: 'logInterval >= 1'
396
+ });
397
+ }
398
+ if (config.monitoring.saveCheckpoints && !config.monitoring.checkpointInterval) {
399
+ warnings.push({
400
+ field: 'monitoring.checkpointInterval',
401
+ message: 'Checkpoint interval not set, will checkpoint every episode',
402
+ value: config.monitoring.checkpointInterval
403
+ });
404
+ }
405
+ }
406
+ // ============ Extensions Configuration ============
407
+ if (config.extensions) {
408
+ config.extensions.forEach((ext, index) => {
409
+ if (!ext.name) {
410
+ errors.push({
411
+ field: `extensions[${index}].name`,
412
+ message: 'Extension name is required',
413
+ value: ext.name
414
+ });
415
+ }
416
+ if (ext.enabled === undefined) {
417
+ warnings.push({
418
+ field: `extensions[${index}].enabled`,
419
+ message: 'Extension enabled flag not set, defaulting to false',
420
+ value: ext.enabled
421
+ });
422
+ }
423
+ });
424
+ }
425
+ return {
426
+ valid: errors.length === 0,
427
+ errors,
428
+ warnings
429
+ };
430
+ }
431
+ /**
432
+ * Validate required configuration fields only
433
+ *
434
+ * @param config - Partial plugin configuration
435
+ * @returns Whether required fields are present
436
+ */
437
+ function validateRequired(config) {
438
+ return !!(config.name &&
439
+ config.version &&
440
+ config.description &&
441
+ config.baseAlgorithm &&
442
+ config.algorithm &&
443
+ config.storage &&
444
+ config.training);
445
+ }
446
+ /**
447
+ * Get validation error summary
448
+ *
449
+ * @param result - Validation result
450
+ * @returns Human-readable error summary
451
+ */
452
+ function getErrorSummary(result) {
453
+ if (result.valid) {
454
+ return 'Configuration is valid';
455
+ }
456
+ const errorList = result.errors.map(err => ` - ${err.field}: ${err.message}${err.expected ? ` (expected: ${err.expected})` : ''}`).join('\n');
457
+ let summary = `Found ${result.errors.length} validation error(s):\n${errorList}`;
458
+ if (result.warnings && result.warnings.length > 0) {
459
+ const warningList = result.warnings.map(warn => ` - ${warn.field}: ${warn.message}`).join('\n');
460
+ summary += `\n\nWarnings (${result.warnings.length}):\n${warningList}`;
461
+ }
462
+ return summary;
463
+ }
464
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/plugins/validator.ts"],"names":[],"mappings":"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"}