shield360 1.0.1 → 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 (424) hide show
  1. package/README.md +392 -37
  2. package/dist/__tests__/build-info.test.d.ts +1 -0
  3. package/dist/__tests__/build-info.test.js +196 -0
  4. package/dist/__tests__/build-info.test.js.map +1 -0
  5. package/dist/__tests__/code-location.test.d.ts +1 -0
  6. package/dist/__tests__/code-location.test.js +180 -0
  7. package/dist/__tests__/code-location.test.js.map +1 -0
  8. package/dist/__tests__/masking.test.d.ts +1 -0
  9. package/dist/__tests__/masking.test.js +66 -0
  10. package/dist/__tests__/masking.test.js.map +1 -0
  11. package/dist/__tests__/pricing-claude-5.test.js +3 -0
  12. package/dist/__tests__/pricing-claude-5.test.js.map +1 -1
  13. package/dist/__tests__/register.e2e.test.d.ts +1 -0
  14. package/dist/__tests__/register.e2e.test.js +264 -0
  15. package/dist/__tests__/register.e2e.test.js.map +1 -0
  16. package/dist/__tests__/register.test.js +60 -0
  17. package/dist/__tests__/register.test.js.map +1 -1
  18. package/dist/agents/__tests__/agents.test.d.ts +1 -0
  19. package/dist/agents/__tests__/agents.test.js +529 -0
  20. package/dist/agents/__tests__/agents.test.js.map +1 -0
  21. package/dist/agents/index.d.ts +15 -0
  22. package/dist/agents/index.js +25 -0
  23. package/dist/agents/index.js.map +1 -0
  24. package/dist/agents/passport.d.ts +92 -0
  25. package/dist/agents/passport.js +301 -0
  26. package/dist/agents/passport.js.map +1 -0
  27. package/dist/agents/policy.d.ts +24 -0
  28. package/dist/agents/policy.js +93 -0
  29. package/dist/agents/policy.js.map +1 -0
  30. package/dist/agents/replay.d.ts +20 -0
  31. package/dist/agents/replay.js +47 -0
  32. package/dist/agents/replay.js.map +1 -0
  33. package/dist/agents/report.d.ts +30 -0
  34. package/dist/agents/report.js +93 -0
  35. package/dist/agents/report.js.map +1 -0
  36. package/dist/agents/types.d.ts +148 -0
  37. package/dist/agents/types.js +37 -0
  38. package/dist/agents/types.js.map +1 -0
  39. package/dist/agents/verifier.d.ts +33 -0
  40. package/dist/agents/verifier.js +276 -0
  41. package/dist/agents/verifier.js.map +1 -0
  42. package/dist/ai-security/__tests__/bench.test.d.ts +1 -0
  43. package/dist/ai-security/__tests__/bench.test.js +50 -0
  44. package/dist/ai-security/__tests__/bench.test.js.map +1 -0
  45. package/dist/ai-security/__tests__/checks.test.d.ts +1 -0
  46. package/dist/ai-security/__tests__/checks.test.js +248 -0
  47. package/dist/ai-security/__tests__/checks.test.js.map +1 -0
  48. package/dist/ai-security/__tests__/config.test.d.ts +1 -0
  49. package/dist/ai-security/__tests__/config.test.js +164 -0
  50. package/dist/ai-security/__tests__/config.test.js.map +1 -0
  51. package/dist/ai-security/__tests__/detection.test.d.ts +1 -0
  52. package/dist/ai-security/__tests__/detection.test.js +114 -0
  53. package/dist/ai-security/__tests__/detection.test.js.map +1 -0
  54. package/dist/ai-security/__tests__/fixtures.d.ts +8 -0
  55. package/dist/ai-security/__tests__/fixtures.js +30 -0
  56. package/dist/ai-security/__tests__/fixtures.js.map +1 -0
  57. package/dist/ai-security/__tests__/hooks.test.d.ts +1 -0
  58. package/dist/ai-security/__tests__/hooks.test.js +174 -0
  59. package/dist/ai-security/__tests__/hooks.test.js.map +1 -0
  60. package/dist/ai-security/__tests__/stream.test.d.ts +1 -0
  61. package/dist/ai-security/__tests__/stream.test.js +85 -0
  62. package/dist/ai-security/__tests__/stream.test.js.map +1 -0
  63. package/dist/ai-security/config.d.ts +94 -0
  64. package/dist/ai-security/config.js +241 -0
  65. package/dist/ai-security/config.js.map +1 -0
  66. package/dist/ai-security/context.d.ts +45 -0
  67. package/dist/ai-security/context.js +108 -0
  68. package/dist/ai-security/context.js.map +1 -0
  69. package/dist/ai-security/custom-kinds.d.ts +23 -0
  70. package/dist/ai-security/custom-kinds.js +97 -0
  71. package/dist/ai-security/custom-kinds.js.map +1 -0
  72. package/dist/ai-security/events.d.ts +77 -0
  73. package/dist/ai-security/events.js +153 -0
  74. package/dist/ai-security/events.js.map +1 -0
  75. package/dist/ai-security/hooks.d.ts +48 -0
  76. package/dist/ai-security/hooks.js +461 -0
  77. package/dist/ai-security/hooks.js.map +1 -0
  78. package/dist/ai-security/index.d.ts +209 -0
  79. package/dist/ai-security/index.js +587 -0
  80. package/dist/ai-security/index.js.map +1 -0
  81. package/dist/ai-security/injection-rules.json +1024 -0
  82. package/dist/ai-security/injection.d.ts +46 -0
  83. package/dist/ai-security/injection.js +635 -0
  84. package/dist/ai-security/injection.js.map +1 -0
  85. package/dist/ai-security/jailbreak.d.ts +38 -0
  86. package/dist/ai-security/jailbreak.js +73 -0
  87. package/dist/ai-security/jailbreak.js.map +1 -0
  88. package/dist/ai-security/limits.d.ts +84 -0
  89. package/dist/ai-security/limits.js +195 -0
  90. package/dist/ai-security/limits.js.map +1 -0
  91. package/dist/ai-security/mcp.d.ts +82 -0
  92. package/dist/ai-security/mcp.js +150 -0
  93. package/dist/ai-security/mcp.js.map +1 -0
  94. package/dist/ai-security/output.d.ts +107 -0
  95. package/dist/ai-security/output.js +390 -0
  96. package/dist/ai-security/output.js.map +1 -0
  97. package/dist/ai-security/policy.d.ts +125 -0
  98. package/dist/ai-security/policy.js +196 -0
  99. package/dist/ai-security/policy.js.map +1 -0
  100. package/dist/ai-security/rag.d.ts +70 -0
  101. package/dist/ai-security/rag.js +174 -0
  102. package/dist/ai-security/rag.js.map +1 -0
  103. package/dist/ai-security/tool-rules.json +203 -0
  104. package/dist/ai-security/tools.d.ts +46 -0
  105. package/dist/ai-security/tools.js +62 -0
  106. package/dist/ai-security/tools.js.map +1 -0
  107. package/dist/budgets/__tests__/budgets.test.d.ts +1 -0
  108. package/dist/budgets/__tests__/budgets.test.js +134 -0
  109. package/dist/budgets/__tests__/budgets.test.js.map +1 -0
  110. package/dist/budgets/auto.d.ts +25 -0
  111. package/dist/budgets/auto.js +63 -0
  112. package/dist/budgets/auto.js.map +1 -0
  113. package/dist/budgets/index.d.ts +110 -0
  114. package/dist/budgets/index.js +239 -0
  115. package/dist/budgets/index.js.map +1 -0
  116. package/dist/config.js +1 -1
  117. package/dist/config.js.map +1 -1
  118. package/dist/customer/__tests__/customer.test.d.ts +1 -0
  119. package/dist/customer/__tests__/customer.test.js +155 -0
  120. package/dist/customer/__tests__/customer.test.js.map +1 -0
  121. package/dist/customer/index.d.ts +48 -0
  122. package/dist/customer/index.js +132 -0
  123. package/dist/customer/index.js.map +1 -0
  124. package/dist/feedback/__tests__/feedback.test.d.ts +1 -0
  125. package/dist/feedback/__tests__/feedback.test.js +80 -0
  126. package/dist/feedback/__tests__/feedback.test.js.map +1 -0
  127. package/dist/feedback/index.d.ts +48 -0
  128. package/dist/feedback/index.js +97 -0
  129. package/dist/feedback/index.js.map +1 -0
  130. package/dist/flags/__tests__/flags.test.d.ts +1 -0
  131. package/dist/flags/__tests__/flags.test.js +301 -0
  132. package/dist/flags/__tests__/flags.test.js.map +1 -0
  133. package/dist/flags/client.d.ts +131 -0
  134. package/dist/flags/client.js +301 -0
  135. package/dist/flags/client.js.map +1 -0
  136. package/dist/flags/engine.d.ts +200 -0
  137. package/dist/flags/engine.js +677 -0
  138. package/dist/flags/engine.js.map +1 -0
  139. package/dist/flags/index.d.ts +4 -0
  140. package/dist/flags/index.js +16 -0
  141. package/dist/flags/index.js.map +1 -0
  142. package/dist/guard/__tests__/findings.test.js +28 -9
  143. package/dist/guard/__tests__/findings.test.js.map +1 -1
  144. package/dist/guard/__tests__/report.test.js +67 -0
  145. package/dist/guard/__tests__/report.test.js.map +1 -1
  146. package/dist/guard/base.d.ts +2 -0
  147. package/dist/guard/base.js +4 -0
  148. package/dist/guard/base.js.map +1 -1
  149. package/dist/guard/findings.d.ts +12 -2
  150. package/dist/guard/findings.js +19 -49
  151. package/dist/guard/findings.js.map +1 -1
  152. package/dist/guard/heartbeat.d.ts +34 -0
  153. package/dist/guard/heartbeat.js +83 -0
  154. package/dist/guard/heartbeat.js.map +1 -0
  155. package/dist/guard/integration.d.ts +33 -3
  156. package/dist/guard/integration.js +106 -32
  157. package/dist/guard/integration.js.map +1 -1
  158. package/dist/guard/pipeline.d.ts +10 -1
  159. package/dist/guard/pipeline.js +14 -0
  160. package/dist/guard/pipeline.js.map +1 -1
  161. package/dist/guard/report.d.ts +24 -1
  162. package/dist/guard/report.js +67 -18
  163. package/dist/guard/report.js.map +1 -1
  164. package/dist/index.d.ts +90 -0
  165. package/dist/index.js +225 -3
  166. package/dist/index.js.map +1 -1
  167. package/dist/instrumentation/__tests__/langchain-wrapper.test.js +1 -1
  168. package/dist/instrumentation/__tests__/langchain-wrapper.test.js.map +1 -1
  169. package/dist/instrumentation/anthropic/wrapper.js +4 -0
  170. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  171. package/dist/instrumentation/mcp/wrapper.js +7 -1
  172. package/dist/instrumentation/mcp/wrapper.js.map +1 -1
  173. package/dist/instrumentation/openai/wrapper.js +6 -0
  174. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  175. package/dist/masking.d.ts +42 -0
  176. package/dist/masking.js +197 -0
  177. package/dist/masking.js.map +1 -0
  178. package/dist/otel/__tests__/app-logs-safety.test.d.ts +1 -0
  179. package/dist/otel/__tests__/app-logs-safety.test.js +129 -0
  180. package/dist/otel/__tests__/app-logs-safety.test.js.map +1 -0
  181. package/dist/otel/__tests__/app-logs.test.d.ts +1 -0
  182. package/dist/otel/__tests__/app-logs.test.js +269 -0
  183. package/dist/otel/__tests__/app-logs.test.js.map +1 -0
  184. package/dist/otel/__tests__/log-auto.test.d.ts +1 -0
  185. package/dist/otel/__tests__/log-auto.test.js +125 -0
  186. package/dist/otel/__tests__/log-auto.test.js.map +1 -0
  187. package/dist/otel/__tests__/log-bridges.test.d.ts +1 -0
  188. package/dist/otel/__tests__/log-bridges.test.js +170 -0
  189. package/dist/otel/__tests__/log-bridges.test.js.map +1 -0
  190. package/dist/otel/__tests__/system-metrics.test.d.ts +1 -0
  191. package/dist/otel/__tests__/system-metrics.test.js +79 -0
  192. package/dist/otel/__tests__/system-metrics.test.js.map +1 -0
  193. package/dist/otel/app-logs.d.ts +80 -0
  194. package/dist/otel/app-logs.js +195 -0
  195. package/dist/otel/app-logs.js.map +1 -0
  196. package/dist/otel/build-info.d.ts +23 -0
  197. package/dist/otel/build-info.js +176 -0
  198. package/dist/otel/build-info.js.map +1 -0
  199. package/dist/otel/code-location.d.ts +49 -0
  200. package/dist/otel/code-location.js +233 -0
  201. package/dist/otel/code-location.js.map +1 -0
  202. package/dist/otel/events.d.ts +1 -0
  203. package/dist/otel/events.js +21 -12
  204. package/dist/otel/events.js.map +1 -1
  205. package/dist/otel/log-auto.d.ts +44 -0
  206. package/dist/otel/log-auto.js +200 -0
  207. package/dist/otel/log-auto.js.map +1 -0
  208. package/dist/otel/log-bridges.d.ts +54 -0
  209. package/dist/otel/log-bridges.js +307 -0
  210. package/dist/otel/log-bridges.js.map +1 -0
  211. package/dist/otel/system-metrics.d.ts +39 -0
  212. package/dist/otel/system-metrics.js +166 -0
  213. package/dist/otel/system-metrics.js.map +1 -0
  214. package/dist/otel/tracing.js +12 -1
  215. package/dist/otel/tracing.js.map +1 -1
  216. package/dist/pricing.json +100 -42
  217. package/dist/protect/__tests__/protect.test.d.ts +1 -0
  218. package/dist/protect/__tests__/protect.test.js +210 -0
  219. package/dist/protect/__tests__/protect.test.js.map +1 -0
  220. package/dist/protect/index.d.ts +103 -0
  221. package/dist/protect/index.js +196 -0
  222. package/dist/protect/index.js.map +1 -0
  223. package/dist/protect/mcp.d.ts +13 -0
  224. package/dist/protect/mcp.js +49 -0
  225. package/dist/protect/mcp.js.map +1 -0
  226. package/dist/protect/mode.d.ts +89 -0
  227. package/dist/protect/mode.js +134 -0
  228. package/dist/protect/mode.js.map +1 -0
  229. package/dist/rasp/__tests__/auto-http.test.d.ts +1 -0
  230. package/dist/rasp/__tests__/auto-http.test.js +136 -0
  231. package/dist/rasp/__tests__/auto-http.test.js.map +1 -0
  232. package/dist/rasp/__tests__/baseline.test.d.ts +1 -0
  233. package/dist/rasp/__tests__/baseline.test.js +86 -0
  234. package/dist/rasp/__tests__/baseline.test.js.map +1 -0
  235. package/dist/rasp/__tests__/benign-corpus.test.d.ts +1 -0
  236. package/dist/rasp/__tests__/benign-corpus.test.js +68 -0
  237. package/dist/rasp/__tests__/benign-corpus.test.js.map +1 -0
  238. package/dist/rasp/__tests__/capture-context.test.d.ts +1 -0
  239. package/dist/rasp/__tests__/capture-context.test.js +135 -0
  240. package/dist/rasp/__tests__/capture-context.test.js.map +1 -0
  241. package/dist/rasp/__tests__/code-hook.test.d.ts +1 -0
  242. package/dist/rasp/__tests__/code-hook.test.js +218 -0
  243. package/dist/rasp/__tests__/code-hook.test.js.map +1 -0
  244. package/dist/rasp/__tests__/config-client.test.d.ts +1 -0
  245. package/dist/rasp/__tests__/config-client.test.js +283 -0
  246. package/dist/rasp/__tests__/config-client.test.js.map +1 -0
  247. package/dist/rasp/__tests__/corpus.d.ts +13 -0
  248. package/dist/rasp/__tests__/corpus.js +111 -0
  249. package/dist/rasp/__tests__/corpus.js.map +1 -0
  250. package/dist/rasp/__tests__/custom-rules.test.d.ts +1 -0
  251. package/dist/rasp/__tests__/custom-rules.test.js +276 -0
  252. package/dist/rasp/__tests__/custom-rules.test.js.map +1 -0
  253. package/dist/rasp/__tests__/db-hook.test.d.ts +1 -0
  254. package/dist/rasp/__tests__/db-hook.test.js +438 -0
  255. package/dist/rasp/__tests__/db-hook.test.js.map +1 -0
  256. package/dist/rasp/__tests__/deception.test.d.ts +1 -0
  257. package/dist/rasp/__tests__/deception.test.js +567 -0
  258. package/dist/rasp/__tests__/deception.test.js.map +1 -0
  259. package/dist/rasp/__tests__/detect.test.d.ts +1 -0
  260. package/dist/rasp/__tests__/detect.test.js +276 -0
  261. package/dist/rasp/__tests__/detect.test.js.map +1 -0
  262. package/dist/rasp/__tests__/esm-exports.test.d.ts +1 -0
  263. package/dist/rasp/__tests__/esm-exports.test.js +20 -0
  264. package/dist/rasp/__tests__/esm-exports.test.js.map +1 -0
  265. package/dist/rasp/__tests__/fs-hook.test.d.ts +1 -0
  266. package/dist/rasp/__tests__/fs-hook.test.js +241 -0
  267. package/dist/rasp/__tests__/fs-hook.test.js.map +1 -0
  268. package/dist/rasp/__tests__/hook-contracts.test.d.ts +1 -0
  269. package/dist/rasp/__tests__/hook-contracts.test.js +201 -0
  270. package/dist/rasp/__tests__/hook-contracts.test.js.map +1 -0
  271. package/dist/rasp/__tests__/hook-kit.d.ts +42 -0
  272. package/dist/rasp/__tests__/hook-kit.js +139 -0
  273. package/dist/rasp/__tests__/hook-kit.js.map +1 -0
  274. package/dist/rasp/__tests__/http-hook.test.d.ts +1 -0
  275. package/dist/rasp/__tests__/http-hook.test.js +250 -0
  276. package/dist/rasp/__tests__/http-hook.test.js.map +1 -0
  277. package/dist/rasp/__tests__/iast.test.d.ts +1 -0
  278. package/dist/rasp/__tests__/iast.test.js +361 -0
  279. package/dist/rasp/__tests__/iast.test.js.map +1 -0
  280. package/dist/rasp/__tests__/include-hook.test.d.ts +1 -0
  281. package/dist/rasp/__tests__/include-hook.test.js +122 -0
  282. package/dist/rasp/__tests__/include-hook.test.js.map +1 -0
  283. package/dist/rasp/__tests__/middleware.test.d.ts +1 -0
  284. package/dist/rasp/__tests__/middleware.test.js +302 -0
  285. package/dist/rasp/__tests__/middleware.test.js.map +1 -0
  286. package/dist/rasp/__tests__/process-hook.test.d.ts +1 -0
  287. package/dist/rasp/__tests__/process-hook.test.js +238 -0
  288. package/dist/rasp/__tests__/process-hook.test.js.map +1 -0
  289. package/dist/rasp/__tests__/reporter.test.d.ts +1 -0
  290. package/dist/rasp/__tests__/reporter.test.js +114 -0
  291. package/dist/rasp/__tests__/reporter.test.js.map +1 -0
  292. package/dist/rasp/__tests__/route.test.d.ts +1 -0
  293. package/dist/rasp/__tests__/route.test.js +46 -0
  294. package/dist/rasp/__tests__/route.test.js.map +1 -0
  295. package/dist/rasp/__tests__/rule-expr.test.d.ts +1 -0
  296. package/dist/rasp/__tests__/rule-expr.test.js +151 -0
  297. package/dist/rasp/__tests__/rule-expr.test.js.map +1 -0
  298. package/dist/rasp/__tests__/rule-phases.test.d.ts +1 -0
  299. package/dist/rasp/__tests__/rule-phases.test.js +271 -0
  300. package/dist/rasp/__tests__/rule-phases.test.js.map +1 -0
  301. package/dist/rasp/__tests__/sinks-hook.test.d.ts +1 -0
  302. package/dist/rasp/__tests__/sinks-hook.test.js +177 -0
  303. package/dist/rasp/__tests__/sinks-hook.test.js.map +1 -0
  304. package/dist/rasp/__tests__/targets.test.d.ts +1 -0
  305. package/dist/rasp/__tests__/targets.test.js +82 -0
  306. package/dist/rasp/__tests__/targets.test.js.map +1 -0
  307. package/dist/rasp/__tests__/template-hook.test.d.ts +1 -0
  308. package/dist/rasp/__tests__/template-hook.test.js +254 -0
  309. package/dist/rasp/__tests__/template-hook.test.js.map +1 -0
  310. package/dist/rasp/__tests__/upload.test.d.ts +1 -0
  311. package/dist/rasp/__tests__/upload.test.js +81 -0
  312. package/dist/rasp/__tests__/upload.test.js.map +1 -0
  313. package/dist/rasp/__tests__/vpatch-engine.test.d.ts +1 -0
  314. package/dist/rasp/__tests__/vpatch-engine.test.js +177 -0
  315. package/dist/rasp/__tests__/vpatch-engine.test.js.map +1 -0
  316. package/dist/rasp/auto-http.d.ts +6 -0
  317. package/dist/rasp/auto-http.js +194 -0
  318. package/dist/rasp/auto-http.js.map +1 -0
  319. package/dist/rasp/baseline.d.ts +35 -0
  320. package/dist/rasp/baseline.js +91 -0
  321. package/dist/rasp/baseline.js.map +1 -0
  322. package/dist/rasp/capture.d.ts +76 -0
  323. package/dist/rasp/capture.js +304 -0
  324. package/dist/rasp/capture.js.map +1 -0
  325. package/dist/rasp/config-client.d.ts +122 -0
  326. package/dist/rasp/config-client.js +337 -0
  327. package/dist/rasp/config-client.js.map +1 -0
  328. package/dist/rasp/context.d.ts +65 -0
  329. package/dist/rasp/context.js +68 -0
  330. package/dist/rasp/context.js.map +1 -0
  331. package/dist/rasp/custom-rules.d.ts +68 -0
  332. package/dist/rasp/custom-rules.js +222 -0
  333. package/dist/rasp/custom-rules.js.map +1 -0
  334. package/dist/rasp/data/default-rules.json +199 -0
  335. package/dist/rasp/data/default-sinks.json +4 -0
  336. package/dist/rasp/data/dnslog-domains.json +11 -0
  337. package/dist/rasp/deception.d.ts +70 -0
  338. package/dist/rasp/deception.js +220 -0
  339. package/dist/rasp/deception.js.map +1 -0
  340. package/dist/rasp/detect.d.ts +68 -0
  341. package/dist/rasp/detect.js +671 -0
  342. package/dist/rasp/detect.js.map +1 -0
  343. package/dist/rasp/engine.d.ts +107 -0
  344. package/dist/rasp/engine.js +330 -0
  345. package/dist/rasp/engine.js.map +1 -0
  346. package/dist/rasp/hooks/code.d.ts +20 -0
  347. package/dist/rasp/hooks/code.js +334 -0
  348. package/dist/rasp/hooks/code.js.map +1 -0
  349. package/dist/rasp/hooks/db.d.ts +48 -0
  350. package/dist/rasp/hooks/db.js +322 -0
  351. package/dist/rasp/hooks/db.js.map +1 -0
  352. package/dist/rasp/hooks/esm.d.ts +7 -0
  353. package/dist/rasp/hooks/esm.js +18 -0
  354. package/dist/rasp/hooks/esm.js.map +1 -0
  355. package/dist/rasp/hooks/fs.d.ts +3 -0
  356. package/dist/rasp/hooks/fs.js +206 -0
  357. package/dist/rasp/hooks/fs.js.map +1 -0
  358. package/dist/rasp/hooks/http.d.ts +4 -0
  359. package/dist/rasp/hooks/http.js +213 -0
  360. package/dist/rasp/hooks/http.js.map +1 -0
  361. package/dist/rasp/hooks/include.d.ts +9 -0
  362. package/dist/rasp/hooks/include.js +79 -0
  363. package/dist/rasp/hooks/include.js.map +1 -0
  364. package/dist/rasp/hooks/marks.d.ts +2 -0
  365. package/dist/rasp/hooks/marks.js +16 -0
  366. package/dist/rasp/hooks/marks.js.map +1 -0
  367. package/dist/rasp/hooks/process.d.ts +22 -0
  368. package/dist/rasp/hooks/process.js +191 -0
  369. package/dist/rasp/hooks/process.js.map +1 -0
  370. package/dist/rasp/hooks/sinks.d.ts +54 -0
  371. package/dist/rasp/hooks/sinks.js +329 -0
  372. package/dist/rasp/hooks/sinks.js.map +1 -0
  373. package/dist/rasp/hooks/template.d.ts +21 -0
  374. package/dist/rasp/hooks/template.js +152 -0
  375. package/dist/rasp/hooks/template.js.map +1 -0
  376. package/dist/rasp/iast-rules.d.ts +82 -0
  377. package/dist/rasp/iast-rules.js +240 -0
  378. package/dist/rasp/iast-rules.js.map +1 -0
  379. package/dist/rasp/iast-scope.d.ts +29 -0
  380. package/dist/rasp/iast-scope.js +54 -0
  381. package/dist/rasp/iast-scope.js.map +1 -0
  382. package/dist/rasp/iast.d.ts +81 -0
  383. package/dist/rasp/iast.js +272 -0
  384. package/dist/rasp/iast.js.map +1 -0
  385. package/dist/rasp/index.d.ts +52 -0
  386. package/dist/rasp/index.js +280 -0
  387. package/dist/rasp/index.js.map +1 -0
  388. package/dist/rasp/lexers.d.ts +32 -0
  389. package/dist/rasp/lexers.js +444 -0
  390. package/dist/rasp/lexers.js.map +1 -0
  391. package/dist/rasp/middleware.d.ts +155 -0
  392. package/dist/rasp/middleware.js +568 -0
  393. package/dist/rasp/middleware.js.map +1 -0
  394. package/dist/rasp/model-output.d.ts +14 -0
  395. package/dist/rasp/model-output.js +107 -0
  396. package/dist/rasp/model-output.js.map +1 -0
  397. package/dist/rasp/normalize.d.ts +23 -0
  398. package/dist/rasp/normalize.js +140 -0
  399. package/dist/rasp/normalize.js.map +1 -0
  400. package/dist/rasp/reporter.d.ts +60 -0
  401. package/dist/rasp/reporter.js +230 -0
  402. package/dist/rasp/reporter.js.map +1 -0
  403. package/dist/rasp/rule-expr.d.ts +236 -0
  404. package/dist/rasp/rule-expr.js +1253 -0
  405. package/dist/rasp/rule-expr.js.map +1 -0
  406. package/dist/rasp/template.d.ts +53 -0
  407. package/dist/rasp/template.js +336 -0
  408. package/dist/rasp/template.js.map +1 -0
  409. package/dist/rasp/types.d.ts +110 -0
  410. package/dist/rasp/types.js +51 -0
  411. package/dist/rasp/types.js.map +1 -0
  412. package/dist/rasp/vpatch.d.ts +55 -0
  413. package/dist/rasp/vpatch.js +120 -0
  414. package/dist/rasp/vpatch.js.map +1 -0
  415. package/dist/register.js +52 -11
  416. package/dist/register.js.map +1 -1
  417. package/dist/semantic-convention.d.ts +2 -0
  418. package/dist/semantic-convention.js +5 -0
  419. package/dist/semantic-convention.js.map +1 -1
  420. package/dist/types.d.ts +96 -0
  421. package/dist/zero-code.d.ts +8 -0
  422. package/dist/zero-code.js +38 -0
  423. package/dist/zero-code.js.map +1 -0
  424. package/package.json +18 -2
