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,470 @@
1
+ /**
2
+ * Wizard prompt definitions
3
+ */
4
+ import inquirer from 'inquirer';
5
+ export async function promptMetadata(options) {
6
+ const answers = await inquirer.prompt([
7
+ {
8
+ type: 'input',
9
+ name: 'name',
10
+ message: 'Plugin name:',
11
+ default: options.name,
12
+ validate: (input) => {
13
+ if (!/^[a-z0-9-]+$/.test(input)) {
14
+ return 'Use lowercase letters, numbers, and hyphens only';
15
+ }
16
+ if (input.length < 3 || input.length > 50) {
17
+ return 'Name must be between 3 and 50 characters';
18
+ }
19
+ return true;
20
+ },
21
+ },
22
+ {
23
+ type: 'input',
24
+ name: 'description',
25
+ message: 'Description:',
26
+ validate: (input) => {
27
+ if (input.length < 10) {
28
+ return 'Description must be at least 10 characters';
29
+ }
30
+ return true;
31
+ },
32
+ },
33
+ {
34
+ type: 'input',
35
+ name: 'author',
36
+ message: 'Author (optional):',
37
+ },
38
+ {
39
+ type: 'input',
40
+ name: 'version',
41
+ message: 'Version:',
42
+ default: '1.0.0',
43
+ validate: (input) => {
44
+ if (!/^\d+\.\d+\.\d+$/.test(input)) {
45
+ return 'Version must follow semantic versioning (e.g., 1.0.0)';
46
+ }
47
+ return true;
48
+ },
49
+ },
50
+ ]);
51
+ return answers;
52
+ }
53
+ export async function promptAlgorithm(template) {
54
+ const { base } = await inquirer.prompt([
55
+ {
56
+ type: 'list',
57
+ name: 'base',
58
+ message: 'Base algorithm:',
59
+ default: template || 'decision_transformer',
60
+ choices: [
61
+ {
62
+ name: 'Decision Transformer (recommended for sequential tasks)',
63
+ value: 'decision_transformer',
64
+ },
65
+ {
66
+ name: 'Q-Learning (model-free, value-based)',
67
+ value: 'q_learning',
68
+ },
69
+ {
70
+ name: 'SARSA (on-policy Q-learning variant)',
71
+ value: 'sarsa',
72
+ },
73
+ {
74
+ name: 'Actor-Critic (policy gradient + value function)',
75
+ value: 'actor_critic',
76
+ },
77
+ {
78
+ name: 'Custom (start from scratch)',
79
+ value: 'custom',
80
+ },
81
+ ],
82
+ },
83
+ ]);
84
+ let config = { base, type: base };
85
+ switch (base) {
86
+ case 'decision_transformer':
87
+ config = { ...config, ...(await configureDecisionTransformer()) };
88
+ break;
89
+ case 'q_learning':
90
+ config = { ...config, ...(await configureQLearning()) };
91
+ break;
92
+ case 'sarsa':
93
+ config = { ...config, ...(await configureSARSA()) };
94
+ break;
95
+ case 'actor_critic':
96
+ config = { ...config, ...(await configureActorCritic()) };
97
+ break;
98
+ case 'custom':
99
+ config = { ...config, ...(await configureCustom()) };
100
+ break;
101
+ }
102
+ return config;
103
+ }
104
+ async function configureDecisionTransformer() {
105
+ return await inquirer.prompt([
106
+ {
107
+ type: 'number',
108
+ name: 'state_dim',
109
+ message: 'State embedding dimension:',
110
+ default: 768,
111
+ },
112
+ {
113
+ type: 'number',
114
+ name: 'action_dim',
115
+ message: 'Action embedding dimension:',
116
+ default: 768,
117
+ },
118
+ {
119
+ type: 'number',
120
+ name: 'hidden_size',
121
+ message: 'Hidden layer size:',
122
+ default: 256,
123
+ },
124
+ {
125
+ type: 'number',
126
+ name: 'learning_rate',
127
+ message: 'Learning rate:',
128
+ default: 0.001,
129
+ },
130
+ {
131
+ type: 'list',
132
+ name: 'action_selection',
133
+ message: 'Action selection strategy:',
134
+ choices: [
135
+ { name: '3-tier (exact → interpolation → neural)', value: '3_tier' },
136
+ { name: 'epsilon-greedy', value: 'epsilon_greedy' },
137
+ { name: 'softmax', value: 'softmax' },
138
+ { name: 'UCB (Upper Confidence Bound)', value: 'ucb' },
139
+ ],
140
+ default: '3_tier',
141
+ },
142
+ ]);
143
+ }
144
+ async function configureQLearning() {
145
+ return await inquirer.prompt([
146
+ {
147
+ type: 'number',
148
+ name: 'learning_rate',
149
+ message: 'Learning rate:',
150
+ default: 0.001,
151
+ },
152
+ {
153
+ type: 'number',
154
+ name: 'discount_factor',
155
+ message: 'Discount factor (gamma):',
156
+ default: 0.99,
157
+ },
158
+ {
159
+ type: 'number',
160
+ name: 'epsilon_start',
161
+ message: 'Initial epsilon (exploration rate):',
162
+ default: 1.0,
163
+ },
164
+ {
165
+ type: 'number',
166
+ name: 'epsilon_end',
167
+ message: 'Final epsilon:',
168
+ default: 0.01,
169
+ },
170
+ {
171
+ type: 'number',
172
+ name: 'epsilon_decay',
173
+ message: 'Epsilon decay rate:',
174
+ default: 0.995,
175
+ },
176
+ {
177
+ type: 'list',
178
+ name: 'experience_replay_type',
179
+ message: 'Experience replay type:',
180
+ choices: [
181
+ { name: 'Uniform (standard replay)', value: 'uniform' },
182
+ { name: 'Prioritized (by TD error)', value: 'prioritized' },
183
+ { name: 'None (online learning)', value: 'none' },
184
+ ],
185
+ default: 'uniform',
186
+ },
187
+ ]);
188
+ }
189
+ async function configureSARSA() {
190
+ return await inquirer.prompt([
191
+ {
192
+ type: 'number',
193
+ name: 'learning_rate',
194
+ message: 'Learning rate:',
195
+ default: 0.001,
196
+ },
197
+ {
198
+ type: 'number',
199
+ name: 'discount_factor',
200
+ message: 'Discount factor (gamma):',
201
+ default: 0.99,
202
+ },
203
+ {
204
+ type: 'number',
205
+ name: 'epsilon',
206
+ message: 'Epsilon (exploration rate):',
207
+ default: 0.1,
208
+ },
209
+ {
210
+ type: 'number',
211
+ name: 'lambda',
212
+ message: 'Lambda (eligibility trace decay):',
213
+ default: 0.9,
214
+ },
215
+ ]);
216
+ }
217
+ async function configureActorCritic() {
218
+ return await inquirer.prompt([
219
+ {
220
+ type: 'number',
221
+ name: 'actor_lr',
222
+ message: 'Actor learning rate:',
223
+ default: 0.0001,
224
+ },
225
+ {
226
+ type: 'number',
227
+ name: 'critic_lr',
228
+ message: 'Critic learning rate:',
229
+ default: 0.001,
230
+ },
231
+ {
232
+ type: 'number',
233
+ name: 'discount_factor',
234
+ message: 'Discount factor (gamma):',
235
+ default: 0.99,
236
+ },
237
+ {
238
+ type: 'number',
239
+ name: 'gae_lambda',
240
+ message: 'GAE lambda (generalized advantage estimation):',
241
+ default: 0.95,
242
+ },
243
+ ]);
244
+ }
245
+ async function configureCustom() {
246
+ return await inquirer.prompt([
247
+ {
248
+ type: 'input',
249
+ name: 'custom_config',
250
+ message: 'Enter custom configuration (JSON):',
251
+ default: '{}',
252
+ validate: (input) => {
253
+ try {
254
+ const parsed = JSON.parse(input);
255
+ // SECURITY FIX: Prevent prototype pollution
256
+ const dangerousKeys = ['__proto__', 'constructor', 'prototype'];
257
+ const hasDangerousKey = (obj) => {
258
+ if (typeof obj !== 'object' || obj === null)
259
+ return false;
260
+ for (const key of Object.keys(obj)) {
261
+ if (dangerousKeys.includes(key))
262
+ return true;
263
+ if (hasDangerousKey(obj[key]))
264
+ return true;
265
+ }
266
+ return false;
267
+ };
268
+ if (hasDangerousKey(parsed)) {
269
+ return 'Invalid configuration keys detected (security risk)';
270
+ }
271
+ // SECURITY FIX: Limit payload size to prevent DoS
272
+ const jsonStr = JSON.stringify(parsed);
273
+ if (jsonStr.length > 10000) {
274
+ return 'Configuration too large (max 10KB)';
275
+ }
276
+ // Validate against safe schema
277
+ const validKeys = [
278
+ 'learning_rate', 'discount_factor', 'epsilon_start', 'epsilon_end',
279
+ 'epsilon_decay', 'batch_size', 'hidden_size', 'state_dim', 'action_dim',
280
+ 'actor_lr', 'critic_lr', 'gae_lambda', 'lambda'
281
+ ];
282
+ for (const key of Object.keys(parsed)) {
283
+ if (!validKeys.includes(key)) {
284
+ return `Unknown configuration key: ${key}`;
285
+ }
286
+ }
287
+ // Validate value types and ranges
288
+ for (const [key, value] of Object.entries(parsed)) {
289
+ if (typeof value !== 'number') {
290
+ return `Value for ${key} must be a number`;
291
+ }
292
+ if (!Number.isFinite(value)) {
293
+ return `Value for ${key} must be finite`;
294
+ }
295
+ if (value < 0) {
296
+ return `Value for ${key} must be non-negative`;
297
+ }
298
+ }
299
+ return true;
300
+ }
301
+ catch {
302
+ return 'Invalid JSON';
303
+ }
304
+ },
305
+ },
306
+ ]);
307
+ }
308
+ export async function promptReward() {
309
+ const { type } = await inquirer.prompt([
310
+ {
311
+ type: 'list',
312
+ name: 'type',
313
+ message: 'Reward function:',
314
+ choices: [
315
+ { name: 'Success-based (1 for success, -1 for failure)', value: 'success_based' },
316
+ { name: 'Time-aware (penalize long execution)', value: 'time_aware' },
317
+ { name: 'Token-aware (penalize high token usage)', value: 'token_aware' },
318
+ // SECURITY FIX: Removed 'custom' option to prevent arbitrary code execution
319
+ // Custom reward functions using new Function() pose a critical security risk
320
+ ],
321
+ },
322
+ ]);
323
+ let config = { type };
324
+ // SECURITY: Custom function support removed
325
+ // If custom reward logic is needed in the future, implement via:
326
+ // 1. Safe expression language (mathjs)
327
+ // 2. Sandboxed VM (vm2/isolated-vm)
328
+ // 3. AST-based code generation
329
+ // Never use new Function() or eval() with user input
330
+ return config;
331
+ }
332
+ export async function promptStorage(pluginName) {
333
+ const answers = await inquirer.prompt([
334
+ {
335
+ type: 'input',
336
+ name: 'path',
337
+ message: 'Database path:',
338
+ default: `./.rl/${pluginName}.db`,
339
+ },
340
+ {
341
+ type: 'confirm',
342
+ name: 'hnsw_enabled',
343
+ message: 'Enable HNSW index for fast similarity search?',
344
+ default: true,
345
+ },
346
+ ]);
347
+ const config = {
348
+ backend: 'agentdb',
349
+ path: answers.path,
350
+ };
351
+ if (answers.hnsw_enabled) {
352
+ const hnsw = await inquirer.prompt([
353
+ {
354
+ type: 'number',
355
+ name: 'M',
356
+ message: 'HNSW M parameter (connections per node):',
357
+ default: 16,
358
+ },
359
+ {
360
+ type: 'number',
361
+ name: 'efConstruction',
362
+ message: 'HNSW efConstruction (build quality):',
363
+ default: 200,
364
+ },
365
+ ]);
366
+ config.hnsw = {
367
+ enabled: true,
368
+ ...hnsw,
369
+ };
370
+ }
371
+ const { quantization } = await inquirer.prompt([
372
+ {
373
+ type: 'confirm',
374
+ name: 'quantization',
375
+ message: 'Enable vector quantization (reduces storage)?',
376
+ default: false,
377
+ },
378
+ ]);
379
+ if (quantization) {
380
+ config.quantization = {
381
+ enabled: true,
382
+ bits: 8,
383
+ };
384
+ }
385
+ return config;
386
+ }
387
+ export async function promptTraining(algorithmType) {
388
+ const isOnline = algorithmType === 'sarsa';
389
+ const answers = await inquirer.prompt([
390
+ {
391
+ type: 'number',
392
+ name: 'batch_size',
393
+ message: 'Batch size:',
394
+ default: 32,
395
+ when: !isOnline,
396
+ },
397
+ {
398
+ type: 'number',
399
+ name: 'epochs',
400
+ message: 'Training epochs:',
401
+ default: 10,
402
+ when: !isOnline,
403
+ },
404
+ {
405
+ type: 'number',
406
+ name: 'min_experiences',
407
+ message: 'Minimum experiences before training:',
408
+ default: 100,
409
+ },
410
+ {
411
+ type: 'number',
412
+ name: 'train_every',
413
+ message: 'Train every N experiences:',
414
+ default: 100,
415
+ when: !isOnline,
416
+ },
417
+ {
418
+ type: 'number',
419
+ name: 'validation_split',
420
+ message: 'Validation split (0-1):',
421
+ default: 0.2,
422
+ when: !isOnline,
423
+ },
424
+ ]);
425
+ return {
426
+ ...answers,
427
+ online: isOnline,
428
+ };
429
+ }
430
+ export async function promptMonitoring() {
431
+ const { enable } = await inquirer.prompt([
432
+ {
433
+ type: 'confirm',
434
+ name: 'enable',
435
+ message: 'Enable monitoring and metrics tracking?',
436
+ default: true,
437
+ },
438
+ ]);
439
+ if (!enable) {
440
+ return undefined;
441
+ }
442
+ const answers = await inquirer.prompt([
443
+ {
444
+ type: 'checkbox',
445
+ name: 'track_metrics',
446
+ message: 'Select metrics to track:',
447
+ choices: [
448
+ { name: 'Success rate', value: 'success_rate', checked: true },
449
+ { name: 'Average reward', value: 'avg_reward', checked: true },
450
+ { name: 'Epsilon (exploration)', value: 'epsilon', checked: true },
451
+ { name: 'Loss', value: 'loss', checked: true },
452
+ { name: 'Q-values', value: 'q_values', checked: false },
453
+ { name: 'Episode length', value: 'episode_length', checked: false },
454
+ ],
455
+ },
456
+ {
457
+ type: 'number',
458
+ name: 'log_interval',
459
+ message: 'Log metrics every N episodes:',
460
+ default: 10,
461
+ },
462
+ {
463
+ type: 'confirm',
464
+ name: 'save_checkpoints',
465
+ message: 'Save checkpoints during training?',
466
+ default: true,
467
+ },
468
+ ]);
469
+ return answers;
470
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Configuration validation
3
+ */
4
+ import type { PluginConfig } from '../types.js';
5
+ export interface ValidationResult {
6
+ valid: boolean;
7
+ errors: string[];
8
+ }
9
+ export declare function validateConfig(config: PluginConfig): ValidationResult;
10
+ export declare function validatePluginName(name: string): boolean;
11
+ export declare function validateVersion(version: string): boolean;
12
+ export declare function validateRewardFunction(func: string): boolean;
13
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/cli/wizard/validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqJhD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CA2BrE;AA8CD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO5D"}