shield360 1.1.0 → 1.2.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 (393) hide show
  1. package/README.md +330 -3
  2. package/dist/__tests__/build-info.test.js +8 -1
  3. package/dist/__tests__/build-info.test.js.map +1 -1
  4. package/dist/__tests__/code-location.test.js +1 -1
  5. package/dist/__tests__/masking.test.d.ts +1 -0
  6. package/dist/__tests__/masking.test.js +66 -0
  7. package/dist/__tests__/masking.test.js.map +1 -0
  8. package/dist/__tests__/register.e2e.test.d.ts +1 -0
  9. package/dist/__tests__/register.e2e.test.js +264 -0
  10. package/dist/__tests__/register.e2e.test.js.map +1 -0
  11. package/dist/__tests__/register.test.js +60 -0
  12. package/dist/__tests__/register.test.js.map +1 -1
  13. package/dist/agents/__tests__/agents.test.d.ts +1 -0
  14. package/dist/agents/__tests__/agents.test.js +529 -0
  15. package/dist/agents/__tests__/agents.test.js.map +1 -0
  16. package/dist/agents/index.d.ts +15 -0
  17. package/dist/agents/index.js +25 -0
  18. package/dist/agents/index.js.map +1 -0
  19. package/dist/agents/passport.d.ts +92 -0
  20. package/dist/agents/passport.js +301 -0
  21. package/dist/agents/passport.js.map +1 -0
  22. package/dist/agents/policy.d.ts +24 -0
  23. package/dist/agents/policy.js +93 -0
  24. package/dist/agents/policy.js.map +1 -0
  25. package/dist/agents/replay.d.ts +20 -0
  26. package/dist/agents/replay.js +47 -0
  27. package/dist/agents/replay.js.map +1 -0
  28. package/dist/agents/report.d.ts +30 -0
  29. package/dist/agents/report.js +93 -0
  30. package/dist/agents/report.js.map +1 -0
  31. package/dist/agents/types.d.ts +148 -0
  32. package/dist/agents/types.js +37 -0
  33. package/dist/agents/types.js.map +1 -0
  34. package/dist/agents/verifier.d.ts +33 -0
  35. package/dist/agents/verifier.js +276 -0
  36. package/dist/agents/verifier.js.map +1 -0
  37. package/dist/ai-security/__tests__/bench.test.d.ts +1 -0
  38. package/dist/ai-security/__tests__/bench.test.js +50 -0
  39. package/dist/ai-security/__tests__/bench.test.js.map +1 -0
  40. package/dist/ai-security/__tests__/checks.test.d.ts +1 -0
  41. package/dist/ai-security/__tests__/checks.test.js +248 -0
  42. package/dist/ai-security/__tests__/checks.test.js.map +1 -0
  43. package/dist/ai-security/__tests__/config.test.d.ts +1 -0
  44. package/dist/ai-security/__tests__/config.test.js +164 -0
  45. package/dist/ai-security/__tests__/config.test.js.map +1 -0
  46. package/dist/ai-security/__tests__/detection.test.d.ts +1 -0
  47. package/dist/ai-security/__tests__/detection.test.js +114 -0
  48. package/dist/ai-security/__tests__/detection.test.js.map +1 -0
  49. package/dist/ai-security/__tests__/fixtures.d.ts +8 -0
  50. package/dist/ai-security/__tests__/fixtures.js +30 -0
  51. package/dist/ai-security/__tests__/fixtures.js.map +1 -0
  52. package/dist/ai-security/__tests__/hooks.test.d.ts +1 -0
  53. package/dist/ai-security/__tests__/hooks.test.js +174 -0
  54. package/dist/ai-security/__tests__/hooks.test.js.map +1 -0
  55. package/dist/ai-security/__tests__/stream.test.d.ts +1 -0
  56. package/dist/ai-security/__tests__/stream.test.js +85 -0
  57. package/dist/ai-security/__tests__/stream.test.js.map +1 -0
  58. package/dist/ai-security/config.d.ts +94 -0
  59. package/dist/ai-security/config.js +241 -0
  60. package/dist/ai-security/config.js.map +1 -0
  61. package/dist/ai-security/context.d.ts +45 -0
  62. package/dist/ai-security/context.js +108 -0
  63. package/dist/ai-security/context.js.map +1 -0
  64. package/dist/ai-security/custom-kinds.d.ts +23 -0
  65. package/dist/ai-security/custom-kinds.js +97 -0
  66. package/dist/ai-security/custom-kinds.js.map +1 -0
  67. package/dist/ai-security/events.d.ts +77 -0
  68. package/dist/ai-security/events.js +153 -0
  69. package/dist/ai-security/events.js.map +1 -0
  70. package/dist/ai-security/hooks.d.ts +48 -0
  71. package/dist/ai-security/hooks.js +461 -0
  72. package/dist/ai-security/hooks.js.map +1 -0
  73. package/dist/ai-security/index.d.ts +209 -0
  74. package/dist/ai-security/index.js +587 -0
  75. package/dist/ai-security/index.js.map +1 -0
  76. package/dist/ai-security/injection-rules.json +1024 -0
  77. package/dist/ai-security/injection.d.ts +46 -0
  78. package/dist/ai-security/injection.js +635 -0
  79. package/dist/ai-security/injection.js.map +1 -0
  80. package/dist/ai-security/jailbreak.d.ts +38 -0
  81. package/dist/ai-security/jailbreak.js +73 -0
  82. package/dist/ai-security/jailbreak.js.map +1 -0
  83. package/dist/ai-security/limits.d.ts +84 -0
  84. package/dist/ai-security/limits.js +195 -0
  85. package/dist/ai-security/limits.js.map +1 -0
  86. package/dist/ai-security/mcp.d.ts +82 -0
  87. package/dist/ai-security/mcp.js +150 -0
  88. package/dist/ai-security/mcp.js.map +1 -0
  89. package/dist/ai-security/output.d.ts +107 -0
  90. package/dist/ai-security/output.js +390 -0
  91. package/dist/ai-security/output.js.map +1 -0
  92. package/dist/ai-security/policy.d.ts +125 -0
  93. package/dist/ai-security/policy.js +196 -0
  94. package/dist/ai-security/policy.js.map +1 -0
  95. package/dist/ai-security/rag.d.ts +70 -0
  96. package/dist/ai-security/rag.js +174 -0
  97. package/dist/ai-security/rag.js.map +1 -0
  98. package/dist/ai-security/tool-rules.json +203 -0
  99. package/dist/ai-security/tools.d.ts +46 -0
  100. package/dist/ai-security/tools.js +62 -0
  101. package/dist/ai-security/tools.js.map +1 -0
  102. package/dist/budgets/__tests__/budgets.test.d.ts +1 -0
  103. package/dist/budgets/__tests__/budgets.test.js +134 -0
  104. package/dist/budgets/__tests__/budgets.test.js.map +1 -0
  105. package/dist/budgets/auto.d.ts +25 -0
  106. package/dist/budgets/auto.js +63 -0
  107. package/dist/budgets/auto.js.map +1 -0
  108. package/dist/budgets/index.d.ts +110 -0
  109. package/dist/budgets/index.js +239 -0
  110. package/dist/budgets/index.js.map +1 -0
  111. package/dist/customer/__tests__/customer.test.d.ts +1 -0
  112. package/dist/customer/__tests__/customer.test.js +155 -0
  113. package/dist/customer/__tests__/customer.test.js.map +1 -0
  114. package/dist/customer/index.d.ts +48 -0
  115. package/dist/customer/index.js +132 -0
  116. package/dist/customer/index.js.map +1 -0
  117. package/dist/feedback/__tests__/feedback.test.d.ts +1 -0
  118. package/dist/feedback/__tests__/feedback.test.js +80 -0
  119. package/dist/feedback/__tests__/feedback.test.js.map +1 -0
  120. package/dist/feedback/index.d.ts +48 -0
  121. package/dist/feedback/index.js +97 -0
  122. package/dist/feedback/index.js.map +1 -0
  123. package/dist/flags/__tests__/flags.test.d.ts +1 -0
  124. package/dist/flags/__tests__/flags.test.js +301 -0
  125. package/dist/flags/__tests__/flags.test.js.map +1 -0
  126. package/dist/flags/client.d.ts +131 -0
  127. package/dist/flags/client.js +301 -0
  128. package/dist/flags/client.js.map +1 -0
  129. package/dist/flags/engine.d.ts +200 -0
  130. package/dist/flags/engine.js +677 -0
  131. package/dist/flags/engine.js.map +1 -0
  132. package/dist/flags/index.d.ts +4 -0
  133. package/dist/flags/index.js +16 -0
  134. package/dist/flags/index.js.map +1 -0
  135. package/dist/guard/__tests__/findings.test.js +1 -1
  136. package/dist/guard/__tests__/report.test.js +67 -0
  137. package/dist/guard/__tests__/report.test.js.map +1 -1
  138. package/dist/guard/heartbeat.d.ts +34 -0
  139. package/dist/guard/heartbeat.js +83 -0
  140. package/dist/guard/heartbeat.js.map +1 -0
  141. package/dist/guard/integration.d.ts +9 -0
  142. package/dist/guard/integration.js +4 -2
  143. package/dist/guard/integration.js.map +1 -1
  144. package/dist/guard/report.d.ts +24 -1
  145. package/dist/guard/report.js +67 -18
  146. package/dist/guard/report.js.map +1 -1
  147. package/dist/index.d.ts +88 -0
  148. package/dist/index.js +193 -2
  149. package/dist/index.js.map +1 -1
  150. package/dist/instrumentation/__tests__/langchain-wrapper.test.js +1 -1
  151. package/dist/instrumentation/__tests__/langchain-wrapper.test.js.map +1 -1
  152. package/dist/instrumentation/anthropic/wrapper.js +4 -0
  153. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  154. package/dist/instrumentation/openai/wrapper.js +6 -0
  155. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  156. package/dist/masking.d.ts +42 -0
  157. package/dist/masking.js +197 -0
  158. package/dist/masking.js.map +1 -0
  159. package/dist/otel/__tests__/app-logs-safety.test.d.ts +1 -0
  160. package/dist/otel/__tests__/app-logs-safety.test.js +129 -0
  161. package/dist/otel/__tests__/app-logs-safety.test.js.map +1 -0
  162. package/dist/otel/__tests__/app-logs.test.d.ts +1 -0
  163. package/dist/otel/__tests__/app-logs.test.js +269 -0
  164. package/dist/otel/__tests__/app-logs.test.js.map +1 -0
  165. package/dist/otel/__tests__/log-auto.test.d.ts +1 -0
  166. package/dist/otel/__tests__/log-auto.test.js +125 -0
  167. package/dist/otel/__tests__/log-auto.test.js.map +1 -0
  168. package/dist/otel/__tests__/log-bridges.test.d.ts +1 -0
  169. package/dist/otel/__tests__/log-bridges.test.js +170 -0
  170. package/dist/otel/__tests__/log-bridges.test.js.map +1 -0
  171. package/dist/otel/__tests__/system-metrics.test.d.ts +1 -0
  172. package/dist/otel/__tests__/system-metrics.test.js +79 -0
  173. package/dist/otel/__tests__/system-metrics.test.js.map +1 -0
  174. package/dist/otel/app-logs.d.ts +80 -0
  175. package/dist/otel/app-logs.js +195 -0
  176. package/dist/otel/app-logs.js.map +1 -0
  177. package/dist/otel/build-info.d.ts +2 -1
  178. package/dist/otel/build-info.js +3 -2
  179. package/dist/otel/build-info.js.map +1 -1
  180. package/dist/otel/events.d.ts +1 -0
  181. package/dist/otel/events.js +21 -12
  182. package/dist/otel/events.js.map +1 -1
  183. package/dist/otel/log-auto.d.ts +44 -0
  184. package/dist/otel/log-auto.js +200 -0
  185. package/dist/otel/log-auto.js.map +1 -0
  186. package/dist/otel/log-bridges.d.ts +54 -0
  187. package/dist/otel/log-bridges.js +307 -0
  188. package/dist/otel/log-bridges.js.map +1 -0
  189. package/dist/otel/system-metrics.d.ts +39 -0
  190. package/dist/otel/system-metrics.js +166 -0
  191. package/dist/otel/system-metrics.js.map +1 -0
  192. package/dist/otel/tracing.js +5 -1
  193. package/dist/otel/tracing.js.map +1 -1
  194. package/dist/protect/__tests__/protect.test.js +4 -0
  195. package/dist/protect/__tests__/protect.test.js.map +1 -1
  196. package/dist/protect/index.js +9 -4
  197. package/dist/protect/index.js.map +1 -1
  198. package/dist/rasp/__tests__/auto-http.test.d.ts +1 -0
  199. package/dist/rasp/__tests__/auto-http.test.js +136 -0
  200. package/dist/rasp/__tests__/auto-http.test.js.map +1 -0
  201. package/dist/rasp/__tests__/baseline.test.d.ts +1 -0
  202. package/dist/rasp/__tests__/baseline.test.js +86 -0
  203. package/dist/rasp/__tests__/baseline.test.js.map +1 -0
  204. package/dist/rasp/__tests__/benign-corpus.test.d.ts +1 -0
  205. package/dist/rasp/__tests__/benign-corpus.test.js +68 -0
  206. package/dist/rasp/__tests__/benign-corpus.test.js.map +1 -0
  207. package/dist/rasp/__tests__/capture-context.test.d.ts +1 -0
  208. package/dist/rasp/__tests__/capture-context.test.js +135 -0
  209. package/dist/rasp/__tests__/capture-context.test.js.map +1 -0
  210. package/dist/rasp/__tests__/code-hook.test.d.ts +1 -0
  211. package/dist/rasp/__tests__/code-hook.test.js +218 -0
  212. package/dist/rasp/__tests__/code-hook.test.js.map +1 -0
  213. package/dist/rasp/__tests__/config-client.test.d.ts +1 -0
  214. package/dist/rasp/__tests__/config-client.test.js +283 -0
  215. package/dist/rasp/__tests__/config-client.test.js.map +1 -0
  216. package/dist/rasp/__tests__/corpus.d.ts +13 -0
  217. package/dist/rasp/__tests__/corpus.js +111 -0
  218. package/dist/rasp/__tests__/corpus.js.map +1 -0
  219. package/dist/rasp/__tests__/custom-rules.test.d.ts +1 -0
  220. package/dist/rasp/__tests__/custom-rules.test.js +276 -0
  221. package/dist/rasp/__tests__/custom-rules.test.js.map +1 -0
  222. package/dist/rasp/__tests__/db-hook.test.d.ts +1 -0
  223. package/dist/rasp/__tests__/db-hook.test.js +438 -0
  224. package/dist/rasp/__tests__/db-hook.test.js.map +1 -0
  225. package/dist/rasp/__tests__/deception.test.d.ts +1 -0
  226. package/dist/rasp/__tests__/deception.test.js +567 -0
  227. package/dist/rasp/__tests__/deception.test.js.map +1 -0
  228. package/dist/rasp/__tests__/detect.test.d.ts +1 -0
  229. package/dist/rasp/__tests__/detect.test.js +276 -0
  230. package/dist/rasp/__tests__/detect.test.js.map +1 -0
  231. package/dist/rasp/__tests__/esm-exports.test.d.ts +1 -0
  232. package/dist/rasp/__tests__/esm-exports.test.js +20 -0
  233. package/dist/rasp/__tests__/esm-exports.test.js.map +1 -0
  234. package/dist/rasp/__tests__/fs-hook.test.d.ts +1 -0
  235. package/dist/rasp/__tests__/fs-hook.test.js +241 -0
  236. package/dist/rasp/__tests__/fs-hook.test.js.map +1 -0
  237. package/dist/rasp/__tests__/hook-contracts.test.d.ts +1 -0
  238. package/dist/rasp/__tests__/hook-contracts.test.js +201 -0
  239. package/dist/rasp/__tests__/hook-contracts.test.js.map +1 -0
  240. package/dist/rasp/__tests__/hook-kit.d.ts +42 -0
  241. package/dist/rasp/__tests__/hook-kit.js +139 -0
  242. package/dist/rasp/__tests__/hook-kit.js.map +1 -0
  243. package/dist/rasp/__tests__/http-hook.test.d.ts +1 -0
  244. package/dist/rasp/__tests__/http-hook.test.js +250 -0
  245. package/dist/rasp/__tests__/http-hook.test.js.map +1 -0
  246. package/dist/rasp/__tests__/iast.test.d.ts +1 -0
  247. package/dist/rasp/__tests__/iast.test.js +361 -0
  248. package/dist/rasp/__tests__/iast.test.js.map +1 -0
  249. package/dist/rasp/__tests__/include-hook.test.d.ts +1 -0
  250. package/dist/rasp/__tests__/include-hook.test.js +122 -0
  251. package/dist/rasp/__tests__/include-hook.test.js.map +1 -0
  252. package/dist/rasp/__tests__/middleware.test.d.ts +1 -0
  253. package/dist/rasp/__tests__/middleware.test.js +302 -0
  254. package/dist/rasp/__tests__/middleware.test.js.map +1 -0
  255. package/dist/rasp/__tests__/process-hook.test.d.ts +1 -0
  256. package/dist/rasp/__tests__/process-hook.test.js +238 -0
  257. package/dist/rasp/__tests__/process-hook.test.js.map +1 -0
  258. package/dist/rasp/__tests__/reporter.test.d.ts +1 -0
  259. package/dist/rasp/__tests__/reporter.test.js +114 -0
  260. package/dist/rasp/__tests__/reporter.test.js.map +1 -0
  261. package/dist/rasp/__tests__/route.test.d.ts +1 -0
  262. package/dist/rasp/__tests__/route.test.js +46 -0
  263. package/dist/rasp/__tests__/route.test.js.map +1 -0
  264. package/dist/rasp/__tests__/rule-expr.test.d.ts +1 -0
  265. package/dist/rasp/__tests__/rule-expr.test.js +151 -0
  266. package/dist/rasp/__tests__/rule-expr.test.js.map +1 -0
  267. package/dist/rasp/__tests__/rule-phases.test.d.ts +1 -0
  268. package/dist/rasp/__tests__/rule-phases.test.js +271 -0
  269. package/dist/rasp/__tests__/rule-phases.test.js.map +1 -0
  270. package/dist/rasp/__tests__/sinks-hook.test.d.ts +1 -0
  271. package/dist/rasp/__tests__/sinks-hook.test.js +177 -0
  272. package/dist/rasp/__tests__/sinks-hook.test.js.map +1 -0
  273. package/dist/rasp/__tests__/targets.test.d.ts +1 -0
  274. package/dist/rasp/__tests__/targets.test.js +82 -0
  275. package/dist/rasp/__tests__/targets.test.js.map +1 -0
  276. package/dist/rasp/__tests__/template-hook.test.d.ts +1 -0
  277. package/dist/rasp/__tests__/template-hook.test.js +254 -0
  278. package/dist/rasp/__tests__/template-hook.test.js.map +1 -0
  279. package/dist/rasp/__tests__/upload.test.d.ts +1 -0
  280. package/dist/rasp/__tests__/upload.test.js +81 -0
  281. package/dist/rasp/__tests__/upload.test.js.map +1 -0
  282. package/dist/rasp/__tests__/vpatch-engine.test.d.ts +1 -0
  283. package/dist/rasp/__tests__/vpatch-engine.test.js +177 -0
  284. package/dist/rasp/__tests__/vpatch-engine.test.js.map +1 -0
  285. package/dist/rasp/auto-http.d.ts +6 -0
  286. package/dist/rasp/auto-http.js +194 -0
  287. package/dist/rasp/auto-http.js.map +1 -0
  288. package/dist/rasp/baseline.d.ts +35 -0
  289. package/dist/rasp/baseline.js +91 -0
  290. package/dist/rasp/baseline.js.map +1 -0
  291. package/dist/rasp/capture.d.ts +76 -0
  292. package/dist/rasp/capture.js +304 -0
  293. package/dist/rasp/capture.js.map +1 -0
  294. package/dist/rasp/config-client.d.ts +122 -0
  295. package/dist/rasp/config-client.js +337 -0
  296. package/dist/rasp/config-client.js.map +1 -0
  297. package/dist/rasp/context.d.ts +65 -0
  298. package/dist/rasp/context.js +68 -0
  299. package/dist/rasp/context.js.map +1 -0
  300. package/dist/rasp/custom-rules.d.ts +68 -0
  301. package/dist/rasp/custom-rules.js +222 -0
  302. package/dist/rasp/custom-rules.js.map +1 -0
  303. package/dist/rasp/data/default-rules.json +199 -0
  304. package/dist/rasp/data/default-sinks.json +4 -0
  305. package/dist/rasp/data/dnslog-domains.json +11 -0
  306. package/dist/rasp/deception.d.ts +70 -0
  307. package/dist/rasp/deception.js +220 -0
  308. package/dist/rasp/deception.js.map +1 -0
  309. package/dist/rasp/detect.d.ts +68 -0
  310. package/dist/rasp/detect.js +671 -0
  311. package/dist/rasp/detect.js.map +1 -0
  312. package/dist/rasp/engine.d.ts +107 -0
  313. package/dist/rasp/engine.js +330 -0
  314. package/dist/rasp/engine.js.map +1 -0
  315. package/dist/rasp/hooks/code.d.ts +20 -0
  316. package/dist/rasp/hooks/code.js +334 -0
  317. package/dist/rasp/hooks/code.js.map +1 -0
  318. package/dist/rasp/hooks/db.d.ts +48 -0
  319. package/dist/rasp/hooks/db.js +322 -0
  320. package/dist/rasp/hooks/db.js.map +1 -0
  321. package/dist/rasp/hooks/esm.d.ts +7 -0
  322. package/dist/rasp/hooks/esm.js +18 -0
  323. package/dist/rasp/hooks/esm.js.map +1 -0
  324. package/dist/rasp/hooks/fs.d.ts +3 -0
  325. package/dist/rasp/hooks/fs.js +206 -0
  326. package/dist/rasp/hooks/fs.js.map +1 -0
  327. package/dist/rasp/hooks/http.d.ts +4 -0
  328. package/dist/rasp/hooks/http.js +213 -0
  329. package/dist/rasp/hooks/http.js.map +1 -0
  330. package/dist/rasp/hooks/include.d.ts +9 -0
  331. package/dist/rasp/hooks/include.js +79 -0
  332. package/dist/rasp/hooks/include.js.map +1 -0
  333. package/dist/rasp/hooks/marks.d.ts +2 -0
  334. package/dist/rasp/hooks/marks.js +16 -0
  335. package/dist/rasp/hooks/marks.js.map +1 -0
  336. package/dist/rasp/hooks/process.d.ts +22 -0
  337. package/dist/rasp/hooks/process.js +191 -0
  338. package/dist/rasp/hooks/process.js.map +1 -0
  339. package/dist/rasp/hooks/sinks.d.ts +54 -0
  340. package/dist/rasp/hooks/sinks.js +329 -0
  341. package/dist/rasp/hooks/sinks.js.map +1 -0
  342. package/dist/rasp/hooks/template.d.ts +21 -0
  343. package/dist/rasp/hooks/template.js +152 -0
  344. package/dist/rasp/hooks/template.js.map +1 -0
  345. package/dist/rasp/iast-rules.d.ts +82 -0
  346. package/dist/rasp/iast-rules.js +240 -0
  347. package/dist/rasp/iast-rules.js.map +1 -0
  348. package/dist/rasp/iast-scope.d.ts +29 -0
  349. package/dist/rasp/iast-scope.js +54 -0
  350. package/dist/rasp/iast-scope.js.map +1 -0
  351. package/dist/rasp/iast.d.ts +81 -0
  352. package/dist/rasp/iast.js +272 -0
  353. package/dist/rasp/iast.js.map +1 -0
  354. package/dist/rasp/index.d.ts +52 -0
  355. package/dist/rasp/index.js +280 -0
  356. package/dist/rasp/index.js.map +1 -0
  357. package/dist/rasp/lexers.d.ts +32 -0
  358. package/dist/rasp/lexers.js +444 -0
  359. package/dist/rasp/lexers.js.map +1 -0
  360. package/dist/rasp/middleware.d.ts +155 -0
  361. package/dist/rasp/middleware.js +568 -0
  362. package/dist/rasp/middleware.js.map +1 -0
  363. package/dist/rasp/model-output.d.ts +14 -0
  364. package/dist/rasp/model-output.js +107 -0
  365. package/dist/rasp/model-output.js.map +1 -0
  366. package/dist/rasp/normalize.d.ts +23 -0
  367. package/dist/rasp/normalize.js +140 -0
  368. package/dist/rasp/normalize.js.map +1 -0
  369. package/dist/rasp/reporter.d.ts +60 -0
  370. package/dist/rasp/reporter.js +230 -0
  371. package/dist/rasp/reporter.js.map +1 -0
  372. package/dist/rasp/rule-expr.d.ts +236 -0
  373. package/dist/rasp/rule-expr.js +1253 -0
  374. package/dist/rasp/rule-expr.js.map +1 -0
  375. package/dist/rasp/template.d.ts +53 -0
  376. package/dist/rasp/template.js +336 -0
  377. package/dist/rasp/template.js.map +1 -0
  378. package/dist/rasp/types.d.ts +110 -0
  379. package/dist/rasp/types.js +51 -0
  380. package/dist/rasp/types.js.map +1 -0
  381. package/dist/rasp/vpatch.d.ts +55 -0
  382. package/dist/rasp/vpatch.js +120 -0
  383. package/dist/rasp/vpatch.js.map +1 -0
  384. package/dist/register.js +52 -11
  385. package/dist/register.js.map +1 -1
  386. package/dist/semantic-convention.d.ts +2 -0
  387. package/dist/semantic-convention.js +5 -0
  388. package/dist/semantic-convention.js.map +1 -1
  389. package/dist/types.d.ts +75 -1
  390. package/dist/zero-code.d.ts +8 -0
  391. package/dist/zero-code.js +38 -0
  392. package/dist/zero-code.js.map +1 -0
  393. package/package.json +18 -2