@@ -24,6 +24,7 @@
24
24
  */
25
25
  import { Guard } from './base';
26
26
  import { Pipeline } from './pipeline';
27
+ import { type ResolvedProtect } from '../protect/mode';
27
28
  type Extractor = (arg: any) => string;
28
29
  export declare function extractOpenAIInput(kwargs: Record<string, any>): string;
29
30
  export declare function extractOpenAIOutput(response: any): string;
@@ -31,14 +32,43 @@ export declare function extractAnthropicInput(kwargs: Record<string, any>): stri
31
32
  export declare function extractAnthropicOutput(response: any): string;
32
33
  export declare function extractGenericInput(kwargs: Record<string, any>): string;
33
34
  export declare function extractGenericOutput(response: any): string;
35
+ export interface GuardedMethod {
36
+ npmPackage: string;
37
+ protoPath: string[];
38
+ methodName: string;
39
+ extractInput: Extractor;
40
+ extractOutput: Extractor;
41
+ }
42
+ export declare const GUARDED_METHODS: GuardedMethod[];
34
43
  /** @internal exported for tests */
35
- export declare function applyPreflight(pipeline: Pipeline, kwargs: Record<string, any>, extractInput: Extractor): Record<string, any>;
44
+ export declare function applyPreflight(pipeline: Pipeline, kwargs: Record<string, any>, extractInput: Extractor, protect?: ResolvedProtect): Record<string, any>;
36
45
  /**
37
46
  * Each choice and text block is redacted on its own, so none is left holding
38
47
  * the original text or another block's.
39
48
  *
40
49
  * @internal exported for tests
41
50
  */
