palaryn 0.1.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 (607) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +716 -0
  3. package/dist/sdk/typescript/src/client.d.ts +71 -0
  4. package/dist/sdk/typescript/src/client.d.ts.map +1 -0
  5. package/dist/sdk/typescript/src/client.js +176 -0
  6. package/dist/sdk/typescript/src/client.js.map +1 -0
  7. package/dist/sdk/typescript/src/errors.d.ts +50 -0
  8. package/dist/sdk/typescript/src/errors.d.ts.map +1 -0
  9. package/dist/sdk/typescript/src/errors.js +103 -0
  10. package/dist/sdk/typescript/src/errors.js.map +1 -0
  11. package/dist/sdk/typescript/src/index.d.ts +4 -0
  12. package/dist/sdk/typescript/src/index.d.ts.map +1 -0
  13. package/dist/sdk/typescript/src/index.js +15 -0
  14. package/dist/sdk/typescript/src/index.js.map +1 -0
  15. package/dist/sdk/typescript/src/types.d.ts +101 -0
  16. package/dist/sdk/typescript/src/types.d.ts.map +1 -0
  17. package/dist/sdk/typescript/src/types.js +6 -0
  18. package/dist/sdk/typescript/src/types.js.map +1 -0
  19. package/dist/src/admin/index.d.ts +2 -0
  20. package/dist/src/admin/index.d.ts.map +1 -0
  21. package/dist/src/admin/index.js +6 -0
  22. package/dist/src/admin/index.js.map +1 -0
  23. package/dist/src/admin/routes.d.ts +5 -0
  24. package/dist/src/admin/routes.d.ts.map +1 -0
  25. package/dist/src/admin/routes.js +471 -0
  26. package/dist/src/admin/routes.js.map +1 -0
  27. package/dist/src/admin/templates.d.ts +51 -0
  28. package/dist/src/admin/templates.d.ts.map +1 -0
  29. package/dist/src/admin/templates.js +500 -0
  30. package/dist/src/admin/templates.js.map +1 -0
  31. package/dist/src/anomaly/detector.d.ts +141 -0
  32. package/dist/src/anomaly/detector.d.ts.map +1 -0
  33. package/dist/src/anomaly/detector.js +554 -0
  34. package/dist/src/anomaly/detector.js.map +1 -0
  35. package/dist/src/anomaly/index.d.ts +2 -0
  36. package/dist/src/anomaly/index.d.ts.map +1 -0
  37. package/dist/src/anomaly/index.js +7 -0
  38. package/dist/src/anomaly/index.js.map +1 -0
  39. package/dist/src/approval/manager.d.ts +147 -0
  40. package/dist/src/approval/manager.d.ts.map +1 -0
  41. package/dist/src/approval/manager.js +511 -0
  42. package/dist/src/approval/manager.js.map +1 -0
  43. package/dist/src/approval/webhook.d.ts +36 -0
  44. package/dist/src/approval/webhook.d.ts.map +1 -0
  45. package/dist/src/approval/webhook.js +135 -0
  46. package/dist/src/approval/webhook.js.map +1 -0
  47. package/dist/src/audit/logger.d.ts +70 -0
  48. package/dist/src/audit/logger.d.ts.map +1 -0
  49. package/dist/src/audit/logger.js +440 -0
  50. package/dist/src/audit/logger.js.map +1 -0
  51. package/dist/src/auth/index.d.ts +6 -0
  52. package/dist/src/auth/index.d.ts.map +1 -0
  53. package/dist/src/auth/index.js +22 -0
  54. package/dist/src/auth/index.js.map +1 -0
  55. package/dist/src/auth/password.d.ts +3 -0
  56. package/dist/src/auth/password.d.ts.map +1 -0
  57. package/dist/src/auth/password.js +25 -0
  58. package/dist/src/auth/password.js.map +1 -0
  59. package/dist/src/auth/pkce.d.ts +13 -0
  60. package/dist/src/auth/pkce.d.ts.map +1 -0
  61. package/dist/src/auth/pkce.js +58 -0
  62. package/dist/src/auth/pkce.js.map +1 -0
  63. package/dist/src/auth/providers.d.ts +28 -0
  64. package/dist/src/auth/providers.d.ts.map +1 -0
  65. package/dist/src/auth/providers.js +198 -0
  66. package/dist/src/auth/providers.js.map +1 -0
  67. package/dist/src/auth/routes.d.ts +14 -0
  68. package/dist/src/auth/routes.d.ts.map +1 -0
  69. package/dist/src/auth/routes.js +431 -0
  70. package/dist/src/auth/routes.js.map +1 -0
  71. package/dist/src/auth/session.d.ts +24 -0
  72. package/dist/src/auth/session.d.ts.map +1 -0
  73. package/dist/src/auth/session.js +105 -0
  74. package/dist/src/auth/session.js.map +1 -0
  75. package/dist/src/billing/index.d.ts +7 -0
  76. package/dist/src/billing/index.d.ts.map +1 -0
  77. package/dist/src/billing/index.js +14 -0
  78. package/dist/src/billing/index.js.map +1 -0
  79. package/dist/src/billing/plan-enforcer.d.ts +44 -0
  80. package/dist/src/billing/plan-enforcer.d.ts.map +1 -0
  81. package/dist/src/billing/plan-enforcer.js +110 -0
  82. package/dist/src/billing/plan-enforcer.js.map +1 -0
  83. package/dist/src/billing/routes.d.ts +15 -0
  84. package/dist/src/billing/routes.d.ts.map +1 -0
  85. package/dist/src/billing/routes.js +193 -0
  86. package/dist/src/billing/routes.js.map +1 -0
  87. package/dist/src/billing/stripe-client.d.ts +14 -0
  88. package/dist/src/billing/stripe-client.d.ts.map +1 -0
  89. package/dist/src/billing/stripe-client.js +51 -0
  90. package/dist/src/billing/stripe-client.js.map +1 -0
  91. package/dist/src/billing/webhook-handler.d.ts +19 -0
  92. package/dist/src/billing/webhook-handler.d.ts.map +1 -0
  93. package/dist/src/billing/webhook-handler.js +169 -0
  94. package/dist/src/billing/webhook-handler.js.map +1 -0
  95. package/dist/src/billing/webhook-routes.d.ts +5 -0
  96. package/dist/src/billing/webhook-routes.d.ts.map +1 -0
  97. package/dist/src/billing/webhook-routes.js +30 -0
  98. package/dist/src/billing/webhook-routes.js.map +1 -0
  99. package/dist/src/budget/manager.d.ts +95 -0
  100. package/dist/src/budget/manager.d.ts.map +1 -0
  101. package/dist/src/budget/manager.js +547 -0
  102. package/dist/src/budget/manager.js.map +1 -0
  103. package/dist/src/budget/usage-extractor.d.ts +38 -0
  104. package/dist/src/budget/usage-extractor.d.ts.map +1 -0
  105. package/dist/src/budget/usage-extractor.js +165 -0
  106. package/dist/src/budget/usage-extractor.js.map +1 -0
  107. package/dist/src/cli.d.ts +3 -0
  108. package/dist/src/cli.d.ts.map +1 -0
  109. package/dist/src/cli.js +115 -0
  110. package/dist/src/cli.js.map +1 -0
  111. package/dist/src/config/defaults.d.ts +3 -0
  112. package/dist/src/config/defaults.d.ts.map +1 -0
  113. package/dist/src/config/defaults.js +243 -0
  114. package/dist/src/config/defaults.js.map +1 -0
  115. package/dist/src/config/validate.d.ts +15 -0
  116. package/dist/src/config/validate.d.ts.map +1 -0
  117. package/dist/src/config/validate.js +105 -0
  118. package/dist/src/config/validate.js.map +1 -0
  119. package/dist/src/dlp/composite-scanner.d.ts +47 -0
  120. package/dist/src/dlp/composite-scanner.d.ts.map +1 -0
  121. package/dist/src/dlp/composite-scanner.js +186 -0
  122. package/dist/src/dlp/composite-scanner.js.map +1 -0
  123. package/dist/src/dlp/index.d.ts +10 -0
  124. package/dist/src/dlp/index.d.ts.map +1 -0
  125. package/dist/src/dlp/index.js +26 -0
  126. package/dist/src/dlp/index.js.map +1 -0
  127. package/dist/src/dlp/interfaces.d.ts +33 -0
  128. package/dist/src/dlp/interfaces.d.ts.map +1 -0
  129. package/dist/src/dlp/interfaces.js +3 -0
  130. package/dist/src/dlp/interfaces.js.map +1 -0
  131. package/dist/src/dlp/patterns.d.ts +9 -0
  132. package/dist/src/dlp/patterns.d.ts.map +1 -0
  133. package/dist/src/dlp/patterns.js +25 -0
  134. package/dist/src/dlp/patterns.js.map +1 -0
  135. package/dist/src/dlp/prompt-injection-backend.d.ts +68 -0
  136. package/dist/src/dlp/prompt-injection-backend.d.ts.map +1 -0
  137. package/dist/src/dlp/prompt-injection-backend.js +148 -0
  138. package/dist/src/dlp/prompt-injection-backend.js.map +1 -0
  139. package/dist/src/dlp/prompt-injection-patterns.d.ts +32 -0
  140. package/dist/src/dlp/prompt-injection-patterns.d.ts.map +1 -0
  141. package/dist/src/dlp/prompt-injection-patterns.js +290 -0
  142. package/dist/src/dlp/prompt-injection-patterns.js.map +1 -0
  143. package/dist/src/dlp/regex-backend.d.ts +32 -0
  144. package/dist/src/dlp/regex-backend.d.ts.map +1 -0
  145. package/dist/src/dlp/regex-backend.js +153 -0
  146. package/dist/src/dlp/regex-backend.js.map +1 -0
  147. package/dist/src/dlp/scanner.d.ts +122 -0
  148. package/dist/src/dlp/scanner.d.ts.map +1 -0
  149. package/dist/src/dlp/scanner.js +444 -0
  150. package/dist/src/dlp/scanner.js.map +1 -0
  151. package/dist/src/dlp/text-normalizer.d.ts +41 -0
  152. package/dist/src/dlp/text-normalizer.d.ts.map +1 -0
  153. package/dist/src/dlp/text-normalizer.js +203 -0
  154. package/dist/src/dlp/text-normalizer.js.map +1 -0
  155. package/dist/src/dlp/trufflehog-backend.d.ts +64 -0
  156. package/dist/src/dlp/trufflehog-backend.d.ts.map +1 -0
  157. package/dist/src/dlp/trufflehog-backend.js +151 -0
  158. package/dist/src/dlp/trufflehog-backend.js.map +1 -0
  159. package/dist/src/executor/http-executor.d.ts +25 -0
  160. package/dist/src/executor/http-executor.d.ts.map +1 -0
  161. package/dist/src/executor/http-executor.js +333 -0
  162. package/dist/src/executor/http-executor.js.map +1 -0
  163. package/dist/src/executor/index.d.ts +6 -0
  164. package/dist/src/executor/index.d.ts.map +1 -0
  165. package/dist/src/executor/index.js +12 -0
  166. package/dist/src/executor/index.js.map +1 -0
  167. package/dist/src/executor/interfaces.d.ts +11 -0
  168. package/dist/src/executor/interfaces.d.ts.map +1 -0
  169. package/dist/src/executor/interfaces.js +3 -0
  170. package/dist/src/executor/interfaces.js.map +1 -0
  171. package/dist/src/executor/noop-executor.d.ts +13 -0
  172. package/dist/src/executor/noop-executor.d.ts.map +1 -0
  173. package/dist/src/executor/noop-executor.js +21 -0
  174. package/dist/src/executor/noop-executor.js.map +1 -0
  175. package/dist/src/executor/registry.d.ts +30 -0
  176. package/dist/src/executor/registry.d.ts.map +1 -0
  177. package/dist/src/executor/registry.js +62 -0
  178. package/dist/src/executor/registry.js.map +1 -0
  179. package/dist/src/executor/slack-executor.d.ts +24 -0
  180. package/dist/src/executor/slack-executor.d.ts.map +1 -0
  181. package/dist/src/executor/slack-executor.js +147 -0
  182. package/dist/src/executor/slack-executor.js.map +1 -0
  183. package/dist/src/index.d.ts +25 -0
  184. package/dist/src/index.d.ts.map +1 -0
  185. package/dist/src/index.js +74 -0
  186. package/dist/src/index.js.map +1 -0
  187. package/dist/src/mcp/auth-verifier.d.ts +23 -0
  188. package/dist/src/mcp/auth-verifier.d.ts.map +1 -0
  189. package/dist/src/mcp/auth-verifier.js +162 -0
  190. package/dist/src/mcp/auth-verifier.js.map +1 -0
  191. package/dist/src/mcp/bridge.d.ts +132 -0
  192. package/dist/src/mcp/bridge.d.ts.map +1 -0
  193. package/dist/src/mcp/bridge.js +734 -0
  194. package/dist/src/mcp/bridge.js.map +1 -0
  195. package/dist/src/mcp/http-transport.d.ts +32 -0
  196. package/dist/src/mcp/http-transport.d.ts.map +1 -0
  197. package/dist/src/mcp/http-transport.js +538 -0
  198. package/dist/src/mcp/http-transport.js.map +1 -0
  199. package/dist/src/mcp/index.d.ts +10 -0
  200. package/dist/src/mcp/index.d.ts.map +1 -0
  201. package/dist/src/mcp/index.js +17 -0
  202. package/dist/src/mcp/index.js.map +1 -0
  203. package/dist/src/mcp/oauth-pages.d.ts +23 -0
  204. package/dist/src/mcp/oauth-pages.d.ts.map +1 -0
  205. package/dist/src/mcp/oauth-pages.js +121 -0
  206. package/dist/src/mcp/oauth-pages.js.map +1 -0
  207. package/dist/src/mcp/oauth-postgres-stores.d.ts +55 -0
  208. package/dist/src/mcp/oauth-postgres-stores.d.ts.map +1 -0
  209. package/dist/src/mcp/oauth-postgres-stores.js +226 -0
  210. package/dist/src/mcp/oauth-postgres-stores.js.map +1 -0
  211. package/dist/src/mcp/oauth-provider.d.ts +95 -0
  212. package/dist/src/mcp/oauth-provider.d.ts.map +1 -0
  213. package/dist/src/mcp/oauth-provider.js +360 -0
  214. package/dist/src/mcp/oauth-provider.js.map +1 -0
  215. package/dist/src/mcp/oauth-stores.d.ts +62 -0
  216. package/dist/src/mcp/oauth-stores.d.ts.map +1 -0
  217. package/dist/src/mcp/oauth-stores.js +154 -0
  218. package/dist/src/mcp/oauth-stores.js.map +1 -0
  219. package/dist/src/mcp/server.d.ts +18 -0
  220. package/dist/src/mcp/server.d.ts.map +1 -0
  221. package/dist/src/mcp/server.js +51 -0
  222. package/dist/src/mcp/server.js.map +1 -0
  223. package/dist/src/metrics/collector.d.ts +106 -0
  224. package/dist/src/metrics/collector.d.ts.map +1 -0
  225. package/dist/src/metrics/collector.js +311 -0
  226. package/dist/src/metrics/collector.js.map +1 -0
  227. package/dist/src/metrics/index.d.ts +2 -0
  228. package/dist/src/metrics/index.d.ts.map +1 -0
  229. package/dist/src/metrics/index.js +6 -0
  230. package/dist/src/metrics/index.js.map +1 -0
  231. package/dist/src/middleware/auth.d.ts +77 -0
  232. package/dist/src/middleware/auth.d.ts.map +1 -0
  233. package/dist/src/middleware/auth.js +720 -0
  234. package/dist/src/middleware/auth.js.map +1 -0
  235. package/dist/src/middleware/session.d.ts +18 -0
  236. package/dist/src/middleware/session.d.ts.map +1 -0
  237. package/dist/src/middleware/session.js +67 -0
  238. package/dist/src/middleware/session.js.map +1 -0
  239. package/dist/src/middleware/validate.d.ts +3 -0
  240. package/dist/src/middleware/validate.d.ts.map +1 -0
  241. package/dist/src/middleware/validate.js +85 -0
  242. package/dist/src/middleware/validate.js.map +1 -0
  243. package/dist/src/policy/engine.d.ts +107 -0
  244. package/dist/src/policy/engine.d.ts.map +1 -0
  245. package/dist/src/policy/engine.js +646 -0
  246. package/dist/src/policy/engine.js.map +1 -0
  247. package/dist/src/policy/index.d.ts +3 -0
  248. package/dist/src/policy/index.d.ts.map +1 -0
  249. package/dist/src/policy/index.js +8 -0
  250. package/dist/src/policy/index.js.map +1 -0
  251. package/dist/src/policy/opa-engine.d.ts +176 -0
  252. package/dist/src/policy/opa-engine.d.ts.map +1 -0
  253. package/dist/src/policy/opa-engine.js +790 -0
  254. package/dist/src/policy/opa-engine.js.map +1 -0
  255. package/dist/src/proxy/forward-proxy.d.ts +30 -0
  256. package/dist/src/proxy/forward-proxy.d.ts.map +1 -0
  257. package/dist/src/proxy/forward-proxy.js +580 -0
  258. package/dist/src/proxy/forward-proxy.js.map +1 -0
  259. package/dist/src/proxy/index.d.ts +2 -0
  260. package/dist/src/proxy/index.d.ts.map +1 -0
  261. package/dist/src/proxy/index.js +8 -0
  262. package/dist/src/proxy/index.js.map +1 -0
  263. package/dist/src/ratelimit/limiter.d.ts +45 -0
  264. package/dist/src/ratelimit/limiter.d.ts.map +1 -0
  265. package/dist/src/ratelimit/limiter.js +158 -0
  266. package/dist/src/ratelimit/limiter.js.map +1 -0
  267. package/dist/src/replay/engine.d.ts +40 -0
  268. package/dist/src/replay/engine.d.ts.map +1 -0
  269. package/dist/src/replay/engine.js +106 -0
  270. package/dist/src/replay/engine.js.map +1 -0
  271. package/dist/src/replay/index.d.ts +2 -0
  272. package/dist/src/replay/index.d.ts.map +1 -0
  273. package/dist/src/replay/index.js +6 -0
  274. package/dist/src/replay/index.js.map +1 -0
  275. package/dist/src/saas/index.d.ts +2 -0
  276. package/dist/src/saas/index.d.ts.map +1 -0
  277. package/dist/src/saas/index.js +18 -0
  278. package/dist/src/saas/index.js.map +1 -0
  279. package/dist/src/saas/routes.d.ts +18 -0
  280. package/dist/src/saas/routes.d.ts.map +1 -0
  281. package/dist/src/saas/routes.js +1566 -0
  282. package/dist/src/saas/routes.js.map +1 -0
  283. package/dist/src/server/app.d.ts +44 -0
  284. package/dist/src/server/app.d.ts.map +1 -0
  285. package/dist/src/server/app.js +854 -0
  286. package/dist/src/server/app.js.map +1 -0
  287. package/dist/src/server/errors.d.ts +32 -0
  288. package/dist/src/server/errors.d.ts.map +1 -0
  289. package/dist/src/server/errors.js +39 -0
  290. package/dist/src/server/errors.js.map +1 -0
  291. package/dist/src/server/gateway.d.ts +165 -0
  292. package/dist/src/server/gateway.d.ts.map +1 -0
  293. package/dist/src/server/gateway.js +964 -0
  294. package/dist/src/server/gateway.js.map +1 -0
  295. package/dist/src/server/index.d.ts +2 -0
  296. package/dist/src/server/index.d.ts.map +1 -0
  297. package/dist/src/server/index.js +295 -0
  298. package/dist/src/server/index.js.map +1 -0
  299. package/dist/src/server/logger.d.ts +33 -0
  300. package/dist/src/server/logger.d.ts.map +1 -0
  301. package/dist/src/server/logger.js +230 -0
  302. package/dist/src/server/logger.js.map +1 -0
  303. package/dist/src/server/stream-proxy.d.ts +32 -0
  304. package/dist/src/server/stream-proxy.d.ts.map +1 -0
  305. package/dist/src/server/stream-proxy.js +184 -0
  306. package/dist/src/server/stream-proxy.js.map +1 -0
  307. package/dist/src/storage/file-persistence.d.ts +48 -0
  308. package/dist/src/storage/file-persistence.d.ts.map +1 -0
  309. package/dist/src/storage/file-persistence.js +280 -0
  310. package/dist/src/storage/file-persistence.js.map +1 -0
  311. package/dist/src/storage/index.d.ts +5 -0
  312. package/dist/src/storage/index.d.ts.map +1 -0
  313. package/dist/src/storage/index.js +21 -0
  314. package/dist/src/storage/index.js.map +1 -0
  315. package/dist/src/storage/interfaces.d.ts +237 -0
  316. package/dist/src/storage/interfaces.d.ts.map +1 -0
  317. package/dist/src/storage/interfaces.js +3 -0
  318. package/dist/src/storage/interfaces.js.map +1 -0
  319. package/dist/src/storage/memory.d.ts +162 -0
  320. package/dist/src/storage/memory.d.ts.map +1 -0
  321. package/dist/src/storage/memory.js +603 -0
  322. package/dist/src/storage/memory.js.map +1 -0
  323. package/dist/src/storage/postgres.d.ts +267 -0
  324. package/dist/src/storage/postgres.d.ts.map +1 -0
  325. package/dist/src/storage/postgres.js +1555 -0
  326. package/dist/src/storage/postgres.js.map +1 -0
  327. package/dist/src/storage/redis.d.ts +202 -0
  328. package/dist/src/storage/redis.d.ts.map +1 -0
  329. package/dist/src/storage/redis.js +629 -0
  330. package/dist/src/storage/redis.js.map +1 -0
  331. package/dist/src/tracing/index.d.ts +2 -0
  332. package/dist/src/tracing/index.d.ts.map +1 -0
  333. package/dist/src/tracing/index.js +6 -0
  334. package/dist/src/tracing/index.js.map +1 -0
  335. package/dist/src/tracing/provider.d.ts +43 -0
  336. package/dist/src/tracing/provider.d.ts.map +1 -0
  337. package/dist/src/tracing/provider.js +74 -0
  338. package/dist/src/tracing/provider.js.map +1 -0
  339. package/dist/src/trust/calculator.d.ts +54 -0
  340. package/dist/src/trust/calculator.d.ts.map +1 -0
  341. package/dist/src/trust/calculator.js +102 -0
  342. package/dist/src/trust/calculator.js.map +1 -0
  343. package/dist/src/trust/index.d.ts +2 -0
  344. package/dist/src/trust/index.d.ts.map +1 -0
  345. package/dist/src/trust/index.js +7 -0
  346. package/dist/src/trust/index.js.map +1 -0
  347. package/dist/src/types/budget.d.ts +30 -0
  348. package/dist/src/types/budget.d.ts.map +1 -0
  349. package/dist/src/types/budget.js +3 -0
  350. package/dist/src/types/budget.js.map +1 -0
  351. package/dist/src/types/config.d.ts +176 -0
  352. package/dist/src/types/config.d.ts.map +1 -0
  353. package/dist/src/types/config.js +3 -0
  354. package/dist/src/types/config.js.map +1 -0
  355. package/dist/src/types/events.d.ts +24 -0
  356. package/dist/src/types/events.d.ts.map +1 -0
  357. package/dist/src/types/events.js +3 -0
  358. package/dist/src/types/events.js.map +1 -0
  359. package/dist/src/types/index.d.ts +8 -0
  360. package/dist/src/types/index.d.ts.map +1 -0
  361. package/dist/src/types/index.js +24 -0
  362. package/dist/src/types/index.js.map +1 -0
  363. package/dist/src/types/policy.d.ts +60 -0
  364. package/dist/src/types/policy.d.ts.map +1 -0
  365. package/dist/src/types/policy.js +3 -0
  366. package/dist/src/types/policy.js.map +1 -0
  367. package/dist/src/types/stripe-config.d.ts +12 -0
  368. package/dist/src/types/stripe-config.d.ts.map +1 -0
  369. package/dist/src/types/stripe-config.js +3 -0
  370. package/dist/src/types/stripe-config.js.map +1 -0
  371. package/dist/src/types/subscription.d.ts +24 -0
  372. package/dist/src/types/subscription.d.ts.map +1 -0
  373. package/dist/src/types/subscription.js +38 -0
  374. package/dist/src/types/subscription.js.map +1 -0
  375. package/dist/src/types/tool-call.d.ts +42 -0
  376. package/dist/src/types/tool-call.d.ts.map +1 -0
  377. package/dist/src/types/tool-call.js +3 -0
  378. package/dist/src/types/tool-call.js.map +1 -0
  379. package/dist/src/types/tool-result.d.ts +58 -0
  380. package/dist/src/types/tool-result.d.ts.map +1 -0
  381. package/dist/src/types/tool-result.js +3 -0
  382. package/dist/src/types/tool-result.js.map +1 -0
  383. package/dist/src/types/user.d.ts +101 -0
  384. package/dist/src/types/user.d.ts.map +1 -0
  385. package/dist/src/types/user.js +6 -0
  386. package/dist/src/types/user.js.map +1 -0
  387. package/dist/tests/integration/api.test.d.ts +2 -0
  388. package/dist/tests/integration/api.test.d.ts.map +1 -0
  389. package/dist/tests/integration/api.test.js +1199 -0
  390. package/dist/tests/integration/api.test.js.map +1 -0
  391. package/dist/tests/integration/proxy.test.d.ts +2 -0
  392. package/dist/tests/integration/proxy.test.d.ts.map +1 -0
  393. package/dist/tests/integration/proxy.test.js +251 -0
  394. package/dist/tests/integration/proxy.test.js.map +1 -0
  395. package/dist/tests/integration/storage.test.d.ts +16 -0
  396. package/dist/tests/integration/storage.test.d.ts.map +1 -0
  397. package/dist/tests/integration/storage.test.js +826 -0
  398. package/dist/tests/integration/storage.test.js.map +1 -0
  399. package/dist/tests/unit/admin.test.d.ts +2 -0
  400. package/dist/tests/unit/admin.test.d.ts.map +1 -0
  401. package/dist/tests/unit/admin.test.js +698 -0
  402. package/dist/tests/unit/admin.test.js.map +1 -0
  403. package/dist/tests/unit/anomaly-detector.test.d.ts +2 -0
  404. package/dist/tests/unit/anomaly-detector.test.d.ts.map +1 -0
  405. package/dist/tests/unit/anomaly-detector.test.js +903 -0
  406. package/dist/tests/unit/anomaly-detector.test.js.map +1 -0
  407. package/dist/tests/unit/approval-manager.test.d.ts +2 -0
  408. package/dist/tests/unit/approval-manager.test.d.ts.map +1 -0
  409. package/dist/tests/unit/approval-manager.test.js +528 -0
  410. package/dist/tests/unit/approval-manager.test.js.map +1 -0
  411. package/dist/tests/unit/approval-webhook.test.d.ts +2 -0
  412. package/dist/tests/unit/approval-webhook.test.d.ts.map +1 -0
  413. package/dist/tests/unit/approval-webhook.test.js +355 -0
  414. package/dist/tests/unit/approval-webhook.test.js.map +1 -0
  415. package/dist/tests/unit/audit-logger.test.d.ts +2 -0
  416. package/dist/tests/unit/audit-logger.test.d.ts.map +1 -0
  417. package/dist/tests/unit/audit-logger.test.js +635 -0
  418. package/dist/tests/unit/audit-logger.test.js.map +1 -0
  419. package/dist/tests/unit/auth-routes.test.d.ts +2 -0
  420. package/dist/tests/unit/auth-routes.test.d.ts.map +1 -0
  421. package/dist/tests/unit/auth-routes.test.js +281 -0
  422. package/dist/tests/unit/auth-routes.test.js.map +1 -0
  423. package/dist/tests/unit/auth.test.d.ts +2 -0
  424. package/dist/tests/unit/auth.test.d.ts.map +1 -0
  425. package/dist/tests/unit/auth.test.js +1382 -0
  426. package/dist/tests/unit/auth.test.js.map +1 -0
  427. package/dist/tests/unit/billing.test.d.ts +2 -0
  428. package/dist/tests/unit/billing.test.d.ts.map +1 -0
  429. package/dist/tests/unit/billing.test.js +579 -0
  430. package/dist/tests/unit/billing.test.js.map +1 -0
  431. package/dist/tests/unit/budget-manager.test.d.ts +2 -0
  432. package/dist/tests/unit/budget-manager.test.d.ts.map +1 -0
  433. package/dist/tests/unit/budget-manager.test.js +778 -0
  434. package/dist/tests/unit/budget-manager.test.js.map +1 -0
  435. package/dist/tests/unit/budget-race.test.d.ts +2 -0
  436. package/dist/tests/unit/budget-race.test.d.ts.map +1 -0
  437. package/dist/tests/unit/budget-race.test.js +58 -0
  438. package/dist/tests/unit/budget-race.test.js.map +1 -0
  439. package/dist/tests/unit/cli.test.d.ts +2 -0
  440. package/dist/tests/unit/cli.test.d.ts.map +1 -0
  441. package/dist/tests/unit/cli.test.js +93 -0
  442. package/dist/tests/unit/cli.test.js.map +1 -0
  443. package/dist/tests/unit/concurrency.test.d.ts +2 -0
  444. package/dist/tests/unit/concurrency.test.d.ts.map +1 -0
  445. package/dist/tests/unit/concurrency.test.js +1270 -0
  446. package/dist/tests/unit/concurrency.test.js.map +1 -0
  447. package/dist/tests/unit/config-validate.test.d.ts +2 -0
  448. package/dist/tests/unit/config-validate.test.d.ts.map +1 -0
  449. package/dist/tests/unit/config-validate.test.js +230 -0
  450. package/dist/tests/unit/config-validate.test.js.map +1 -0
  451. package/dist/tests/unit/defaults.test.d.ts +2 -0
  452. package/dist/tests/unit/defaults.test.d.ts.map +1 -0
  453. package/dist/tests/unit/defaults.test.js +364 -0
  454. package/dist/tests/unit/defaults.test.js.map +1 -0
  455. package/dist/tests/unit/dlp-backends.test.d.ts +2 -0
  456. package/dist/tests/unit/dlp-backends.test.d.ts.map +1 -0
  457. package/dist/tests/unit/dlp-backends.test.js +563 -0
  458. package/dist/tests/unit/dlp-backends.test.js.map +1 -0
  459. package/dist/tests/unit/dlp-scanner.test.d.ts +2 -0
  460. package/dist/tests/unit/dlp-scanner.test.d.ts.map +1 -0
  461. package/dist/tests/unit/dlp-scanner.test.js +739 -0
  462. package/dist/tests/unit/dlp-scanner.test.js.map +1 -0
  463. package/dist/tests/unit/error-responses.test.d.ts +2 -0
  464. package/dist/tests/unit/error-responses.test.d.ts.map +1 -0
  465. package/dist/tests/unit/error-responses.test.js +101 -0
  466. package/dist/tests/unit/error-responses.test.js.map +1 -0
  467. package/dist/tests/unit/executor-registry.test.d.ts +2 -0
  468. package/dist/tests/unit/executor-registry.test.d.ts.map +1 -0
  469. package/dist/tests/unit/executor-registry.test.js +390 -0
  470. package/dist/tests/unit/executor-registry.test.js.map +1 -0
  471. package/dist/tests/unit/forward-proxy.test.d.ts +2 -0
  472. package/dist/tests/unit/forward-proxy.test.d.ts.map +1 -0
  473. package/dist/tests/unit/forward-proxy.test.js +621 -0
  474. package/dist/tests/unit/forward-proxy.test.js.map +1 -0
  475. package/dist/tests/unit/gateway-features.test.d.ts +2 -0
  476. package/dist/tests/unit/gateway-features.test.d.ts.map +1 -0
  477. package/dist/tests/unit/gateway-features.test.js +753 -0
  478. package/dist/tests/unit/gateway-features.test.js.map +1 -0
  479. package/dist/tests/unit/http-executor.test.d.ts +2 -0
  480. package/dist/tests/unit/http-executor.test.d.ts.map +1 -0
  481. package/dist/tests/unit/http-executor.test.js +310 -0
  482. package/dist/tests/unit/http-executor.test.js.map +1 -0
  483. package/dist/tests/unit/mcp-bridge.test.d.ts +2 -0
  484. package/dist/tests/unit/mcp-bridge.test.d.ts.map +1 -0
  485. package/dist/tests/unit/mcp-bridge.test.js +1136 -0
  486. package/dist/tests/unit/mcp-bridge.test.js.map +1 -0
  487. package/dist/tests/unit/mcp-http-transport.test.d.ts +2 -0
  488. package/dist/tests/unit/mcp-http-transport.test.d.ts.map +1 -0
  489. package/dist/tests/unit/mcp-http-transport.test.js +899 -0
  490. package/dist/tests/unit/mcp-http-transport.test.js.map +1 -0
  491. package/dist/tests/unit/mcp-oauth.test.d.ts +2 -0
  492. package/dist/tests/unit/mcp-oauth.test.d.ts.map +1 -0
  493. package/dist/tests/unit/mcp-oauth.test.js +759 -0
  494. package/dist/tests/unit/mcp-oauth.test.js.map +1 -0
  495. package/dist/tests/unit/mcp-server.test.d.ts +15 -0
  496. package/dist/tests/unit/mcp-server.test.d.ts.map +1 -0
  497. package/dist/tests/unit/mcp-server.test.js +158 -0
  498. package/dist/tests/unit/mcp-server.test.js.map +1 -0
  499. package/dist/tests/unit/metrics.test.d.ts +2 -0
  500. package/dist/tests/unit/metrics.test.d.ts.map +1 -0
  501. package/dist/tests/unit/metrics.test.js +208 -0
  502. package/dist/tests/unit/metrics.test.js.map +1 -0
  503. package/dist/tests/unit/oauth.test.d.ts +2 -0
  504. package/dist/tests/unit/oauth.test.d.ts.map +1 -0
  505. package/dist/tests/unit/oauth.test.js +281 -0
  506. package/dist/tests/unit/oauth.test.js.map +1 -0
  507. package/dist/tests/unit/opa-circuit-breaker.test.d.ts +2 -0
  508. package/dist/tests/unit/opa-circuit-breaker.test.d.ts.map +1 -0
  509. package/dist/tests/unit/opa-circuit-breaker.test.js +297 -0
  510. package/dist/tests/unit/opa-circuit-breaker.test.js.map +1 -0
  511. package/dist/tests/unit/opa-engine.test.d.ts +2 -0
  512. package/dist/tests/unit/opa-engine.test.d.ts.map +1 -0
  513. package/dist/tests/unit/opa-engine.test.js +1813 -0
  514. package/dist/tests/unit/opa-engine.test.js.map +1 -0
  515. package/dist/tests/unit/pipeline-timing.test.d.ts +2 -0
  516. package/dist/tests/unit/pipeline-timing.test.d.ts.map +1 -0
  517. package/dist/tests/unit/pipeline-timing.test.js +528 -0
  518. package/dist/tests/unit/pipeline-timing.test.js.map +1 -0
  519. package/dist/tests/unit/policy-engine.test.d.ts +2 -0
  520. package/dist/tests/unit/policy-engine.test.d.ts.map +1 -0
  521. package/dist/tests/unit/policy-engine.test.js +1345 -0
  522. package/dist/tests/unit/policy-engine.test.js.map +1 -0
  523. package/dist/tests/unit/policy-store.test.d.ts +2 -0
  524. package/dist/tests/unit/policy-store.test.d.ts.map +1 -0
  525. package/dist/tests/unit/policy-store.test.js +60 -0
  526. package/dist/tests/unit/policy-store.test.js.map +1 -0
  527. package/dist/tests/unit/postgres-storage.test.d.ts +2 -0
  528. package/dist/tests/unit/postgres-storage.test.d.ts.map +1 -0
  529. package/dist/tests/unit/postgres-storage.test.js +614 -0
  530. package/dist/tests/unit/postgres-storage.test.js.map +1 -0
  531. package/dist/tests/unit/prompt-injection-backend.test.d.ts +2 -0
  532. package/dist/tests/unit/prompt-injection-backend.test.d.ts.map +1 -0
  533. package/dist/tests/unit/prompt-injection-backend.test.js +621 -0
  534. package/dist/tests/unit/prompt-injection-backend.test.js.map +1 -0
  535. package/dist/tests/unit/proxy-hardening.test.d.ts +2 -0
  536. package/dist/tests/unit/proxy-hardening.test.d.ts.map +1 -0
  537. package/dist/tests/unit/proxy-hardening.test.js +166 -0
  538. package/dist/tests/unit/proxy-hardening.test.js.map +1 -0
  539. package/dist/tests/unit/rate-limiter.test.d.ts +2 -0
  540. package/dist/tests/unit/rate-limiter.test.d.ts.map +1 -0
  541. package/dist/tests/unit/rate-limiter.test.js +443 -0
  542. package/dist/tests/unit/rate-limiter.test.js.map +1 -0
  543. package/dist/tests/unit/redis-storage.test.d.ts +2 -0
  544. package/dist/tests/unit/redis-storage.test.d.ts.map +1 -0
  545. package/dist/tests/unit/redis-storage.test.js +766 -0
  546. package/dist/tests/unit/redis-storage.test.js.map +1 -0
  547. package/dist/tests/unit/replay-engine.test.d.ts +2 -0
  548. package/dist/tests/unit/replay-engine.test.d.ts.map +1 -0
  549. package/dist/tests/unit/replay-engine.test.js +371 -0
  550. package/dist/tests/unit/replay-engine.test.js.map +1 -0
  551. package/dist/tests/unit/saas-routes.test.d.ts +2 -0
  552. package/dist/tests/unit/saas-routes.test.d.ts.map +1 -0
  553. package/dist/tests/unit/saas-routes.test.js +1399 -0
  554. package/dist/tests/unit/saas-routes.test.js.map +1 -0
  555. package/dist/tests/unit/session.test.d.ts +2 -0
  556. package/dist/tests/unit/session.test.d.ts.map +1 -0
  557. package/dist/tests/unit/session.test.js +532 -0
  558. package/dist/tests/unit/session.test.js.map +1 -0
  559. package/dist/tests/unit/slack-executor.test.d.ts +2 -0
  560. package/dist/tests/unit/slack-executor.test.d.ts.map +1 -0
  561. package/dist/tests/unit/slack-executor.test.js +209 -0
  562. package/dist/tests/unit/slack-executor.test.js.map +1 -0
  563. package/dist/tests/unit/storage-hardening.test.d.ts +2 -0
  564. package/dist/tests/unit/storage-hardening.test.d.ts.map +1 -0
  565. package/dist/tests/unit/storage-hardening.test.js +165 -0
  566. package/dist/tests/unit/storage-hardening.test.js.map +1 -0
  567. package/dist/tests/unit/storage.test.d.ts +2 -0
  568. package/dist/tests/unit/storage.test.d.ts.map +1 -0
  569. package/dist/tests/unit/storage.test.js +698 -0
  570. package/dist/tests/unit/storage.test.js.map +1 -0
  571. package/dist/tests/unit/text-normalizer.test.d.ts +2 -0
  572. package/dist/tests/unit/text-normalizer.test.d.ts.map +1 -0
  573. package/dist/tests/unit/text-normalizer.test.js +229 -0
  574. package/dist/tests/unit/text-normalizer.test.js.map +1 -0
  575. package/dist/tests/unit/tracing.test.d.ts +2 -0
  576. package/dist/tests/unit/tracing.test.d.ts.map +1 -0
  577. package/dist/tests/unit/tracing.test.js +611 -0
  578. package/dist/tests/unit/tracing.test.js.map +1 -0
  579. package/dist/tests/unit/trust-calculator.test.d.ts +2 -0
  580. package/dist/tests/unit/trust-calculator.test.d.ts.map +1 -0
  581. package/dist/tests/unit/trust-calculator.test.js +497 -0
  582. package/dist/tests/unit/trust-calculator.test.js.map +1 -0
  583. package/dist/tests/unit/ts-sdk.test.d.ts +2 -0
  584. package/dist/tests/unit/ts-sdk.test.d.ts.map +1 -0
  585. package/dist/tests/unit/ts-sdk.test.js +421 -0
  586. package/dist/tests/unit/ts-sdk.test.js.map +1 -0
  587. package/dist/tests/unit/usage-extractor-llm.test.d.ts +2 -0
  588. package/dist/tests/unit/usage-extractor-llm.test.d.ts.map +1 -0
  589. package/dist/tests/unit/usage-extractor-llm.test.js +139 -0
  590. package/dist/tests/unit/usage-extractor-llm.test.js.map +1 -0
  591. package/dist/tests/unit/usage-extractor.test.d.ts +2 -0
  592. package/dist/tests/unit/usage-extractor.test.d.ts.map +1 -0
  593. package/dist/tests/unit/usage-extractor.test.js +271 -0
  594. package/dist/tests/unit/usage-extractor.test.js.map +1 -0
  595. package/dist/tests/unit/user-stores.test.d.ts +2 -0
  596. package/dist/tests/unit/user-stores.test.d.ts.map +1 -0
  597. package/dist/tests/unit/user-stores.test.js +687 -0
  598. package/dist/tests/unit/user-stores.test.js.map +1 -0
  599. package/dist/tests/unit/validate.test.d.ts +2 -0
  600. package/dist/tests/unit/validate.test.d.ts.map +1 -0
  601. package/dist/tests/unit/validate.test.js +545 -0
  602. package/dist/tests/unit/validate.test.js.map +1 -0
  603. package/package.json +86 -0
  604. package/policy-packs/README.md +42 -0
  605. package/policy-packs/default.yaml +46 -0
  606. package/policy-packs/dev_fast.yaml +54 -0
  607. package/policy-packs/prod_strict.yaml +83 -0
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ /**
3
+ * Text normalizer for bypass-resistant prompt injection detection.
4
+ *
5
+ * Applies a series of transformations to collapse evasion techniques
6
+ * (zero-width chars, HTML entities, homoglyphs, leetspeak, etc.)
7
+ * into canonical ASCII text before pattern matching.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.LEETSPEAK_MAP = exports.HOMOGLYPH_MAP = exports.ZERO_WIDTH_REGEX = void 0;
11
+ exports.normalizeText = normalizeText;
12
+ exports.normalizeLeetspeak = normalizeLeetspeak;
13
+ // ---------------------------------------------------------------------------
14
+ // Zero-width character stripping
15
+ // ---------------------------------------------------------------------------
16
+ /** Regex matching zero-width and invisible Unicode characters. */
17
+ exports.ZERO_WIDTH_REGEX = /[\u200B\u200C\u200D\u00AD\uFEFF\u200E\u200F\u2060\u2061\u2062\u2063\u2064\u180E]/g;
18
+ // ---------------------------------------------------------------------------
19
+ // Homoglyph map (visually similar characters -> ASCII equivalents)
20
+ // ---------------------------------------------------------------------------
21
+ /** Map of Unicode homoglyphs to their ASCII equivalents. */
22
+ exports.HOMOGLYPH_MAP = {
23
+ // Cyrillic -> Latin
24
+ '\u0430': 'a', // а
25
+ '\u0435': 'e', // е
26
+ '\u043E': 'o', // о
27
+ '\u0440': 'p', // р
28
+ '\u0441': 'c', // с
29
+ '\u0443': 'y', // у
30
+ '\u0445': 'x', // х
31
+ '\u0456': 'i', // і
32
+ '\u0458': 'j', // ј
33
+ '\u04BB': 'h', // һ
34
+ '\u0410': 'A', // А
35
+ '\u0412': 'B', // В
36
+ '\u0415': 'E', // Е
37
+ '\u041A': 'K', // К
38
+ '\u041C': 'M', // М
39
+ '\u041D': 'H', // Н
40
+ '\u041E': 'O', // О
41
+ '\u0420': 'P', // Р
42
+ '\u0421': 'C', // С
43
+ '\u0422': 'T', // Т
44
+ '\u0425': 'X', // Х
45
+ // Greek -> Latin
46
+ '\u03B1': 'a', // α
47
+ '\u03BF': 'o', // ο
48
+ '\u03C1': 'p', // ρ
49
+ '\u0391': 'A', // Α
50
+ '\u0392': 'B', // Β
51
+ '\u0395': 'E', // Ε
52
+ '\u0397': 'H', // Η
53
+ '\u0399': 'I', // Ι
54
+ '\u039A': 'K', // Κ
55
+ '\u039C': 'M', // Μ
56
+ '\u039D': 'N', // Ν
57
+ '\u039F': 'O', // Ο
58
+ '\u03A1': 'P', // Ρ
59
+ '\u03A4': 'T', // Τ
60
+ '\u03A7': 'X', // Χ
61
+ '\u03A5': 'Y', // Υ
62
+ '\u0396': 'Z', // Ζ
63
+ // Fullwidth -> ASCII (supplemental to NFKC — belt and suspenders)
64
+ '\uFF41': 'a',
65
+ '\uFF42': 'b',
66
+ '\uFF43': 'c',
67
+ '\uFF49': 'i',
68
+ '\uFF4E': 'n',
69
+ '\uFF4F': 'o',
70
+ '\uFF50': 'p',
71
+ '\uFF52': 'r',
72
+ '\uFF53': 's',
73
+ '\uFF54': 't',
74
+ '\uFF55': 'u',
75
+ // Common lookalikes
76
+ '\u0131': 'i', // ı (dotless i)
77
+ '\u0237': 'j', // ȷ (dotless j)
78
+ '\u01C0': 'l', // ǀ (dental click -> l)
79
+ };
80
+ // Build reverse lookup for efficiency
81
+ const homoglyphRegex = new RegExp('[' + Object.keys(exports.HOMOGLYPH_MAP).join('') + ']', 'g');
82
+ // ---------------------------------------------------------------------------
83
+ // Leetspeak map
84
+ // ---------------------------------------------------------------------------
85
+ /** Map of common leetspeak substitutions to their letter equivalents. */
86
+ exports.LEETSPEAK_MAP = {
87
+ '0': 'o',
88
+ '1': 'i',
89
+ '3': 'e',
90
+ '4': 'a',
91
+ '5': 's',
92
+ '7': 't',
93
+ '@': 'a',
94
+ '$': 's',
95
+ '!': 'i',
96
+ };
97
+ const leetspeakRegex = /[013457@$!]/g;
98
+ // ---------------------------------------------------------------------------
99
+ // HTML entity decoding
100
+ // ---------------------------------------------------------------------------
101
+ /** Named HTML entities most commonly used for evasion. */
102
+ const NAMED_ENTITIES = {
103
+ '&lt;': '<',
104
+ '&gt;': '>',
105
+ '&amp;': '&',
106
+ '&quot;': '"',
107
+ '&apos;': "'",
108
+ '&nbsp;': ' ',
109
+ '&tab;': '\t',
110
+ };
111
+ /** Decode HTML entities (named + numeric decimal + numeric hex). */
112
+ function decodeHTMLEntities(input) {
113
+ // Named entities
114
+ let result = input;
115
+ for (const [entity, char] of Object.entries(NAMED_ENTITIES)) {
116
+ // Case-insensitive replacement for named entities
117
+ const re = new RegExp(entity.replace(/[&;]/g, (c) => '\\' + c), 'gi');
118
+ result = result.replace(re, char);
119
+ }
120
+ // Decimal numeric entities: &#105; -> 'i'
121
+ result = result.replace(/&#(\d+);/g, (_match, digits) => {
122
+ const code = parseInt(digits, 10);
123
+ if (code > 0 && code <= 0x10FFFF) {
124
+ return String.fromCodePoint(code);
125
+ }
126
+ return _match;
127
+ });
128
+ // Hex numeric entities: &#x69; -> 'i'
129
+ result = result.replace(/&#x([0-9a-fA-F]+);/g, (_match, hex) => {
130
+ const code = parseInt(hex, 16);
131
+ if (code > 0 && code <= 0x10FFFF) {
132
+ return String.fromCodePoint(code);
133
+ }
134
+ return _match;
135
+ });
136
+ return result;
137
+ }
138
+ // ---------------------------------------------------------------------------
139
+ // URL decoding
140
+ // ---------------------------------------------------------------------------
141
+ /** Decode percent-encoded sequences (%69 -> 'i'). */
142
+ function decodeURLEncoding(input) {
143
+ try {
144
+ return decodeURIComponent(input);
145
+ }
146
+ catch {
147
+ // If decoding fails (malformed sequences), apply partial decoding
148
+ return input.replace(/%([0-9a-fA-F]{2})/g, (_match, hex) => {
149
+ return String.fromCharCode(parseInt(hex, 16));
150
+ });
151
+ }
152
+ }
153
+ // ---------------------------------------------------------------------------
154
+ // Main normalizer
155
+ // ---------------------------------------------------------------------------
156
+ /**
157
+ * Normalize text for bypass-resistant pattern matching.
158
+ *
159
+ * Applies transformations in order:
160
+ * 1. Strip zero-width / invisible Unicode characters
161
+ * 2. Unicode NFKC normalization (collapses fullwidth, ligatures, etc.)
162
+ * 3. Decode HTML entities (named + numeric)
163
+ * 4. Decode URL percent-encoding
164
+ * 5. Collapse homoglyphs (Cyrillic/Greek lookalikes -> ASCII)
165
+ * 6. Collapse repeated whitespace to single space
166
+ *
167
+ * @param input - The raw text to normalize.
168
+ * @returns The normalized text suitable for pattern matching.
169
+ */
170
+ function normalizeText(input) {
171
+ // Early exit for very short strings
172
+ if (input.length === 0)
173
+ return input;
174
+ let text = input;
175
+ // 1. Strip zero-width characters
176
+ text = text.replace(exports.ZERO_WIDTH_REGEX, '');
177
+ // 2. NFKC normalization (fullwidth -> ASCII, ligatures -> components, etc.)
178
+ text = text.normalize('NFKC');
179
+ // 3. Decode HTML entities
180
+ text = decodeHTMLEntities(text);
181
+ // 4. Decode URL percent-encoding
182
+ text = decodeURLEncoding(text);
183
+ // 5. Collapse homoglyphs
184
+ text = text.replace(homoglyphRegex, (ch) => exports.HOMOGLYPH_MAP[ch] || ch);
185
+ // 6. Collapse whitespace (spaces, tabs, newlines) to single space and trim
186
+ text = text.replace(/\s+/g, ' ').trim();
187
+ return text;
188
+ }
189
+ /**
190
+ * Apply leetspeak normalization on top of standard normalization.
191
+ *
192
+ * Returns the leet-decoded version of the text. Callers should match
193
+ * patterns against BOTH the standard-normalized and leet-normalized text
194
+ * to catch leet evasions without causing false positives on normal text
195
+ * containing digits.
196
+ *
197
+ * @param normalizedInput - Text already passed through normalizeText().
198
+ * @returns The leet-decoded text.
199
+ */
200
+ function normalizeLeetspeak(normalizedInput) {
201
+ return normalizedInput.replace(leetspeakRegex, (ch) => exports.LEETSPEAK_MAP[ch] || ch);
202
+ }
203
+ //# sourceMappingURL=text-normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-normalizer.js","sourceRoot":"","sources":["../../../src/dlp/text-normalizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { DLPBackend, DLPDetection } from './interfaces';
2
+ /**
3
+ * Configuration for the TruffleHog DLP backend.
4
+ */
5
+ export interface TruffleHogConfig {
6
+ /** Path to the trufflehog binary. Defaults to 'trufflehog' (resolved via PATH). */
7
+ binaryPath?: string;
8
+ /** Execution timeout in milliseconds. Defaults to 10000 (10s). */
9
+ timeout?: number;
10
+ }
11
+ /**
12
+ * DLP backend that delegates secret scanning to the TruffleHog binary.
13
+ *
14
+ * TruffleHog is a comprehensive secret scanner that supports 700+ detector
15
+ * types including verified credential checks against live services.
16
+ *
17
+ * This backend writes the input string to a temporary file, runs
18
+ * `trufflehog filesystem --json --no-update <tmpfile>`, and parses the
19
+ * line-delimited JSON output into DLPDetection objects.
20
+ *
21
+ * Graceful degradation: if the trufflehog binary is not installed or the
22
+ * process fails for any reason, the backend logs a warning and returns an
23
+ * empty array (no detections). This allows it to be safely composed with
24
+ * other backends without breaking the pipeline.
25
+ */
26
+ export declare class TruffleHogBackend implements DLPBackend {
27
+ readonly name = "trufflehog";
28
+ private readonly binaryPath;
29
+ private readonly timeout;
30
+ constructor(config?: TruffleHogConfig);
31
+ /**
32
+ * Scan a string for secrets using trufflehog.
33
+ *
34
+ * 1. Writes the value to a temp file
35
+ * 2. Runs trufflehog filesystem in JSON mode
36
+ * 3. Parses each JSON line into a DLPDetection
37
+ * 4. Cleans up the temp file
38
+ *
39
+ * Returns an empty array if trufflehog is not available or fails.
40
+ */
41
+ scanString(value: string): DLPDetection[];
42
+ /**
43
+ * Parse trufflehog JSON output (one JSON object per line) into DLPDetection[].
44
+ *
45
+ * Each line is an independent JSON object representing a single finding.
46
+ */
47
+ private parseOutput;
48
+ /**
49
+ * Convert a single trufflehog finding to a DLPDetection.
50
+ *
51
+ * Severity mapping:
52
+ * - Verified findings -> 'high' (credential confirmed active)
53
+ * - Unverified findings -> 'medium' (potential secret)
54
+ */
55
+ private findingToDetection;
56
+ /**
57
+ * Check if the error is simply a "no findings" situation rather than a real failure.
58
+ *
59
+ * TruffleHog may exit with code 0 and empty output, or in some versions
60
+ * it may produce an error-like message when there are no findings.
61
+ */
62
+ private isNoFindingsError;
63
+ }
64
+ //# sourceMappingURL=trufflehog-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trufflehog-backend.d.ts","sourceRoot":"","sources":["../../../src/dlp/trufflehog-backend.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiBD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAClD,QAAQ,CAAC,IAAI,gBAAgB;IAE7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,CAAC,EAAE,gBAAgB;IAKrC;;;;;;;;;OASG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE;IAqCzC;;;;OAIG;IACH,OAAO,CAAC,WAAW;IA2BnB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAiC1B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAK1B"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TruffleHogBackend = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const fs_1 = require("fs");
6
+ const os_1 = require("os");
7
+ const path_1 = require("path");
8
+ const crypto_1 = require("crypto");
9
+ /**
10
+ * DLP backend that delegates secret scanning to the TruffleHog binary.
11
+ *
12
+ * TruffleHog is a comprehensive secret scanner that supports 700+ detector
13
+ * types including verified credential checks against live services.
14
+ *
15
+ * This backend writes the input string to a temporary file, runs
16
+ * `trufflehog filesystem --json --no-update <tmpfile>`, and parses the
17
+ * line-delimited JSON output into DLPDetection objects.
18
+ *
19
+ * Graceful degradation: if the trufflehog binary is not installed or the
20
+ * process fails for any reason, the backend logs a warning and returns an
21
+ * empty array (no detections). This allows it to be safely composed with
22
+ * other backends without breaking the pipeline.
23
+ */
24
+ class TruffleHogBackend {
25
+ constructor(config) {
26
+ this.name = 'trufflehog';
27
+ this.binaryPath = config?.binaryPath ?? 'trufflehog';
28
+ this.timeout = config?.timeout ?? 10000;
29
+ }
30
+ /**
31
+ * Scan a string for secrets using trufflehog.
32
+ *
33
+ * 1. Writes the value to a temp file
34
+ * 2. Runs trufflehog filesystem in JSON mode
35
+ * 3. Parses each JSON line into a DLPDetection
36
+ * 4. Cleans up the temp file
37
+ *
38
+ * Returns an empty array if trufflehog is not available or fails.
39
+ */
40
+ scanString(value) {
41
+ const tmpFile = (0, path_1.join)((0, os_1.tmpdir)(), `palaryn-dlp-${(0, crypto_1.randomUUID)()}.tmp`);
42
+ try {
43
+ // Write input to temp file for trufflehog to scan
44
+ (0, fs_1.writeFileSync)(tmpFile, value, 'utf-8');
45
+ // Execute trufflehog
46
+ const stdout = (0, child_process_1.execFileSync)(this.binaryPath, ['filesystem', '--json', '--no-update', tmpFile], {
47
+ timeout: this.timeout,
48
+ encoding: 'utf-8',
49
+ stdio: ['pipe', 'pipe', 'pipe'],
50
+ });
51
+ return this.parseOutput(stdout, value);
52
+ }
53
+ catch (err) {
54
+ // Graceful degradation: log and return empty
55
+ const message = err instanceof Error ? err.message : String(err);
56
+ // Only log if it's not a "no findings" exit (trufflehog exits 0 with no output when clean)
57
+ if (!this.isNoFindingsError(message)) {
58
+ console.warn(`[TruffleHogBackend] scan failed: ${message}`);
59
+ }
60
+ return [];
61
+ }
62
+ finally {
63
+ // Always clean up the temp file
64
+ try {
65
+ (0, fs_1.unlinkSync)(tmpFile);
66
+ }
67
+ catch {
68
+ // Ignore cleanup errors
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * Parse trufflehog JSON output (one JSON object per line) into DLPDetection[].
74
+ *
75
+ * Each line is an independent JSON object representing a single finding.
76
+ */
77
+ parseOutput(stdout, originalValue) {
78
+ if (!stdout || !stdout.trim()) {
79
+ return [];
80
+ }
81
+ const detections = [];
82
+ const lines = stdout.trim().split('\n');
83
+ for (const line of lines) {
84
+ const trimmed = line.trim();
85
+ if (!trimmed)
86
+ continue;
87
+ try {
88
+ const finding = JSON.parse(trimmed);
89
+ const detection = this.findingToDetection(finding, originalValue);
90
+ if (detection) {
91
+ detections.push(detection);
92
+ }
93
+ }
94
+ catch {
95
+ // Skip malformed JSON lines
96
+ continue;
97
+ }
98
+ }
99
+ return detections;
100
+ }
101
+ /**
102
+ * Convert a single trufflehog finding to a DLPDetection.
103
+ *
104
+ * Severity mapping:
105
+ * - Verified findings -> 'high' (credential confirmed active)
106
+ * - Unverified findings -> 'medium' (potential secret)
107
+ */
108
+ findingToDetection(finding, originalValue) {
109
+ const detectorName = finding.DetectorName;
110
+ if (!detectorName) {
111
+ return null;
112
+ }
113
+ const raw = finding.Raw || finding.RawV2 || '';
114
+ const severity = finding.Verified ? 'high' : 'medium';
115
+ // Locate the raw finding within the original string
116
+ let start = 0;
117
+ let end = 0;
118
+ if (raw) {
119
+ const idx = originalValue.indexOf(raw);
120
+ if (idx !== -1) {
121
+ start = idx;
122
+ end = idx + raw.length;
123
+ }
124
+ else {
125
+ // If we can't locate the raw match, use the full string range
126
+ start = 0;
127
+ end = originalValue.length;
128
+ }
129
+ }
130
+ return {
131
+ pattern_name: `trufflehog:${detectorName}`,
132
+ severity,
133
+ match: raw || originalValue,
134
+ start,
135
+ end,
136
+ };
137
+ }
138
+ /**
139
+ * Check if the error is simply a "no findings" situation rather than a real failure.
140
+ *
141
+ * TruffleHog may exit with code 0 and empty output, or in some versions
142
+ * it may produce an error-like message when there are no findings.
143
+ */
144
+ isNoFindingsError(message) {
145
+ // execFileSync throws if the process exits with non-zero or produces no output
146
+ // for an empty scan. Check for common benign patterns.
147
+ return message.includes('ENOENT') === false && message.includes('ETIMEDOUT') === false;
148
+ }
149
+ }
150
+ exports.TruffleHogBackend = TruffleHogBackend;
151
+ //# sourceMappingURL=trufflehog-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trufflehog-backend.js","sourceRoot":"","sources":["../../../src/dlp/trufflehog-backend.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAC7C,2BAA+C;AAC/C,2BAA4B;AAC5B,+BAA4B;AAC5B,mCAAoC;AA6BpC;;;;;;;;;;;;;;GAcG;AACH,MAAa,iBAAiB;IAM5B,YAAY,MAAyB;QAL5B,SAAI,GAAG,YAAY,CAAC;QAM3B,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,YAAY,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,KAAM,CAAC;IAC3C,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU,CAAC,KAAa;QACtB,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,IAAA,WAAM,GAAE,EAAE,eAAe,IAAA,mBAAU,GAAE,MAAM,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,kDAAkD;YAClD,IAAA,kBAAa,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAEvC,qBAAqB;YACrB,MAAM,MAAM,GAAG,IAAA,4BAAY,EACzB,IAAI,CAAC,UAAU,EACf,CAAC,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAChD;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CACF,CAAC;YAEF,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,6CAA6C;YAC7C,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,2FAA2F;YAC3F,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,gCAAgC;YAChC,IAAI,CAAC;gBACH,IAAA,eAAU,EAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,MAAc,EAAE,aAAqB;QACvD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAmB,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAsB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAClE,IAAI,SAAS,EAAE,CAAC;oBACd,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;gBAC5B,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACK,kBAAkB,CAAC,OAA0B,EAAE,aAAqB;QAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAgB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEnE,oDAAoD;QACpD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,KAAK,GAAG,GAAG,CAAC;gBACZ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,8DAA8D;gBAC9D,KAAK,GAAG,CAAC,CAAC;gBACV,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO;YACL,YAAY,EAAE,cAAc,YAAY,EAAE;YAC1C,QAAQ;YACR,KAAK,EAAE,GAAG,IAAI,aAAa;YAC3B,KAAK;YACL,GAAG;SACJ,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,OAAe;QACvC,+EAA+E;QAC/E,uDAAuD;QACvD,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC;IACzF,CAAC;CACF;AA7ID,8CA6IC"}
@@ -0,0 +1,25 @@
1
+ import { ToolCall } from '../types/tool-call';
2
+ import { ToolOutput } from '../types/tool-result';
3
+ import { ExecutorConfig } from '../types/config';
4
+ import { ToolExecutor } from './interfaces';
5
+ /**
6
+ * Check whether an IP address belongs to a private/reserved range.
7
+ * Blocks: loopback, link-local, private (RFC 1918), metadata endpoints,
8
+ * broadcast, multicast, and IPv6 equivalents.
9
+ */
10
+ export declare function isPrivateIP(ip: string): boolean;
11
+ export declare class HttpExecutor implements ToolExecutor {
12
+ private config;
13
+ private cache;
14
+ /** Set to false to disable SSRF protection (for testing only). */
15
+ ssrfProtectionEnabled: boolean;
16
+ constructor(config: ExecutorConfig);
17
+ execute(toolCall: ToolCall): Promise<ToolOutput>;
18
+ private makeRequest;
19
+ private getCacheKey;
20
+ private getFromCache;
21
+ private setCache;
22
+ clearCache(): void;
23
+ private sleep;
24
+ }
25
+ //# sourceMappingURL=http-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-executor.d.ts","sourceRoot":"","sources":["../../../src/executor/http-executor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAK5C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CA0C/C;AAwCD,qBAAa,YAAa,YAAW,YAAY;IAC/C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAA0B;IACvC,kEAAkE;IAC3D,qBAAqB,EAAE,OAAO,CAAQ;gBAEjC,MAAM,EAAE,cAAc;IAM5B,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAmEtD,OAAO,CAAC,WAAW;IAwGnB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,QAAQ;IAahB,UAAU,IAAI,IAAI;IAKlB,OAAO,CAAC,KAAK;CAGd"}