agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.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 (314) hide show
  1. package/dist/agentdb.min.js +4 -4
  2. package/dist/simulation/cli.js +0 -0
  3. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  4. package/dist/src/cli/agentdb-cli.js +78 -0
  5. package/dist/src/cli/agentdb-cli.js.map +1 -1
  6. package/package.json +3 -3
  7. package/src/cli/agentdb-cli.ts +78 -0
  8. package/dist/agentdb-advanced.js +0 -2110
  9. package/dist/agentdb-advanced.min.js +0 -1
  10. package/dist/backends/GraphBackend.d.ts +0 -196
  11. package/dist/backends/GraphBackend.d.ts.map +0 -1
  12. package/dist/backends/GraphBackend.js +0 -33
  13. package/dist/backends/GraphBackend.js.map +0 -1
  14. package/dist/backends/LearningBackend.d.ts +0 -148
  15. package/dist/backends/LearningBackend.d.ts.map +0 -1
  16. package/dist/backends/LearningBackend.js +0 -27
  17. package/dist/backends/LearningBackend.js.map +0 -1
  18. package/dist/backends/VectorBackend.d.ts +0 -119
  19. package/dist/backends/VectorBackend.d.ts.map +0 -1
  20. package/dist/backends/VectorBackend.js +0 -14
  21. package/dist/backends/VectorBackend.js.map +0 -1
  22. package/dist/backends/detector.d.ts +0 -81
  23. package/dist/backends/detector.d.ts.map +0 -1
  24. package/dist/backends/detector.js +0 -192
  25. package/dist/backends/detector.js.map +0 -1
  26. package/dist/backends/factory.d.ts +0 -50
  27. package/dist/backends/factory.d.ts.map +0 -1
  28. package/dist/backends/factory.js +0 -161
  29. package/dist/backends/factory.js.map +0 -1
  30. package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
  31. package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
  32. package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
  33. package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
  34. package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
  35. package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
  36. package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
  37. package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
  38. package/dist/backends/hnswlib/index.d.ts +0 -7
  39. package/dist/backends/hnswlib/index.d.ts.map +0 -1
  40. package/dist/backends/hnswlib/index.js +0 -7
  41. package/dist/backends/hnswlib/index.js.map +0 -1
  42. package/dist/backends/index.d.ts +0 -14
  43. package/dist/backends/index.d.ts.map +0 -1
  44. package/dist/backends/index.js +0 -13
  45. package/dist/backends/index.js.map +0 -1
  46. package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
  47. package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
  48. package/dist/backends/ruvector/RuVectorBackend.js +0 -198
  49. package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
  50. package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
  51. package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
  52. package/dist/backends/ruvector/RuVectorLearning.js +0 -177
  53. package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
  54. package/dist/backends/ruvector/index.d.ts +0 -9
  55. package/dist/backends/ruvector/index.d.ts.map +0 -1
  56. package/dist/backends/ruvector/index.js +0 -8
  57. package/dist/backends/ruvector/index.js.map +0 -1
  58. package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
  59. package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
  60. package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
  61. package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
  62. package/dist/browser/AdvancedFeatures.d.ts +0 -144
  63. package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
  64. package/dist/browser/AdvancedFeatures.js +0 -430
  65. package/dist/browser/AdvancedFeatures.js.map +0 -1
  66. package/dist/browser/HNSWIndex.d.ts +0 -117
  67. package/dist/browser/HNSWIndex.d.ts.map +0 -1
  68. package/dist/browser/HNSWIndex.js +0 -402
  69. package/dist/browser/HNSWIndex.js.map +0 -1
  70. package/dist/browser/ProductQuantization.d.ts +0 -107
  71. package/dist/browser/ProductQuantization.d.ts.map +0 -1
  72. package/dist/browser/ProductQuantization.js +0 -337
  73. package/dist/browser/ProductQuantization.js.map +0 -1
  74. package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
  75. package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
  76. package/dist/browser/browser/AdvancedFeatures.js +0 -427
  77. package/dist/browser/browser/HNSWIndex.d.ts +0 -117
  78. package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
  79. package/dist/browser/browser/HNSWIndex.js +0 -402
  80. package/dist/browser/browser/ProductQuantization.d.ts +0 -107
  81. package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
  82. package/dist/browser/browser/ProductQuantization.js +0 -348
  83. package/dist/browser/browser/index.d.ts +0 -223
  84. package/dist/browser/browser/index.d.ts.map +0 -1
  85. package/dist/browser/browser/index.js +0 -233
  86. package/dist/browser/index.d.ts +0 -223
  87. package/dist/browser/index.d.ts.map +0 -1
  88. package/dist/browser/index.js +0 -225
  89. package/dist/browser/index.js.map +0 -1
  90. package/dist/cli/agentdb-cli.d.ts +0 -154
  91. package/dist/cli/agentdb-cli.d.ts.map +0 -1
  92. package/dist/cli/agentdb-cli.js +0 -2273
  93. package/dist/cli/agentdb-cli.js.map +0 -1
  94. package/dist/cli/agentdb.db +0 -0
  95. package/dist/cli/commands/init.d.ts +0 -12
  96. package/dist/cli/commands/init.d.ts.map +0 -1
  97. package/dist/cli/commands/init.js +0 -115
  98. package/dist/cli/commands/init.js.map +0 -1
  99. package/dist/cli/commands/install-embeddings.d.ts +0 -10
  100. package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
  101. package/dist/cli/commands/install-embeddings.js +0 -68
  102. package/dist/cli/commands/install-embeddings.js.map +0 -1
  103. package/dist/cli/commands/migrate.d.ts +0 -15
  104. package/dist/cli/commands/migrate.d.ts.map +0 -1
  105. package/dist/cli/commands/migrate.js +0 -425
  106. package/dist/cli/commands/migrate.js.map +0 -1
  107. package/dist/cli/commands/status.d.ts +0 -10
  108. package/dist/cli/commands/status.d.ts.map +0 -1
  109. package/dist/cli/commands/status.js +0 -129
  110. package/dist/cli/commands/status.js.map +0 -1
  111. package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
  112. package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
  113. package/dist/controllers/CausalMemoryGraph.js +0 -323
  114. package/dist/controllers/CausalMemoryGraph.js.map +0 -1
  115. package/dist/controllers/CausalRecall.d.ts +0 -139
  116. package/dist/controllers/CausalRecall.d.ts.map +0 -1
  117. package/dist/controllers/CausalRecall.js +0 -356
  118. package/dist/controllers/CausalRecall.js.map +0 -1
  119. package/dist/controllers/ContextSynthesizer.d.ts +0 -65
  120. package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
  121. package/dist/controllers/ContextSynthesizer.js +0 -208
  122. package/dist/controllers/ContextSynthesizer.js.map +0 -1
  123. package/dist/controllers/EmbeddingService.d.ts +0 -37
  124. package/dist/controllers/EmbeddingService.d.ts.map +0 -1
  125. package/dist/controllers/EmbeddingService.js +0 -136
  126. package/dist/controllers/EmbeddingService.js.map +0 -1
  127. package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
  128. package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
  129. package/dist/controllers/EnhancedEmbeddingService.js +0 -119
  130. package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
  131. package/dist/controllers/ExplainableRecall.d.ts +0 -163
  132. package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
  133. package/dist/controllers/ExplainableRecall.js +0 -485
  134. package/dist/controllers/ExplainableRecall.js.map +0 -1
  135. package/dist/controllers/HNSWIndex.d.ts +0 -128
  136. package/dist/controllers/HNSWIndex.d.ts.map +0 -1
  137. package/dist/controllers/HNSWIndex.js +0 -361
  138. package/dist/controllers/HNSWIndex.js.map +0 -1
  139. package/dist/controllers/LearningSystem.d.ts +0 -195
  140. package/dist/controllers/LearningSystem.d.ts.map +0 -1
  141. package/dist/controllers/LearningSystem.js +0 -929
  142. package/dist/controllers/LearningSystem.js.map +0 -1
  143. package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
  144. package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
  145. package/dist/controllers/MMRDiversityRanker.js +0 -130
  146. package/dist/controllers/MMRDiversityRanker.js.map +0 -1
  147. package/dist/controllers/MetadataFilter.d.ts +0 -70
  148. package/dist/controllers/MetadataFilter.d.ts.map +0 -1
  149. package/dist/controllers/MetadataFilter.js +0 -243
  150. package/dist/controllers/MetadataFilter.js.map +0 -1
  151. package/dist/controllers/NightlyLearner.d.ts +0 -114
  152. package/dist/controllers/NightlyLearner.d.ts.map +0 -1
  153. package/dist/controllers/NightlyLearner.js +0 -394
  154. package/dist/controllers/NightlyLearner.js.map +0 -1
  155. package/dist/controllers/QUICClient.d.ts +0 -109
  156. package/dist/controllers/QUICClient.d.ts.map +0 -1
  157. package/dist/controllers/QUICClient.js +0 -299
  158. package/dist/controllers/QUICClient.js.map +0 -1
  159. package/dist/controllers/QUICServer.d.ts +0 -121
  160. package/dist/controllers/QUICServer.d.ts.map +0 -1
  161. package/dist/controllers/QUICServer.js +0 -383
  162. package/dist/controllers/QUICServer.js.map +0 -1
  163. package/dist/controllers/ReasoningBank.d.ts +0 -196
  164. package/dist/controllers/ReasoningBank.d.ts.map +0 -1
  165. package/dist/controllers/ReasoningBank.js +0 -494
  166. package/dist/controllers/ReasoningBank.js.map +0 -1
  167. package/dist/controllers/ReflexionMemory.d.ts +0 -125
  168. package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
  169. package/dist/controllers/ReflexionMemory.js +0 -521
  170. package/dist/controllers/ReflexionMemory.js.map +0 -1
  171. package/dist/controllers/SkillLibrary.d.ts +0 -149
  172. package/dist/controllers/SkillLibrary.d.ts.map +0 -1
  173. package/dist/controllers/SkillLibrary.js +0 -547
  174. package/dist/controllers/SkillLibrary.js.map +0 -1
  175. package/dist/controllers/SyncCoordinator.d.ts +0 -120
  176. package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
  177. package/dist/controllers/SyncCoordinator.js +0 -441
  178. package/dist/controllers/SyncCoordinator.js.map +0 -1
  179. package/dist/controllers/WASMVectorSearch.d.ts +0 -89
  180. package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
  181. package/dist/controllers/WASMVectorSearch.js +0 -234
  182. package/dist/controllers/WASMVectorSearch.js.map +0 -1
  183. package/dist/controllers/frontier-index.d.ts +0 -14
  184. package/dist/controllers/frontier-index.d.ts.map +0 -1
  185. package/dist/controllers/frontier-index.js +0 -10
  186. package/dist/controllers/frontier-index.js.map +0 -1
  187. package/dist/controllers/index.d.ts +0 -30
  188. package/dist/controllers/index.d.ts.map +0 -1
  189. package/dist/controllers/index.js +0 -18
  190. package/dist/controllers/index.js.map +0 -1
  191. package/dist/db-fallback.d.ts +0 -26
  192. package/dist/db-fallback.d.ts.map +0 -1
  193. package/dist/db-fallback.js +0 -264
  194. package/dist/db-fallback.js.map +0 -1
  195. package/dist/db-test.d.ts +0 -13
  196. package/dist/db-test.d.ts.map +0 -1
  197. package/dist/db-test.js +0 -55
  198. package/dist/db-test.js.map +0 -1
  199. package/dist/db-unified.d.ts +0 -76
  200. package/dist/db-unified.d.ts.map +0 -1
  201. package/dist/db-unified.js +0 -278
  202. package/dist/db-unified.js.map +0 -1
  203. package/dist/examples/quic-sync-example.d.ts +0 -9
  204. package/dist/examples/quic-sync-example.d.ts.map +0 -1
  205. package/dist/examples/quic-sync-example.js +0 -169
  206. package/dist/examples/quic-sync-example.js.map +0 -1
  207. package/dist/examples/wasm-vector-usage.d.ts +0 -12
  208. package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
  209. package/dist/examples/wasm-vector-usage.js +0 -190
  210. package/dist/examples/wasm-vector-usage.js.map +0 -1
  211. package/dist/index.d.ts +0 -28
  212. package/dist/index.d.ts.map +0 -1
  213. package/dist/index.js +0 -35
  214. package/dist/index.js.map +0 -1
  215. package/dist/malp/core/ccc.d.ts +0 -99
  216. package/dist/malp/core/ccc.d.ts.map +0 -1
  217. package/dist/malp/core/ccc.js +0 -181
  218. package/dist/malp/core/ccc.js.map +0 -1
  219. package/dist/malp/core/index.d.ts +0 -9
  220. package/dist/malp/core/index.d.ts.map +0 -1
  221. package/dist/malp/core/index.js +0 -9
  222. package/dist/malp/core/index.js.map +0 -1
  223. package/dist/malp/core/linalg.d.ts +0 -101
  224. package/dist/malp/core/linalg.d.ts.map +0 -1
  225. package/dist/malp/core/linalg.js +0 -278
  226. package/dist/malp/core/linalg.js.map +0 -1
  227. package/dist/malp/core/optimizer.d.ts +0 -68
  228. package/dist/malp/core/optimizer.d.ts.map +0 -1
  229. package/dist/malp/core/optimizer.js +0 -160
  230. package/dist/malp/core/optimizer.js.map +0 -1
  231. package/dist/malp/index.d.ts +0 -33
  232. package/dist/malp/index.d.ts.map +0 -1
  233. package/dist/malp/index.js +0 -37
  234. package/dist/malp/index.js.map +0 -1
  235. package/dist/malp/metrics/agreement.d.ts +0 -106
  236. package/dist/malp/metrics/agreement.d.ts.map +0 -1
  237. package/dist/malp/metrics/agreement.js +0 -199
  238. package/dist/malp/metrics/agreement.js.map +0 -1
  239. package/dist/malp/metrics/comparison.d.ts +0 -93
  240. package/dist/malp/metrics/comparison.d.ts.map +0 -1
  241. package/dist/malp/metrics/comparison.js +0 -256
  242. package/dist/malp/metrics/comparison.js.map +0 -1
  243. package/dist/malp/metrics/index.d.ts +0 -8
  244. package/dist/malp/metrics/index.d.ts.map +0 -1
  245. package/dist/malp/metrics/index.js +0 -8
  246. package/dist/malp/metrics/index.js.map +0 -1
  247. package/dist/malp/metrics/performance.d.ts +0 -61
  248. package/dist/malp/metrics/performance.d.ts.map +0 -1
  249. package/dist/malp/metrics/performance.js +0 -190
  250. package/dist/malp/metrics/performance.js.map +0 -1
  251. package/dist/malp/models/index.d.ts +0 -7
  252. package/dist/malp/models/index.d.ts.map +0 -1
  253. package/dist/malp/models/index.js +0 -7
  254. package/dist/malp/models/index.js.map +0 -1
  255. package/dist/malp/models/malp.d.ts +0 -116
  256. package/dist/malp/models/malp.d.ts.map +0 -1
  257. package/dist/malp/models/malp.js +0 -206
  258. package/dist/malp/models/malp.js.map +0 -1
  259. package/dist/malp/models/regressor.d.ts +0 -80
  260. package/dist/malp/models/regressor.d.ts.map +0 -1
  261. package/dist/malp/models/regressor.js +0 -229
  262. package/dist/malp/models/regressor.js.map +0 -1
  263. package/dist/malp/reasoningbank_validator.d.ts +0 -187
  264. package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
  265. package/dist/malp/reasoningbank_validator.js +0 -246
  266. package/dist/malp/reasoningbank_validator.js.map +0 -1
  267. package/dist/malp/wasm_bindings.d.ts +0 -344
  268. package/dist/malp/wasm_bindings.d.ts.map +0 -1
  269. package/dist/malp/wasm_bindings.js +0 -9
  270. package/dist/malp/wasm_bindings.js.map +0 -1
  271. package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
  272. package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
  273. package/dist/mcp/agentdb-mcp-server.js +0 -2116
  274. package/dist/mcp/agentdb-mcp-server.js.map +0 -1
  275. package/dist/mcp/learning-tools-handlers.d.ts +0 -16
  276. package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
  277. package/dist/mcp/learning-tools-handlers.js +0 -105
  278. package/dist/mcp/learning-tools-handlers.js.map +0 -1
  279. package/dist/optimizations/BatchOperations.d.ts +0 -109
  280. package/dist/optimizations/BatchOperations.d.ts.map +0 -1
  281. package/dist/optimizations/BatchOperations.js +0 -407
  282. package/dist/optimizations/BatchOperations.js.map +0 -1
  283. package/dist/optimizations/QueryOptimizer.d.ts +0 -83
  284. package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
  285. package/dist/optimizations/QueryOptimizer.js +0 -228
  286. package/dist/optimizations/QueryOptimizer.js.map +0 -1
  287. package/dist/optimizations/ToolCache.d.ts +0 -137
  288. package/dist/optimizations/ToolCache.d.ts.map +0 -1
  289. package/dist/optimizations/ToolCache.js +0 -281
  290. package/dist/optimizations/ToolCache.js.map +0 -1
  291. package/dist/optimizations/index.d.ts +0 -10
  292. package/dist/optimizations/index.d.ts.map +0 -1
  293. package/dist/optimizations/index.js +0 -8
  294. package/dist/optimizations/index.js.map +0 -1
  295. package/dist/security/input-validation.d.ts +0 -109
  296. package/dist/security/input-validation.d.ts.map +0 -1
  297. package/dist/security/input-validation.js +0 -398
  298. package/dist/security/input-validation.js.map +0 -1
  299. package/dist/security/limits.d.ts +0 -150
  300. package/dist/security/limits.d.ts.map +0 -1
  301. package/dist/security/limits.js +0 -288
  302. package/dist/security/limits.js.map +0 -1
  303. package/dist/security/path-security.d.ts +0 -100
  304. package/dist/security/path-security.d.ts.map +0 -1
  305. package/dist/security/path-security.js +0 -337
  306. package/dist/security/path-security.js.map +0 -1
  307. package/dist/security/validation.d.ts +0 -95
  308. package/dist/security/validation.d.ts.map +0 -1
  309. package/dist/security/validation.js +0 -315
  310. package/dist/security/validation.js.map +0 -1
  311. package/dist/types/quic.d.ts +0 -518
  312. package/dist/types/quic.d.ts.map +0 -1
  313. package/dist/types/quic.js +0 -272
  314. package/dist/types/quic.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/optimizations/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * AgentDB Optimizations