42
- export declare function applyPostflight(pipeline: Pipeline, response: any, extractOutput: Extractor): any;
43
- export declare function setupAutoGuards(guards: Guard[], failOpen?: boolean): void;
51
+ export declare function applyPostflight(pipeline: Pipeline, response: any, extractOutput: Extractor, protect?: ResolvedProtect): any;
52
+ export declare function resolveProto(moduleExports: any, protoPath: string[]): any;
53
+ export type AutoGuardReport = {
54
+ /** npm packages whose provider methods were wrapped. */
55
+ wrapped: string[];
56
+ /** Required packages that were not wrapped: not installed, or not resolvable from this module (an ESM-only resolution). */
57
+ missing: string[];
58
+ };
59
+ /**
60
+ * Wraps every installed provider the SDK knows. With Shield Protect in
61
+ * enforced mode the pipeline fails closed (failOpen is overridden, with a
62
+ * warning when it was set), and a package named in `required` that could
63
+ * not be wrapped throws ProtectReadinessError: protected startup fails
64
+ * rather than running unguarded.
65
+ *
66
+ * Supported module loading: CommonJS `require`, and ESM `import` of a
67
+ * provider whose package resolves to the same CommonJS build (openai and
68
+ * @anthropic-ai/sdk do under Node's default conditions). An ESM-only
69
+ * resolution loads a class this function never sees; name the package in
70
+ * `required` so enforced mode fails rather than silently not wrapping it,
71
+ * or use protectTool() which needs no patching.
72
+ */
73
+ export declare function setupAutoGuards(guards: Guard[], failOpen?: boolean, protect?: ResolvedProtect): AutoGuardReport;
44
74
  export {};