@@ -9,18 +9,7 @@ class Events {
9
9
  static setup(options) {
10
10
  try {
11
11
  if (!EVENTS_SET) {
12
- const existingProvider = api_logs_1.logs.getLoggerProvider();
13
- const isSDKProvider = existingProvider &&
14
- typeof existingProvider.forceFlush === 'function' &&
15
- existingProvider.constructor.name !== 'NoopLoggerProvider';
16
- if (isSDKProvider) {
17
- this.loggerProvider = existingProvider;
18
- }
19
- else {
20
- this.loggerProvider = Events.buildLoggerProvider(options);
21
- api_logs_1.logs.setGlobalLoggerProvider(this.loggerProvider);
22
- }
23
- this.logger = this.loggerProvider.getLogger('shield360');
12
+ this.logger = this.ensureProvider(options).getLogger('shield360');
24
13
  EVENTS_SET = true;
25
14
  }
26
15
  return this.logger;
@@ -30,6 +19,24 @@ class Events {
30
19
  return null;
31
20
  }
32
21
  }
22
+ // SHIELD: the provider on its own, so application logs (app-logs.ts) can
23
+ // share it — same exporter, same destination — even with GenAI events off.
24
+ static ensureProvider(options) {
25
+ if (!this.loggerProvider) {
26
+ const existingProvider = api_logs_1.logs.getLoggerProvider();
27
+ const isSDKProvider = existingProvider &&
28
+ typeof existingProvider.forceFlush === 'function' &&
29
+ existingProvider.constructor.name !== 'NoopLoggerProvider';
30
+ if (isSDKProvider) {
31
+ this.loggerProvider = existingProvider;
32
+ }
33
+ else {
34
+ this.loggerProvider = Events.buildLoggerProvider(options);
35
+ api_logs_1.logs.setGlobalLoggerProvider(this.loggerProvider);
36
+ }
37
+ }
38
+ return this.loggerProvider;
39
+ }
33
40
  static buildLoggerProvider(options) {
34
41
  const exporterList = (0, utils_1.parseExporters)('OTEL_LOGS_EXPORTER');
35
42
  const processors = [];
@@ -68,6 +75,8 @@ class Events {
68
75
  }
69
76
  static resetForTesting() {
70
77
  EVENTS_SET = false;
78
+ this.loggerProvider = undefined;
79
+ this.logger = undefined;
71
80
  }
72
81
  }
73
82
  exports.default = Events;
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/otel/events.ts"],"names":[],"mappings":";;AAAA,sDAA+C;AAC/C,sDAMiC;AACjC,oFAAyE;AAEzE,mCAAyC;AAEzC,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,MAAqB,MAAM;IAIzB,MAAM,CAAC,KAAK,CAAC,OAA2B;QACtC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,gBAAgB,GAAG,eAAI,CAAC,iBAAiB,EAAE,CAAC;gBAClD,MAAM,aAAa,GACjB,gBAAgB;oBAChB,OAAQ,gBAAwB,CAAC,UAAU,KAAK,UAAU;oBAC1D,gBAAgB,CAAC,WAAW,CAAC,IAAI,KAAK,oBAAoB,CAAC;gBAE7D,IAAI,aAAa,EAAE,CAAC;oBAClB,IAAI,CAAC,cAAc,GAAG,gBAA6C,CAAC;gBACtE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;oBAC1D,eAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACpD,CAAC;gBAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACzD,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YAED,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,OAA2B;QAC5D,MAAM,YAAY,GAAG,IAAA,sBAAc,EAAC,oBAAoB,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBACpB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,UAAU,CAAC,IAAI,CAAC,IAAI,mCAAwB,CAAC,EAAE,QAAQ,EAAE,IAAI,mCAAwB,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,IAAI,mCAAwB,CAAC,EAAE,QAAQ,EAAE,IAAI,mCAAwB,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;QAED,OAAO,IAAI,yBAAc,CAAC;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAChC,OAA2B;QAE3B,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,yCAAe,CAAC;YACnC,GAAG;YACH,OAAO,EAAE,OAAO,CAAC,WAAiD;SACnE,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,YAAY;YACzB,CAAC,CAAC,IAAI,mCAAwB,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC5C,CAAC,CAAC,IAAI,kCAAuB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,eAAe;QACpB,UAAU,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAzED,yBAyEC"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/otel/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * winston and pino, bridged without code changes when application logs are on.
3
+ *
4
+ * With `captureLogs: true` (or SHIELD360_CAPTURE_LOGS=true), init() hooks the
5
+ * loggers an app already uses, through OpenTelemetry's module hooks
6
+ * (@opentelemetry/instrumentation), the way OpenTelemetry's own winston and
7
+ * pino instrumentations do:
8
+ *
9
+ * winston every winston.createLogger() also gets the Shield360 transport
10
+ * (log-bridges.ts), built on the app's own winston.Transport. A
11
+ * winston already loaded before init() is patched in place.
12
+ * pino every pino() logger writes to its destination and to the
13
+ * Shield360 stream (pino.multistream), so output is unchanged.
14
+ * Loggers created before init() are not changed: create them after
15
+ * init(), or add Shield360.pinoStream() yourself.
16
+ *
17
+ * The hooks are inert while application logs are off, so turning them off
18
+ * later stops new loggers being bridged. Nothing here throws into the app: if
19
+ * a logger cannot be bridged it is created exactly as it would have been.
20
+ */
21
+ import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';
22
+ declare const ORIGINAL: unique symbol;
23
+ type AnyFunction = ((...args: any[]) => any) & {
24
+ [ORIGINAL]?: AnyFunction;
25
+ [key: string | symbol]: any;
26
+ };
27
+ /** Makes winston.createLogger() add the Shield360 transport. Returns the module. */
28
+ export declare function patchWinston(winston: any): any;
29
+ export declare function unpatchWinston(winston: any): void;
30
+ /**
31
+ * pino's arguments with the Shield360 stream added, or null to call pino
32
+ * unchanged: pino(), pino(opts), pino(stream), pino(opts, stream),
33
+ * pino(opts, 'path'), and opts.transport.
34
+ */
35
+ export declare function bridgePinoArgs(pino: AnyFunction, args: unknown[]): unknown[] | null;
36
+ /** A pino function whose loggers also write to Shield360. Returns the module to use. */
37
+ export declare function patchPino(pino: any): any;
38
+ export declare class Shield360LogBridgeInstrumentation extends InstrumentationBase {
39
+ constructor();
40
+ protected init(): InstrumentationNodeModuleDefinition[];
41
+ }
42
+ /** Hooks winston and pino (once). Called by init() when application logs are on. */
43
+ export declare function enableLogBridges(): void;
44
+ export {};
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Shield360LogBridgeInstrumentation = void 0;
4
+ exports.patchWinston = patchWinston;
5
+ exports.unpatchWinston = unpatchWinston;
6
+ exports.bridgePinoArgs = bridgePinoArgs;
7
+ exports.patchPino = patchPino;
8
+ exports.enableLogBridges = enableLogBridges;
9
+ /**
10
+ * winston and pino, bridged without code changes when application logs are on.
11
+ *
12
+ * With `captureLogs: true` (or SHIELD360_CAPTURE_LOGS=true), init() hooks the
13
+ * loggers an app already uses, through OpenTelemetry's module hooks
14
+ * (@opentelemetry/instrumentation), the way OpenTelemetry's own winston and
15
+ * pino instrumentations do:
16
+ *
17
+ * winston every winston.createLogger() also gets the Shield360 transport
18
+ * (log-bridges.ts), built on the app's own winston.Transport. A
19
+ * winston already loaded before init() is patched in place.
20
+ * pino every pino() logger writes to its destination and to the
21
+ * Shield360 stream (pino.multistream), so output is unchanged.
22
+ * Loggers created before init() are not changed: create them after
23
+ * init(), or add Shield360.pinoStream() yourself.
24
+ *
25
+ * The hooks are inert while application logs are off, so turning them off
26
+ * later stops new loggers being bridged. Nothing here throws into the app: if
27
+ * a logger cannot be bridged it is created exactly as it would have been.
28
+ */
29
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
30
+ const constant_1 = require("../constant");
31
+ const app_logs_1 = require("./app-logs");
32
+ const log_bridges_1 = require("./log-bridges");
33
+ const ORIGINAL = Symbol.for('shield360.logBridge.original');
34
+ const BRIDGED = Symbol.for('shield360.logBridge.transport');
35
+ // ---------------------------------------------------------------- winston
36
+ /** Makes winston.createLogger() add the Shield360 transport. Returns the module. */
37
+ function patchWinston(winston) {
38
+ try {
39
+ if (!winston || typeof winston.createLogger !== 'function' || winston.createLogger[ORIGINAL])
40
+ return winston;
41
+ if (typeof winston.Transport !== 'function')
42
+ return winston;
43
+ const Shield360Transport = (0, log_bridges_1.winstonTransport)(winston.Transport);
44
+ const original = winston.createLogger;
45
+ const patched = function (...args) {
46
+ const logger = original.apply(this, args);
47
+ if (!(0, app_logs_1.appLogsEnabled)())
48
+ return logger;
49
+ try {
50
+ const transports = Array.isArray(logger?.transports) ? logger.transports : [];
51
+ if (!transports.some((t) => t?.[BRIDGED])) {
52
+ const transport = new Shield360Transport();
53
+ transport[BRIDGED] = true;
54
+ logger.add(transport);
55
+ }
56
+ }
57
+ catch {
58
+ // The logger works as created.
59
+ }
60
+ return logger;
61
+ };
62
+ patched[ORIGINAL] = original;
63
+ winston.createLogger = patched;
64
+ }
65
+ catch {
66
+ // Left unpatched.
67
+ }
68
+ return winston;
69
+ }
70
+ function unpatchWinston(winston) {
71
+ try {
72
+ const original = winston?.createLogger?.[ORIGINAL];
73
+ if (original)
74
+ winston.createLogger = original;
75
+ }
76
+ catch {
77
+ // Nothing to undo.
78
+ }
79
+ }
80
+ // ------------------------------------------------------------------- pino
81
+ function isStream(value) {
82
+ return !!value && typeof value.write === 'function';
83
+ }
84
+ /**
85
+ * pino's arguments with the Shield360 stream added, or null to call pino
86
+ * unchanged: pino(), pino(opts), pino(stream), pino(opts, stream),
87
+ * pino(opts, 'path'), and opts.transport.
88
+ */
89
+ function bridgePinoArgs(pino, args) {
90
+ let [opts, stream] = args;
91
+ if (args.length > 2)
92
+ return null;
93
+ if (stream === undefined && (isStream(opts) || typeof opts === 'string')) {
94
+ stream = opts;
95
+ opts = {};
96
+ }
97
+ if (opts === undefined || opts === null)
98
+ opts = {};
99
+ if (typeof opts !== 'object' || Array.isArray(opts))
100
+ return null;
101
+ let options = opts;
102
+ if (typeof pino.multistream !== 'function' || typeof pino.destination !== 'function')
103
+ return null;
104
+ if (options.transport) {
105
+ if (stream !== undefined)
106
+ return null; // pino refuses both; let it say so
107
+ if (typeof pino.transport !== 'function')
108
+ return null;
109
+ stream = pino.transport(options.transport);
110
+ options = { ...options };
111
+ delete options.transport;
112
+ }
113
+ if (stream === undefined)
114
+ stream = pino.destination((process.stdout && process.stdout.fd) || 1);
115
+ else if (typeof stream === 'string' || typeof stream === 'number')
116
+ stream = pino.destination(stream);
117
+ if (!isStream(stream))
118
+ return null;
119
+ // levelVal 0: both streams see every record the logger itself lets through.
120
+ const streams = pino.multistream([
121
+ { levelVal: 0, stream },
122
+ { levelVal: 0, stream: (0, log_bridges_1.pinoStream)() },
123
+ ]);
124
+ return [options, streams];
125
+ }
126
+ /** A pino function whose loggers also write to Shield360. Returns the module to use. */
127
+ function patchPino(pino) {
128
+ try {
129
+ if (typeof pino !== 'function' || pino[ORIGINAL])
130
+ return pino;
131
+ const original = pino;
132
+ const patched = function (...args) {
133
+ if ((0, app_logs_1.appLogsEnabled)()) {
134
+ let bridged = null;
135
+ try {
136
+ bridged = bridgePinoArgs(original, args);
137
+ }
138
+ catch {
139
+ bridged = null;
140
+ }
141
+ if (bridged)
142
+ return original.apply(this, bridged);
143
+ }
144
+ return original.apply(this, args);
145
+ };
146
+ Object.assign(patched, original);
147
+ patched[ORIGINAL] = original;
148
+ patched.default = patched;
149
+ patched.pino = patched;
150
+ return patched;
151
+ }
152
+ catch {
153
+ return pino;
154
+ }
155
+ }
156
+ // -------------------------------------------------------------- the hooks
157
+ class Shield360LogBridgeInstrumentation extends instrumentation_1.InstrumentationBase {
158
+ constructor() {
159
+ super(`${constant_1.INSTRUMENTATION_PREFIX}/instrumentation-log-bridges`, '1.0.0', {});
160
+ }
161
+ init() {
162
+ return [
163
+ new instrumentation_1.InstrumentationNodeModuleDefinition('winston', ['>=3 <4'], (moduleExports) => patchWinston(moduleExports), (moduleExports) => unpatchWinston(moduleExports)),
164
+ new instrumentation_1.InstrumentationNodeModuleDefinition('pino', ['>=7 <11'], (moduleExports) => patchPino(moduleExports),
165
+ // The patched function is inert while application logs are off.
166
+ (moduleExports) => moduleExports),
167
+ ];
168
+ }
169
+ }
170
+ exports.Shield360LogBridgeInstrumentation = Shield360LogBridgeInstrumentation;
171
+ let instrumentation = null;
172
+ /** winston loaded before init(): patched in place, since its createLogger is read at call time. */
173
+ function patchLoadedWinston() {
174
+ try {
175
+ const cache = typeof require !== 'undefined' ? require.cache : undefined;
176
+ if (!cache)
177
+ return;
178
+ for (const [file, mod] of Object.entries(cache)) {
179
+ if (mod && /[\\/]node_modules[\\/]winston[\\/]lib[\\/]winston\.js$/.test(file))
180
+ patchWinston(mod.exports);
181
+ }
182
+ }
183
+ catch {
184
+ // Nothing loaded, or nothing to patch.
185
+ }
186
+ }
187
+ /** Hooks winston and pino (once). Called by init() when application logs are on. */
188
+ function enableLogBridges() {
189
+ try {
190
+ if (!instrumentation)
191
+ instrumentation = new Shield360LogBridgeInstrumentation();
192
+ else
193
+ instrumentation.enable();
194
+ patchLoadedWinston();
195
+ }
196
+ catch {
197
+ // Application logs still work through Shield360.logger() and the explicit bridges.
198
+ }
199
+ }
200
+ //# sourceMappingURL=log-auto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-auto.js","sourceRoot":"","sources":["../../src/otel/log-auto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { createLimiter, type LogLevel } from './app-logs';
2
+ export { createLimiter };
3
+ export type BridgeOptions = {
4
+ /** The instrumentation scope; defaults to the bridge's name (pino, winston, console). */
5
+ name?: string;
6
+ /** Records per second at most (default 500). */
7
+ maxPerSecond?: number;
8
+ };
9
+ export declare function pinoLevel(level: unknown): LogLevel;
10
+ /**
11
+ * A pino destination: `pino({}, pino.multistream([{ stream: process.stdout }, { stream: Shield360.pinoStream() }]))`.
12
+ * Each line pino writes is one JSON record; `msg` becomes the body, `level`
13
+ * the severity, `err` the exception attributes, the rest attributes.
14
+ */
15
+ export declare function pinoStream(options?: BridgeOptions): {
16
+ write(line: string): boolean;
17
+ };
18
+ type TransportBase = new (options?: Record<string, unknown>) => {
19
+ emit?(event: string, ...args: unknown[]): boolean;
20
+ };
21
+ export declare function winstonLevel(level: unknown): LogLevel;
22
+ /**
23
+ * A winston transport class on the app's own `winston-transport`:
24
+ *
25
+ * import Transport from 'winston-transport';
26
+ * const Shield360Transport = Shield360.winstonTransport(Transport);
27
+ * winston.createLogger({ transports: [new winston.transports.Console(), new Shield360Transport()] });
28
+ */
29
+ export declare function winstonTransport(Transport: TransportBase, options?: BridgeOptions): {
30
+ new (options?: Record<string, unknown>): {
31
+ log(info: Record<string | symbol, unknown>, callback?: () => void): void;
32
+ emit?(event: string, ...args: unknown[]): boolean;
33
+ };
34
+ };
35
+ /** Copies console output to Shield360 application logs (still printed as before). Call releaseConsole() to stop. */
36
+ export declare function captureConsole(options?: BridgeOptions): void;
37
+ /** Puts console back as it was. */
38
+ export declare function releaseConsole(): void;
39
+ type WritableLike = {
40
+ write: (...args: any[]) => boolean;
41
+ };
42
+ export type StdioOptions = BridgeOptions & {
43
+ /** The streams to copy; process.stdout and process.stderr by default (tests pass their own). */
44
+ stdout?: WritableLike;
45
+ stderr?: WritableLike;
46
+ };
47
+ /**
48
+ * Copies every line written to stdout and stderr to Shield360 application logs; the output itself
49
+ * is unchanged. JSON lines keep their level, message, fields and error; plain lines are info on
50
+ * stdout and error on stderr. Lines split across writes are joined. Call releaseStdio() to stop.
51
+ */
52
+ export declare function captureStdio(options?: StdioOptions): void;
53
+ /** Puts stdout and stderr back as they were. */
54
+ export declare function releaseStdio(): void;