3
- *
4
- * Performance optimization utilities
5
- */
6
- export { QueryOptimizer } from './QueryOptimizer';
7
- export { BatchOperations } from './BatchOperations';
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/optimizations/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,109 +0,0 @@
1
- /**
2
- * Input Validation and Sanitization for AgentDB Security
3
- *
4
- * Provides comprehensive validation to prevent SQL injection and other attacks:
5
- * - Whitelist-based validation for identifiers (tables, columns, PRAGMA commands)
6
- * - Input sanitization for user data
7
- * - Type validation and constraints
8
- * - Error handling that doesn't leak sensitive information
9
- */
10
- /**
11
- * Validation error with safe error messages
12
- */
13
- export declare class ValidationError extends Error {
14
- readonly code: string;
15
- readonly field?: string;
16
- constructor(message: string, code?: string, field?: string);
17
- /**
18
- * Get safe error message (doesn't leak sensitive info)
19
- */
20
- getSafeMessage(): string;
21
- }
22
- /**
23
- * Validate task string (NEW - for MCP tool optimization)
24
- */
25
- export declare function validateTaskString(task: unknown, fieldName?: string): string;
26
- /**
27
- * Validate numeric range (NEW - for MCP tool optimization)
28
- */
29
- export declare function validateNumericRange(value: unknown, fieldName: string, min: number, max: number): number;
30
- /**
31
- * Validate array length (NEW - for MCP tool optimization)
32
- */
33
- export declare function validateArrayLength<T>(arr: unknown, fieldName: string, minLength: number, maxLength: number): T[];
34
- /**
35
- * Validate object (NEW - for MCP tool optimization)
36
- */
37
- export declare function validateObject(obj: unknown, fieldName: string, required?: boolean): Record<string, any>;
38
- /**
39
- * Validate boolean (NEW - for MCP tool optimization)
40
- */
41
- export declare function validateBoolean(value: unknown, fieldName: string, defaultValue?: boolean): boolean;
42
- /**
43
- * Validate enum value (NEW - for MCP tool optimization)
44
- */
45
- export declare function validateEnum<T extends string>(value: unknown, fieldName: string, allowedValues: readonly T[]): T;
46
- /**
47
- * Validate table name against whitelist
48
- */
49
- export declare function validateTableName(tableName: string): string;
50
- /**
51
- * Validate column name against whitelist
52
- */
53
- export declare function validateColumnName(tableName: string, columnName: string): string;
54
- /**
55
- * Validate PRAGMA command against whitelist
56
- */
57
- export declare function validatePragmaCommand(pragma: string): string;
58
- /**
59
- * Validate and sanitize session ID
60
- */
61
- export declare function validateSessionId(sessionId: string): string;
62
- /**
63
- * Validate numeric ID
64
- */
65
- export declare function validateId(id: any, fieldName?: string): number;
66
- /**
67
- * Validate timestamp
68
- */
69
- export declare function validateTimestamp(timestamp: any, fieldName?: string): number;
70
- /**
71
- * Validate reward value (0-1)
72
- */
73
- export declare function validateReward(reward: any): number;
74
- /**
75
- * Validate success flag
76
- */
77
- export declare function validateSuccess(success: any): boolean;
78
- /**
79
- * Sanitize text input (prevent extremely long strings, null bytes, etc.)
80
- */
81
- export declare function sanitizeText(text: string, maxLength?: number, fieldName?: string): string;
82
- /**
83
- * Build safe WHERE clause with parameterized values
84
- * Returns both the SQL clause and the parameter values
85
- */
86
- export declare function buildSafeWhereClause(tableName: string, conditions: Record<string, any>): {
87
- clause: string;
88
- values: any[];
89
- };
90
- /**
91
- * Build safe SET clause for UPDATE statements
92
- */
93
- export declare function buildSafeSetClause(tableName: string, updates: Record<string, any>): {
94
- clause: string;
95
- values: any[];
96
- };
97
- /**
98
- * Validate JSON data
99
- */
100
- export declare function validateJSON(data: any, fieldName?: string): string;
101
- /**
102
- * Validate array of tags
103
- */
104
- export declare function validateTags(tags: any): string[];
105
- /**
106
- * Safe error handler that doesn't leak sensitive information
107
- */
108
- export declare function handleSecurityError(error: any): string;
109
- //# sourceMappingURL=input-validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-validation.d.ts","sourceRoot":"","sources":["../../src/security/input-validation.ts"],"names":[],"mappings":"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"}
@@ -1,398 +0,0 @@
1
- /**
2
- * Input Validation and Sanitization for AgentDB Security
3
- *
4
- * Provides comprehensive validation to prevent SQL injection and other attacks:
5
- * - Whitelist-based validation for identifiers (tables, columns, PRAGMA commands)
6
- * - Input sanitization for user data
7
- * - Type validation and constraints
8
- * - Error handling that doesn't leak sensitive information
9
- */
10
- /**
11
- * Allowed table names in AgentDB (whitelist)
12
- */
13
- const ALLOWED_TABLES = new Set([
14
- 'episodes',
15
- 'episode_embeddings',
16
- 'skills',
17
- 'skill_embeddings',
18
- 'causal_edges',
19
- 'causal_experiments',
20
- 'causal_observations',
21
- 'provenance_certificates',
22
- 'reasoning_patterns',
23
- 'pattern_embeddings',
24
- 'rl_sessions',
25
- 'rl_experiences',
26
- 'rl_policies',
27
- 'rl_q_values',
28
- ]);
29
- /**
30
- * Allowed column names by table (whitelist)
31
- */
32
- const ALLOWED_COLUMNS = {
33
- episodes: new Set([
34
- 'id', 'ts', 'session_id', 'task', 'input', 'output', 'critique',
35
- 'reward', 'success', 'latency_ms', 'tokens_used', 'tags', 'metadata'
36
- ]),
37
- skills: new Set([
38
- 'id', 'ts', 'name', 'description', 'signature', 'code',
39
- 'success_rate', 'uses', 'avg_reward', 'avg_latency_ms', 'tags', 'metadata'
40
- ]),
41
- causal_edges: new Set([
42
- 'id', 'ts', 'from_memory_id', 'from_memory_type', 'to_memory_id',
43
- 'to_memory_type', 'similarity', 'uplift', 'confidence', 'sample_size', 'evidence_ids'
44
- ]),
45
- // Add more as needed
46
- };
47
- /**
48
- * Allowed PRAGMA commands (whitelist)
49
- */
50
- const ALLOWED_PRAGMAS = new Set([
51
- 'journal_mode',
52
- 'synchronous',
53
- 'cache_size',
54
- 'page_size',
55
- 'page_count',
56
- 'user_version',
57
- 'foreign_keys',
58
- 'temp_store',
59
- 'mmap_size',
60
- 'wal_autocheckpoint',
61
- ]);
62
- /**
63
- * Validation error with safe error messages
64
- */
65
- export class ValidationError extends Error {
66
- code;
67
- field;
68
- constructor(message, code = 'VALIDATION_ERROR', field) {
69
- super(message);
70
- this.name = 'ValidationError';
71
- this.code = code;
72
- this.field = field;
73
- }
74
- /**
75
- * Get safe error message (doesn't leak sensitive info)
76
- */
77
- getSafeMessage() {
78
- return `Invalid input: ${this.field || 'unknown field'}`;
79
- }
80
- }
81
- /**
82
- * Validate task string (NEW - for MCP tool optimization)
83
- */
84
- export function validateTaskString(task, fieldName = 'task') {
85
- if (task === null || task === undefined) {
86
- throw new ValidationError(`${fieldName} is required`, 'MISSING_REQUIRED_FIELD', fieldName);
87
- }
88
- if (typeof task !== 'string') {
89
- throw new ValidationError(`${fieldName} must be a string`, 'INVALID_TYPE', fieldName);
90
- }
91
- const trimmed = task.trim();
92
- if (trimmed.length === 0) {
93
- throw new ValidationError(`${fieldName} cannot be empty`, 'EMPTY_STRING', fieldName);
94
- }
95
- if (trimmed.length > 10000) {
96
- throw new ValidationError(`${fieldName} exceeds maximum length of 10000 characters`, 'STRING_TOO_LONG', fieldName);
97
- }
98
- // Check for potentially malicious patterns
99
- const suspiciousPatterns = [
100
- /<script/i,
101
- /javascript:/i,
102
- /on\w+\s*=/i, // onclick=, onload=, etc.
103
- /\x00/, // Null bytes
104
- ];
105
- for (const pattern of suspiciousPatterns) {
106
- if (pattern.test(trimmed)) {
107
- throw new ValidationError(`${fieldName} contains potentially malicious content`, 'SUSPICIOUS_CONTENT', fieldName);
108
- }
109
- }
110
- return trimmed;
111
- }
112
- /**
113
- * Validate numeric range (NEW - for MCP tool optimization)
114
- */
115
- export function validateNumericRange(value, fieldName, min, max) {
116
- if (value === null || value === undefined) {
117
- throw new ValidationError(`${fieldName} is required`, 'MISSING_REQUIRED_FIELD', fieldName);
118
- }
119
- if (typeof value !== 'number' || isNaN(value) || !isFinite(value)) {
120
- throw new ValidationError(`${fieldName} must be a valid number`, 'INVALID_NUMBER', fieldName);
121
- }
122
- if (value < min || value > max) {
123
- throw new ValidationError(`${fieldName} must be between ${min} and ${max} (got ${value})`, 'OUT_OF_RANGE', fieldName);
124
- }
125
- return value;
126
- }
127
- /**
128
- * Validate array length (NEW - for MCP tool optimization)
129
- */
130
- export function validateArrayLength(arr, fieldName, minLength, maxLength) {
131
- if (arr === null || arr === undefined) {
132
- throw new ValidationError(`${fieldName} is required`, 'MISSING_REQUIRED_FIELD', fieldName);
133
- }
134
- if (!Array.isArray(arr)) {
135
- throw new ValidationError(`${fieldName} must be an array`, 'INVALID_ARRAY', fieldName);
136
- }
137
- if (arr.length < minLength || arr.length > maxLength) {
138
- throw new ValidationError(`${fieldName} must contain between ${minLength} and ${maxLength} items (got ${arr.length})`, 'ARRAY_LENGTH_INVALID', fieldName);
139
- }
140
- return arr;
141
- }
142
- /**
143
- * Validate object (NEW - for MCP tool optimization)
144
- */
145
- export function validateObject(obj, fieldName, required = true) {
146
- if (obj === null || obj === undefined) {
147
- if (required) {
148
- throw new ValidationError(`${fieldName} is required`, 'MISSING_REQUIRED_FIELD', fieldName);
149
- }
150
- return {};
151
- }
152
- if (typeof obj !== 'object' || Array.isArray(obj)) {
153
- throw new ValidationError(`${fieldName} must be an object`, 'INVALID_OBJECT', fieldName);
154
- }
155
- return obj;
156
- }
157
- /**
158
- * Validate boolean (NEW - for MCP tool optimization)
159
- */
160
- export function validateBoolean(value, fieldName, defaultValue) {
161
- if (value === null || value === undefined) {
162
- if (defaultValue !== undefined) {
163
- return defaultValue;
164
- }
165
- throw new ValidationError(`${fieldName} is required`, 'MISSING_REQUIRED_FIELD', fieldName);
166
- }
167
- if (typeof value !== 'boolean') {
168
- throw new ValidationError(`${fieldName} must be a boolean`, 'INVALID_BOOLEAN', fieldName);
169
- }
170
- return value;
171
- }
172
- /**
173
- * Validate enum value (NEW - for MCP tool optimization)
174
- */
175
- export function validateEnum(value, fieldName, allowedValues) {
176
- if (value === null || value === undefined) {
177
- throw new ValidationError(`${fieldName} is required`, 'MISSING_REQUIRED_FIELD', fieldName);
178
- }
179
- if (typeof value !== 'string') {
180
- throw new ValidationError(`${fieldName} must be a string`, 'INVALID_TYPE', fieldName);
181
- }
182
- if (!allowedValues.includes(value)) {
183
- throw new ValidationError(`${fieldName} must be one of: ${allowedValues.join(', ')} (got "${value}")`, 'INVALID_ENUM_VALUE', fieldName);
184
- }
185
- return value;
186
- }
187
- /**
188
- * Validate table name against whitelist
189
- */
190
- export function validateTableName(tableName) {
191
- if (!tableName || typeof tableName !== 'string') {
192
- throw new ValidationError('Table name must be a non-empty string', 'INVALID_TABLE', 'tableName');
193
- }
194
- const sanitized = tableName.trim().toLowerCase();
195
- if (!ALLOWED_TABLES.has(sanitized)) {
196
- throw new ValidationError(`Invalid table name: ${sanitized}. Allowed tables: ${Array.from(ALLOWED_TABLES).join(', ')}`, 'INVALID_TABLE', 'tableName');
197
- }
198
- return sanitized;
199
- }
200
- /**
201
- * Validate column name against whitelist
202
- */
203
- export function validateColumnName(tableName, columnName) {
204
- if (!columnName || typeof columnName !== 'string') {
205
- throw new ValidationError('Column name must be a non-empty string', 'INVALID_COLUMN', 'columnName');
206
- }
207
- const sanitized = columnName.trim().toLowerCase();
208
- const validatedTable = validateTableName(tableName);
209
- const allowedColumns = ALLOWED_COLUMNS[validatedTable];
210
- if (allowedColumns && !allowedColumns.has(sanitized)) {
211
- throw new ValidationError(`Invalid column name for table ${validatedTable}: ${sanitized}`, 'INVALID_COLUMN', 'columnName');
212
- }
213
- return sanitized;
214
- }
215
- /**
216
- * Validate PRAGMA command against whitelist
217
- */
218
- export function validatePragmaCommand(pragma) {
219
- if (!pragma || typeof pragma !== 'string') {
220
- throw new ValidationError('PRAGMA command must be a non-empty string', 'INVALID_PRAGMA', 'pragma');
221
- }
222
- // Extract the pragma name (before any = or space)
223
- const pragmaName = pragma.trim().toLowerCase().split(/[=\s]/)[0];
224
- if (!ALLOWED_PRAGMAS.has(pragmaName)) {
225
- throw new ValidationError(`Invalid PRAGMA command: ${pragmaName}. Allowed: ${Array.from(ALLOWED_PRAGMAS).join(', ')}`, 'INVALID_PRAGMA', 'pragma');
226
- }
227
- // Return the full pragma for execution (e.g., "journal_mode = WAL")
228
- return pragma.trim();
229
- }
230
- /**
231
- * Validate and sanitize session ID
232
- */
233
- export function validateSessionId(sessionId) {
234
- if (!sessionId || typeof sessionId !== 'string') {
235
- throw new ValidationError('Session ID must be a non-empty string', 'INVALID_SESSION_ID', 'sessionId');
236
- }
237
- // Allow alphanumeric, hyphens, underscores (max 255 chars)
238
- const sanitized = sessionId.trim();
239
- if (sanitized.length > 255) {
240
- throw new ValidationError('Session ID exceeds maximum length (255)', 'INVALID_SESSION_ID', 'sessionId');
241
- }
242
- if (!/^[a-zA-Z0-9_-]+$/.test(sanitized)) {
243
- throw new ValidationError('Session ID must contain only alphanumeric characters, hyphens, and underscores', 'INVALID_SESSION_ID', 'sessionId');
244
- }
245
- return sanitized;
246
- }
247
- /**
248
- * Validate numeric ID
249
- */
250
- export function validateId(id, fieldName = 'id') {
251
- const numId = Number(id);
252
- if (!Number.isFinite(numId) || numId < 0 || !Number.isInteger(numId)) {
253
- throw new ValidationError(`${fieldName} must be a non-negative integer`, 'INVALID_ID', fieldName);
254
- }
255
- return numId;
256
- }
257
- /**
258
- * Validate timestamp
259
- */
260
- export function validateTimestamp(timestamp, fieldName = 'timestamp') {
261
- const numTs = Number(timestamp);
262
- if (!Number.isFinite(numTs) || numTs < 0) {
263
- throw new ValidationError(`${fieldName} must be a non-negative number`, 'INVALID_TIMESTAMP', fieldName);
264
- }
265
- // Reasonable timestamp bounds (2000-01-01 to 2100-01-01)
266
- const MIN_TIMESTAMP = 946684800; // 2000-01-01
267
- const MAX_TIMESTAMP = 4102444800; // 2100-01-01
268
- if (numTs < MIN_TIMESTAMP || numTs > MAX_TIMESTAMP) {
269
- throw new ValidationError(`${fieldName} is out of valid range (2000-2100)`, 'INVALID_TIMESTAMP', fieldName);
270
- }
271
- return numTs;
272
- }
273
- /**
274
- * Validate reward value (0-1)
275
- */
276
- export function validateReward(reward) {
277
- const numReward = Number(reward);
278
- if (!Number.isFinite(numReward)) {
279
- throw new ValidationError('Reward must be a number', 'INVALID_REWARD', 'reward');
280
- }
281
- if (numReward < 0 || numReward > 1) {
282
- throw new ValidationError('Reward must be between 0 and 1', 'INVALID_REWARD', 'reward');
283
- }
284
- return numReward;
285
- }
286
- /**
287
- * Validate success flag
288
- */
289
- export function validateSuccess(success) {
290
- if (typeof success === 'boolean') {
291
- return success;
292
- }
293
- if (typeof success === 'number') {
294
- return success !== 0;
295
- }
296
- if (typeof success === 'string') {
297
- const lower = success.toLowerCase();
298
- if (lower === 'true' || lower === '1' || lower === 'yes')
299
- return true;
300
- if (lower === 'false' || lower === '0' || lower === 'no')
301
- return false;
302
- }
303
- throw new ValidationError('Success must be a boolean value', 'INVALID_BOOLEAN', 'success');
304
- }
305
- /**
306
- * Sanitize text input (prevent extremely long strings, null bytes, etc.)
307
- */
308
- export function sanitizeText(text, maxLength = 100000, fieldName = 'text') {
309
- if (typeof text !== 'string') {
310
- throw new ValidationError(`${fieldName} must be a string`, 'INVALID_TEXT', fieldName);
311
- }
312
- // Remove null bytes
313
- const sanitized = text.replace(/\0/g, '');
314
- if (sanitized.length > maxLength) {
315
- throw new ValidationError(`${fieldName} exceeds maximum length (${maxLength})`, 'TEXT_TOO_LONG', fieldName);
316
- }
317
- return sanitized;
318
- }
319
- /**
320
- * Build safe WHERE clause with parameterized values
321
- * Returns both the SQL clause and the parameter values
322
- */
323
- export function buildSafeWhereClause(tableName, conditions) {
324
- const validatedTable = validateTableName(tableName);
325
- if (!conditions || typeof conditions !== 'object' || Object.keys(conditions).length === 0) {
326
- throw new ValidationError('Conditions must be a non-empty object', 'INVALID_CONDITIONS', 'conditions');
327
- }
328
- const clauses = [];
329
- const values = [];
330
- for (const [column, value] of Object.entries(conditions)) {
331
- const validatedColumn = validateColumnName(validatedTable, column);
332
- clauses.push(`${validatedColumn} = ?`);
333
- values.push(value);
334
- }
335
- return {
336
- clause: clauses.join(' AND '),
337
- values,
338
- };
339
- }
340
- /**
341
- * Build safe SET clause for UPDATE statements
342
- */
343
- export function buildSafeSetClause(tableName, updates) {
344
- const validatedTable = validateTableName(tableName);
345
- if (!updates || typeof updates !== 'object' || Object.keys(updates).length === 0) {
346
- throw new ValidationError('Updates must be a non-empty object', 'INVALID_UPDATES', 'updates');
347
- }
348
- const clauses = [];
349
- const values = [];
350
- for (const [column, value] of Object.entries(updates)) {
351
- const validatedColumn = validateColumnName(validatedTable, column);
352
- clauses.push(`${validatedColumn} = ?`);
353
- values.push(value);
354
- }
355
- return {
356
- clause: clauses.join(', '),
357
- values,
358
- };
359
- }
360
- /**
361
- * Validate JSON data
362
- */
363
- export function validateJSON(data, fieldName = 'json') {
364
- try {
365
- return JSON.stringify(data);
366
- }
367
- catch (error) {
368
- throw new ValidationError(`${fieldName} is not valid JSON`, 'INVALID_JSON', fieldName);
369
- }
370
- }
371
- /**
372
- * Validate array of tags
373
- */
374
- export function validateTags(tags) {
375
- if (!Array.isArray(tags)) {
376
- throw new ValidationError('Tags must be an array', 'INVALID_TAGS', 'tags');
377
- }
378
- const sanitized = tags.map((tag, i) => {
379
- if (typeof tag !== 'string') {
380
- throw new ValidationError(`Tag at index ${i} must be a string`, 'INVALID_TAG', `tags[${i}]`);
381
- }
382
- return sanitizeText(tag, 100, `tags[${i}]`);
383
- });
384
- return sanitized;
385
- }
386
- /**
387
- * Safe error handler that doesn't leak sensitive information
388
- */
389
- export function handleSecurityError(error) {
390
- if (error instanceof ValidationError) {
391
- // Safe to return validation errors
392
- return error.message;
393
- }
394
- // For other errors, return generic message and log details internally
395
- console.error('Security error:', error);
396
- return 'An error occurred while processing your request. Please check your input and try again.';
397
- }
398
- //# sourceMappingURL=input-validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-validation.js","sourceRoot":"","sources":["../../src/security/input-validation.ts"],"names":[],"mappings":"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"}