@@ -24,6 +24,7 @@
24
24
  * Must stay in sync with: sdk/python/src/shield360/guard/_integration.py
25
25
  */
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.GUARDED_METHODS = void 0;
27
28
  exports.extractOpenAIInput = extractOpenAIInput;
28
29
  exports.extractOpenAIOutput = extractOpenAIOutput;
29
30
  exports.extractAnthropicInput = extractAnthropicInput;
@@ -32,24 +33,40 @@ exports.extractGenericInput = extractGenericInput;
32
33
  exports.extractGenericOutput = extractGenericOutput;
33
34
  exports.applyPreflight = applyPreflight;
34
35
  exports.applyPostflight = applyPostflight;
36
+ exports.resolveProto = resolveProto;
35
37
  exports.setupAutoGuards = setupAutoGuards;
36
38
  const base_1 = require("./base");
37
39
  const pipeline_1 = require("./pipeline");
40
+ const mode_1 = require("../protect/mode");
41
+ /** The text in a message's content: a string, or the text parts of a list of blocks. */
42
+ function contentText(content) {
43
+ if (typeof content === 'string')
44
+ return content ? [content] : [];
45
+ if (!Array.isArray(content))
46
+ return [];
47
+ const out = [];
48
+ for (const block of content) {
49
+ if (typeof block === 'string')
50
+ out.push(block);
51
+ else if (block && typeof block === 'object' && typeof block.text === 'string')
52
+ out.push(block.text);
53
+ }
54
+ return out;
55
+ }
38
56
  function extractOpenAIInput(kwargs) {
39
57
  const messages = kwargs.messages || kwargs.input || [];
40
- if (typeof messages === 'string')
41
- return messages;
42
58
  const parts = [];
43
- if (Array.isArray(messages)) {
59
+ // The Responses API's instructions are a system prompt: scanned like one.
60
+ if (typeof kwargs.instructions === 'string' && kwargs.instructions)
61
+ parts.push(kwargs.instructions);
62
+ if (typeof messages === 'string')
63
+ parts.push(messages);
64
+ else if (Array.isArray(messages)) {
44
65
  for (const m of messages) {
45
- if (typeof m === 'object' && m !== null) {
46
- const content = m.content ?? '';
47
- if (typeof content === 'string')
48
- parts.push(content);
49
- }
50
- else if (typeof m === 'string') {
66
+ if (typeof m === 'object' && m !== null)
67
+ parts.push(...contentText(m.content));
68
+ else if (typeof m === 'string')
51
69
  parts.push(m);
52
- }
53
70
  }
54
71
  }
55
72
  return parts.join(' ');
@@ -89,6 +106,8 @@ function extractOpenAIOutput(response) {
89
106
  function extractAnthropicInput(kwargs) {
90
107
  const messages = kwargs.messages || [];
91
108
  const parts = [];
109
+ // The system prompt is input too: a string, or text blocks.
110
+ parts.push(...contentText(kwargs.system));
92
111
  if (Array.isArray(messages)) {
93
112
  for (const m of messages) {
94
113
  if (typeof m === 'object' && m !== null) {
@@ -187,7 +206,7 @@ function extractGenericOutput(response) {
187
206
  }
188
207
  return '';
189
208
  }
190
- const GUARDED_METHODS = [
209
+ exports.GUARDED_METHODS = [
191
210
  // OpenAI
192
211
  { npmPackage: 'openai', protoPath: ['OpenAI', 'Chat', 'Completions', 'prototype'], methodName: 'create', extractInput: extractOpenAIInput, extractOutput: extractOpenAIOutput },
193
212
  { npmPackage: 'openai', protoPath: ['OpenAI', 'Responses', 'prototype'], methodName: 'create', extractInput: extractOpenAIInput, extractOutput: extractOpenAIOutput },
@@ -240,15 +259,51 @@ function redactMessages(pipeline, value, phase) {
240
259
  return m;
241
260
  });
242
261
  }
262
+ /**
263
+ * Shield Protect: what a mode does with a pipeline result, and with a
264
+ * pipeline that failed. No mode (legacy): a DENY throws, as it always did.
265
+ * observe: recorded, the call goes on. warn: as observe, and logged.
266
+ * enforced: a DENY throws; a failed pipeline throws (fail closed), whatever
267
+ * failOpen says.
268
+ */
269
+ function evaluateUnder(pipeline, text, phase, protect) {
270
+ const mode = protect?.mode;
271
+ const bound = pipeline.scanBound();
272
+ if ((0, mode_1.refuses)(mode) && bound > 0 && text.length > bound) {
273
+ throw new mode_1.ProtectDeniedError('oversized', `Shield360 Protect refused the call: ${text.length} characters is more than its guards scan (${bound}); send less.`);
274
+ }
275
+ let result;
276
+ try {
277
+ result = pipeline.evaluate(text, phase);
278
+ }
279
+ catch (e) {
280
+ if ((0, mode_1.refuses)(mode)) {
281
+ throw new mode_1.ProtectDeniedError('guard_failed', 'Shield360 Protect refused the call: a guard failed and enforced mode does not run unchecked calls.');
282
+ }
283
+ throw e;
284
+ }
285
+ if (result.action === base_1.GuardAction.DENY) {
286
+ if (mode === undefined || (0, mode_1.refuses)(mode))
287
+ throw new base_1.GuardDeniedError(result);
288
+ if (mode === 'warn')
289
+ console.warn(`[shield360] Protect (warn mode): the call would have been refused at ${phase}: ${result.explanation}`);
290
+ // observe / warn: recorded by the pipeline's own span event; the call goes on.
291
+ return { ...result, action: base_1.GuardAction.WARN };
292
+ }
293
+ return result;
294
+ }
243
295
  /** @internal exported for tests */
244
- function applyPreflight(pipeline, kwargs, extractInput) {
296
+ function applyPreflight(pipeline, kwargs, extractInput, protect) {
245
297
  const inputText = extractInput(kwargs);
246
298
  if (!inputText)
247
299
  return kwargs;
248
- const result = pipeline.evaluate(inputText, 'preflight');
249
- if (result.action === base_1.GuardAction.DENY) {
250
- throw new base_1.GuardDeniedError(result);
300
+ // A streamed completion cannot be inspected after the fact. Enforced mode
301
+ // with postflight guards refuses it rather than let the response through
302
+ // unread; with preflight-only guards the stream is fine.
303
+ if ((0, mode_1.refuses)(protect?.mode) && kwargs.stream === true && pipeline.hasPhase(base_1.GuardPhase.POSTFLIGHT)) {
304
+ throw new mode_1.ProtectDeniedError('streaming', 'Shield360 Protect refused a streamed completion: postflight guards cannot inspect a stream. Call without stream, or configure preflight-only guards.');
251
305
  }
306
+ const result = evaluateUnder(pipeline, inputText, 'preflight', protect);
252
307
  if (result.action === base_1.GuardAction.REDACT && result.transformedText !== null) {
253
308
  for (const key of ['messages', 'input', 'prompt', 'text']) {
254
309
  if (key in kwargs) {
@@ -269,14 +324,11 @@ function redactTextField(pipeline, obj, field) {
269
324
  *
270
325
  * @internal exported for tests
271
326
  */
272
- function applyPostflight(pipeline, response, extractOutput) {
327
+ function applyPostflight(pipeline, response, extractOutput, protect) {
273
328
  const outputText = extractOutput(response);
274
329
  if (!outputText)
275
330
  return response;
276
- const result = pipeline.evaluate(outputText, 'postflight');
277
- if (result.action === base_1.GuardAction.DENY) {
278
- throw new base_1.GuardDeniedError(result);
279
- }
331
+ const result = evaluateUnder(pipeline, outputText, 'postflight', protect);
280
332
  if (result.action === base_1.GuardAction.REDACT && result.transformedText !== null) {
281
333
  try {
282
334
  if (Array.isArray(response?.choices) && response.choices.length > 0) {
@@ -322,11 +374,27 @@ function resolveProto(moduleExports, protoPath) {
322
374
  }
323
375
  return obj;
324
376
  }
325
- // ---------------------------------------------------------------------------
326
- // Public entry point
327
- // ---------------------------------------------------------------------------
328
- function setupAutoGuards(guards, failOpen = true) {
329
- const pipeline = new pipeline_1.Pipeline({ guards, failOpen });
377
+ /**
378
+ * Wraps every installed provider the SDK knows. With Shield Protect in
379
+ * enforced mode the pipeline fails closed (failOpen is overridden, with a
380
+ * warning when it was set), and a package named in `required` that could
381
+ * not be wrapped throws ProtectReadinessError: protected startup fails
382
+ * rather than running unguarded.
383
+ *
384
+ * Supported module loading: CommonJS `require`, and ESM `import` of a
385
+ * provider whose package resolves to the same CommonJS build (openai and
386
+ * @anthropic-ai/sdk do under Node's default conditions). An ESM-only
387
+ * resolution loads a class this function never sees; name the package in
388
+ * `required` so enforced mode fails rather than silently not wrapping it,
389
+ * or use protectTool() which needs no patching.
390
+ */
391
+ function setupAutoGuards(guards, failOpen = true, protect) {
392
+ let effectiveFailOpen = failOpen;
393
+ if ((0, mode_1.refuses)(protect?.mode) && failOpen) {
394
+ console.warn('[shield360] Protect: enforced mode fails closed; guardFailOpen is ignored.');
395
+ effectiveFailOpen = false;
396
+ }
397
+ const pipeline = new pipeline_1.Pipeline({ guards, failOpen: effectiveFailOpen });
330
398
  try {
331
399
  const Shield360Config = require('../config').default;
332
400
  Shield360Config.guardPipeline = pipeline;
@@ -334,8 +402,8 @@ function setupAutoGuards(guards, failOpen = true) {
334
402
  catch {
335
403
  // config not available
336
404
  }
337
- let wrappedCount = 0;
338
- for (const { npmPackage, protoPath, methodName, extractInput, extractOutput } of GUARDED_METHODS) {
405
+ const wrapped = new Set();
406
+ for (const { npmPackage, protoPath, methodName, extractInput, extractOutput } of exports.GUARDED_METHODS) {
339
407
  try {
340
408
  // eslint-disable-next-line @typescript-eslint/no-var-requires
341
409
  const mod = require(npmPackage);
@@ -345,19 +413,25 @@ function setupAutoGuards(guards, failOpen = true) {
345
413
  const original = proto[methodName];
346
414
  proto[methodName] = async function (...args) {
347
415
  let params = args[0] || {};
348
- params = applyPreflight(pipeline, params, extractInput);
416
+ params = applyPreflight(pipeline, params, extractInput, protect);
349
417
  args[0] = params;
350
418
  const response = await original.apply(this, args);
351
- return applyPostflight(pipeline, response, extractOutput);
419
+ return applyPostflight(pipeline, response, extractOutput, protect);
352
420
  };
353
- wrappedCount++;
421
+ wrapped.add(npmPackage);
354
422
  }
355
423
  catch {
356
424
  // module not installed, skip silently
357
425
  }
358
426
  }
359
- if (wrappedCount > 0) {
360
- console.log(`[shield360] Auto-guards: wrapped ${wrappedCount}/${GUARDED_METHODS.length} provider methods`);
427
+ const missing = (protect?.required ?? []).filter((pkg) => !wrapped.has(pkg));
428
+ (0, mode_1.setProtectState)({ mode: protect?.mode, wrapped: Array.from(wrapped), missing });
429
+ if (wrapped.size > 0) {
430
+ console.log(`[shield360] Auto-guards: wrapped ${wrapped.size} provider package(s): ${Array.from(wrapped).join(', ')}`);
431
+ }
432
+ if ((0, mode_1.refuses)(protect?.mode) && missing.length) {
433
+ throw new mode_1.ProtectReadinessError(missing, `Shield360 Protect: enforced mode requires guards on ${missing.join(', ')}, which could not be wrapped (not installed, or not resolvable as CommonJS). Protected startup refused.`);
361
434
  }
435
+ return { wrapped: Array.from(wrapped), missing };
362
436
  }
363
437
  //# sourceMappingURL=integration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/guard/integration.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;AAWH,gDAeC;AAED,kDA4BC;AAED,sDAoBC;AAED,wDAeC;AAED,kDAkBC;AAED,oDA+BC;AAoED,wCAuBC;AAcD,0CAuCC;AAmBD,0CAyCC;AA9VD,iCAA8D;AAC9D,yCAAsC;AAQtC,SAAgB,kBAAkB,CAAC,MAA2B;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACvD,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;gBAChC,IAAI,OAAO,OAAO,KAAK,QAAQ;oBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAAa;IAC/C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;QAClC,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,OAAO;iBACX,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;iBAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC;QAChC,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC;gBAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;wBACzB,IAAI,IAAI;4BAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACvC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAA2B;IAC/D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;gBAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;4BACxD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;wBAC/B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,sBAAsB,CAAC,QAAa;IAClD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;QAClC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;gBACzB,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAA2B;IAC7D,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,GAAG,IAAI,IAAI;YAAE,SAAS;QAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;gBACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;qBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBACrD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,oBAAoB,CAAC,QAAa;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;QAClC,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,OAAO;iBACX,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;iBAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;QAClC,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;gBACzB,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,IAAI,CAAC;QACH,IAAI,QAAQ,EAAE,IAAI;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAcD,MAAM,eAAe,GAAoB;IACvC,SAAS;IACT,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE;IAC/K,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE;IACrK,YAAY;IACZ,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,sBAAsB,EAAE;IACxL,OAAO;IACP,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;IACjL,UAAU;IACV,EAAE,UAAU,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;IACnL,SAAS;IACT,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;IACnK,WAAW;IACX,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;IACxL,gBAAgB;IAChB,EAAE,UAAU,EAAE,iCAAiC,EAAE,SAAS,EAAE,CAAC,sBAAsB,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;IAC/L,uBAAuB;IACvB,EAAE,UAAU,EAAE,uBAAuB,EAAE,SAAS,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE;CAC5L,CAAC;AAEF,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,QAAkB,EAAE,KAAU,EAAE,KAAa;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QAC/F,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,GAAG,CAAC;gBACJ,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAChC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;oBACtD,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;oBAChD,CAAC,CAAC,CAAC,CACN;aACF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mCAAmC;AACnC,SAAgB,cAAc,CAC5B,QAAkB,EAClB,MAA2B,EAC3B,YAAuB;IAEvB,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,SAAS;QAAE,OAAO,MAAM,CAAC;IAE9B,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEzD,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAW,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,IAAI,uBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAW,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QAC5E,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1D,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;gBAClB,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,QAAkB,EAAE,GAAQ,EAAE,KAAa;IAClE,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAC7B,QAAkB,EAClB,QAAa,EACb,aAAwB;IAExB,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU;QAAE,OAAO,QAAQ,CAAC;IAEjC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAE3D,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAW,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,IAAI,uBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAW,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QAC5E,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpE,2BAA2B;gBAC3B,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO;oBAAE,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC/F,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzE,uDAAuD;gBACvD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;wBACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO;4BAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;oBAC7E,CAAC;gBACH,CAAC;gBACD,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ;oBAAE,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACnG,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3E,sBAAsB;gBACtB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO;oBAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,YAAY,CAAC,aAAkB,EAAE,SAAmB;IAC3D,IAAI,GAAG,GAAG,aAAa,CAAC;IACxB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAC7B,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAgB,eAAe,CAC7B,MAAe,EACf,QAAQ,GAAG,IAAI;IAEf,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;QACrD,eAAe,CAAC,aAAa,GAAG,QAAQ,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;IACzB,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,eAAe,EAAE,CAAC;QACjG,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,UAAU;gBAAE,SAAS;YAEhE,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;YACnC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,WAAsB,GAAG,IAAW;gBAC3D,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAE3B,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;gBACxD,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBAEjB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAElD,OAAO,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC5D,CAAC,CAAC;YACF,YAAY,EAAE,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,oCAAoC,YAAY,IAAI,eAAe,CAAC,MAAM,mBAAmB,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/guard/integration.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Must stay in sync with: sdk/python/src/shield360/guard/_pipeline.py
5
5
  */
6
- import { Guard, PipelineResult } from './base';
6
+ import { Guard, GuardPhase, PipelineResult } from './base';
7
7
  export interface PipelineOptions {
8
8
  guards?: Guard[];
9
9
  failOpen?: boolean;
@@ -13,6 +13,15 @@ export declare class Pipeline {
13
13
  private readonly _failOpen;
14
14
  constructor(opts?: PipelineOptions);
15
15
  get guards(): Guard[];
16
+ /** Whether any guard runs in `phase`. */
17
+ hasPhase(phase: GuardPhase): boolean;
18
+ /**
19
+ * The most characters every guard in the pipeline reads: the smallest
20
+ * positive maxScanLength, or 0 when every guard reads everything. Text
21
+ * past it is scanned in part by at least one guard; Shield Protect's
22
+ * enforced mode refuses such text instead.
23
+ */
24
+ scanBound(): number;
16
25
  evaluate(text: string, phase?: string): PipelineResult;
17
26
  /**
18
27
  * Apply every redacting guard to `text` and return the result.
@@ -17,6 +17,20 @@ class Pipeline {
17
17
  get guards() {
18
18
  return [...this._guards];
19
19
  }
20
+ /** Whether any guard runs in `phase`. */
21
+ hasPhase(phase) {
22
+ return this._guards.some((g) => g.supportsPhase(phase));
23
+ }
24
+ /**
25
+ * The most characters every guard in the pipeline reads: the smallest
26
+ * positive maxScanLength, or 0 when every guard reads everything. Text
27
+ * past it is scanned in part by at least one guard; Shield Protect's
28
+ * enforced mode refuses such text instead.
29
+ */
30
+ scanBound() {
31
+ const bounds = this._guards.map((g) => g.maxScanLength).filter((n) => n > 0);
32
+ return bounds.length ? Math.min(...bounds) : 0;
33
+ }
20
34
  evaluate(text, phase = 'preflight') {
21
35
  const validPhases = Object.values(base_1.GuardPhase);
22
36
  if (!validPhases.includes(phase)) {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/guard/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/guard/pipeline.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@
4
4
  * When `init` is given a Shield360 URL and API key (or SHIELD360_URL /
5
5
  * SHIELD360_API_KEY), every guard decision other than allow is sent to
6
6
  * `/api/guard/events`: which guard, what it did, the kind of data found, in
7
- * which app, on which host. Never the text that was checked.
7
+ * which app (its service name, as its telemetry reports it), on which host.
8
+ * Never the text that was checked.
8
9
  *
9
10
  * With each report go the values found, masked, and fingerprinted with the
10
11
  * organisation's key (fetched from `/api/guard/config`), so a reviewer can see
@@ -16,8 +17,26 @@
16
17
  *
17
18
  * Must stay in sync with: sdk/python/src/shield360/guard/_report.py
18
19
  */
20
+ import type { Guard } from './base';
19
21
  import { Finding } from './findings';
20
22
  export declare const EVENT_NAME = "shield360.guard.decision";
23
+ export type GuardEventsTransportOptions = {
24
+ /** What the batch is, for the warning when it cannot be delivered. */
25
+ label?: string;
26
+ attempts?: number;
27
+ /** Delay before retry n is retryDelayMs * n. */
28
+ retryDelayMs?: number;
29
+ fetchImpl?: typeof fetch;
30
+ };
31
+ /**
32
+ * Posts one batch to `/api/guard/events`: the transport guard reports, the
33
+ * heartbeat and runtime-protection (RASP) events share. Retries a few times,
34
+ * gives up on a refusal, and never throws. Resolves to whether it was accepted.
35
+ */
36
+ export declare function postGuardEvents(endpoint: string, apiKey: string, payload: {
37
+ resource: Record<string, string>;
38
+ events: unknown[];
39
+ }, options?: GuardEventsTransportOptions): Promise<boolean>;
21
40
  /** Starts reporting when both a URL and a key are given. Returns whether it did. */
22
41
  export declare function configureGuardReports(opts: {
23
42
  url?: string;
@@ -25,6 +44,10 @@ export declare function configureGuardReports(opts: {
25
44
  applicationName: string;
26
45
  environment: string;
27
46
  sdkVersion?: string;
47
+ /** The guards init was given: with them, a heartbeat says which run and in which mode. */
48
+ guards?: readonly Guard[];
49
+ /** False turns the heartbeat off (as does SHIELD360_GUARD_HEARTBEAT=false). */
50
+ heartbeat?: boolean;
28
51
  }): boolean;
29
52
  /** Queues one decision. Allow decisions are not evidence of anything. */
30
53
  export declare function reportGuardDecision(guardName: string, action: string, classification: string, phase: string, findings?: Finding[]): void;
@@ -5,7 +5,8 @@
5
5
  * When `init` is given a Shield360 URL and API key (or SHIELD360_URL /
6
6
  * SHIELD360_API_KEY), every guard decision other than allow is sent to
7
7
  * `/api/guard/events`: which guard, what it did, the kind of data found, in
8
- * which app, on which host. Never the text that was checked.
8
+ * which app (its service name, as its telemetry reports it), on which host.
9
+ * Never the text that was checked.
9
10
  *
10
11
  * With each report go the values found, masked, and fingerprinted with the
11
12
  * organisation's key (fetched from `/api/guard/config`), so a reviewer can see
@@ -19,6 +20,7 @@
19
20
  */
20
21
  Object.defineProperty(exports, "__esModule", { value: true });
21
22
  exports.EVENT_NAME = void 0;
23
+ exports.postGuardEvents = postGuardEvents;
22
24
  exports.configureGuardReports = configureGuardReports;
23
25
  exports.reportGuardDecision = reportGuardDecision;
24
26
  exports.flushGuardReports = flushGuardReports;
@@ -26,6 +28,7 @@ exports.resetGuardReports = resetGuardReports;
26
28
  const crypto_1 = require("crypto");
27
29
  const os_1 = require("os");
28
30
  const findings_1 = require("./findings");
31
+ const heartbeat_1 = require("./heartbeat");
29
32
  exports.EVENT_NAME = 'shield360.guard.decision';
30
33
  const BATCH = 100;
31
34
  const FLUSH_MS = 2000;
@@ -41,6 +44,7 @@ class Reporter {
41
44
  this.sending = Promise.resolve();
42
45
  /** Settles once the fingerprint key has been fetched (or could not be). */
43
46
  this.keyReady = Promise.resolve();
47
+ this.beat = null;
44
48
  this.timer = setInterval(() => void this.flush(), FLUSH_MS);
45
49
  // Never keep a process alive just to report.
46
50
  this.timer.unref?.();
@@ -62,33 +66,73 @@ class Reporter {
62
66
  return this.sending;
63
67
  }
64
68
  async post(batch) {
65
- const body = JSON.stringify({ resource: this.resource, events: batch });
66
- for (let attempt = 0; attempt < ATTEMPTS; attempt++) {
69
+ await postGuardEvents(this.endpoint, this.apiKey, { resource: this.resource, events: batch }, { label: 'guard report' });
70
+ }
71
+ /** Sends a heartbeat now and then about every five minutes (heartbeat.ts). Never throws. */
72
+ startHeartbeat(guards, sdkVersion) {
73
+ const send = () => {
67
74
  try {
68
- const res = await fetch(this.endpoint, {
69
- method: 'POST',
70
- headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${this.apiKey}` },
71
- body,
72
- });
73
- if (res.ok)
74
- return;
75
- if ([400, 401, 403, 413].includes(res.status)) {
76
- console.warn(`Shield360 rejected guard reports: HTTP ${res.status}`);
77
- return;
78
- }
75
+ this.add({ name: heartbeat_1.HEARTBEAT_EVENT_NAME, time: new Date().toISOString(), attrs: (0, heartbeat_1.heartbeatAttrs)(guards, this.applicationName, sdkVersion) });
76
+ void this.flush().catch(() => undefined);
79
77
  }
80
78
  catch {
81
- // retried below
79
+ // a heartbeat is never worth an error in the app
82
80
  }
83
- await new Promise((r) => setTimeout(r, 500 * (attempt + 1)));
84
- }
85
- console.warn(`Could not deliver ${batch.length} guard report(s) to Shield360`);
81
+ this.beat = setTimeout(send, (0, heartbeat_1.nextDelay)());
82
+ this.beat.unref?.();
83
+ };
84
+ send();
86
85
  }
87
86
  close() {
88
87
  clearInterval(this.timer);
88
+ if (this.beat)
89
+ clearTimeout(this.beat);
90
+ this.beat = null;
89
91
  return this.flush();
90
92
  }
91
93
  }
94
+ /**
95
+ * Posts one batch to `/api/guard/events`: the transport guard reports, the
96
+ * heartbeat and runtime-protection (RASP) events share. Retries a few times,
97
+ * gives up on a refusal, and never throws. Resolves to whether it was accepted.
98
+ */
99
+ async function postGuardEvents(endpoint, apiKey, payload, options = {}) {
100
+ const label = options.label ?? 'guard report';
101
+ const attempts = options.attempts ?? ATTEMPTS;
102
+ const delay = options.retryDelayMs ?? 500;
103
+ const send = options.fetchImpl ?? globalThis.fetch;
104
+ if (typeof send !== 'function')
105
+ return false;
106
+ let body;
107
+ try {
108
+ body = JSON.stringify(payload);
109
+ }
110
+ catch {
111
+ return false;
112
+ }
113
+ for (let attempt = 0; attempt < attempts; attempt++) {
114
+ try {
115
+ const res = await send(endpoint, {
116
+ method: 'POST',
117
+ headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${apiKey}` },
118
+ body,
119
+ });
120
+ if (res.ok)
121
+ return true;
122
+ if ([400, 401, 403, 413].includes(res.status)) {
123
+ console.warn(`Shield360 rejected ${label}s: HTTP ${res.status}`);
124
+ return false;
125
+ }
126
+ }
127
+ catch {
128
+ // retried below
129
+ }
130
+ if (attempt + 1 < attempts)
131
+ await new Promise((r) => setTimeout(r, delay * (attempt + 1)));
132
+ }
133
+ console.warn(`Could not deliver ${payload.events.length} ${label}(s) to Shield360`);
134
+ return false;
135
+ }
92
136
  /** Findings go out fingerprinted if the key has arrived since they were made. */
93
137
  function serialise(event) {
94
138
  const { findings, ...rest } = event;
@@ -122,6 +166,8 @@ function configureGuardReports(opts) {
122
166
  'user.name': user,
123
167
  'deployment.environment': opts.environment,
124
168
  'service.version': opts.sdkVersion || '',
169
+ // The app, by the service name its telemetry uses (security per app).
170
+ 'service.name': opts.applicationName,
125
171
  })) {
126
172
  if (v)
127
173
  resource[k] = v;
@@ -130,6 +176,8 @@ function configureGuardReports(opts) {
130
176
  const base = opts.url.replace(/\/+$/, '');
131
177
  reporter = new Reporter(`${base}/api/guard/events`, opts.apiKey, resource, opts.applicationName);
132
178
  reporter.keyReady = fetchFingerprintKey(base, opts.apiKey);
179
+ if (opts.guards?.length && (0, heartbeat_1.heartbeatEnabled)(opts.heartbeat))
180
+ reporter.startHeartbeat(opts.guards, opts.sdkVersion || '');
133
181
  return true;
134
182
  }
135
183
  /** The organisation's fingerprint key; without it findings are masked only. */
@@ -162,6 +210,7 @@ function reportGuardDecision(guardName, action, classification, phase, findings
162
210
  attrs: {
163
211
  'shield360.guard.event_id': (0, crypto_1.randomUUID)().replace(/-/g, ''),
164
212
  'shield360.guard.client': reporter.applicationName,
213
+ 'shield360.guard.app': reporter.applicationName,
165
214
  'shield360.guard.action': action,
166
215
  'shield360.guard.target': phase,
167
216
  'shield360.guard.kinds': kinds,
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/guard/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/guard/report.ts"],"names":[],"mappings":"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"}