shield360 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +310 -0
  3. package/dist/__tests__/manual-trace.test.d.ts +1 -0
  4. package/dist/__tests__/manual-trace.test.js +118 -0
  5. package/dist/__tests__/manual-trace.test.js.map +1 -0
  6. package/dist/__tests__/register.test.d.ts +0 -0
  7. package/dist/__tests__/register.test.js +90 -0
  8. package/dist/__tests__/register.test.js.map +1 -0
  9. package/dist/config.d.ts +28 -0
  10. package/dist/config.js +22 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/constant.d.ts +6 -0
  13. package/dist/constant.js +14 -0
  14. package/dist/constant.js.map +1 -0
  15. package/dist/evals/__tests__/offline.test.d.ts +1 -0
  16. package/dist/evals/__tests__/offline.test.js +427 -0
  17. package/dist/evals/__tests__/offline.test.js.map +1 -0
  18. package/dist/evals/index.d.ts +2 -0
  19. package/dist/evals/index.js +15 -0
  20. package/dist/evals/index.js.map +1 -0
  21. package/dist/evals/offline.d.ts +6 -0
  22. package/dist/evals/offline.js +350 -0
  23. package/dist/evals/offline.js.map +1 -0
  24. package/dist/evals/types.d.ts +74 -0
  25. package/dist/evals/types.js +23 -0
  26. package/dist/evals/types.js.map +1 -0
  27. package/dist/features/__tests__/rule-engine.test.d.ts +1 -0
  28. package/dist/features/__tests__/rule-engine.test.js +146 -0
  29. package/dist/features/__tests__/rule-engine.test.js.map +1 -0
  30. package/dist/features/base.d.ts +8 -0
  31. package/dist/features/base.js +15 -0
  32. package/dist/features/base.js.map +1 -0
  33. package/dist/features/prompt-hub.d.ts +4 -0
  34. package/dist/features/prompt-hub.js +66 -0
  35. package/dist/features/prompt-hub.js.map +1 -0
  36. package/dist/features/rule-engine.d.ts +6 -0
  37. package/dist/features/rule-engine.js +60 -0
  38. package/dist/features/rule-engine.js.map +1 -0
  39. package/dist/features/vault.d.ts +4 -0
  40. package/dist/features/vault.js +63 -0
  41. package/dist/features/vault.js.map +1 -0
  42. package/dist/guard/__tests__/findings.test.d.ts +1 -0
  43. package/dist/guard/__tests__/findings.test.js +79 -0
  44. package/dist/guard/__tests__/findings.test.js.map +1 -0
  45. package/dist/guard/__tests__/integration.test.d.ts +1 -0
  46. package/dist/guard/__tests__/integration.test.js +215 -0
  47. package/dist/guard/__tests__/integration.test.js.map +1 -0
  48. package/dist/guard/__tests__/pii.test.d.ts +1 -0
  49. package/dist/guard/__tests__/pii.test.js +131 -0
  50. package/dist/guard/__tests__/pii.test.js.map +1 -0
  51. package/dist/guard/__tests__/pipeline.test.d.ts +1 -0
  52. package/dist/guard/__tests__/pipeline.test.js +162 -0
  53. package/dist/guard/__tests__/pipeline.test.js.map +1 -0
  54. package/dist/guard/__tests__/prompt-injection.test.d.ts +1 -0
  55. package/dist/guard/__tests__/prompt-injection.test.js +92 -0
  56. package/dist/guard/__tests__/prompt-injection.test.js.map +1 -0
  57. package/dist/guard/__tests__/report.test.d.ts +1 -0
  58. package/dist/guard/__tests__/report.test.js +50 -0
  59. package/dist/guard/__tests__/report.test.js.map +1 -0
  60. package/dist/guard/base.d.ts +79 -0
  61. package/dist/guard/base.js +136 -0
  62. package/dist/guard/base.js.map +1 -0
  63. package/dist/guard/custom.d.ts +19 -0
  64. package/dist/guard/custom.js +46 -0
  65. package/dist/guard/custom.js.map +1 -0
  66. package/dist/guard/findings.d.ts +31 -0
  67. package/dist/guard/findings.js +156 -0
  68. package/dist/guard/findings.js.map +1 -0
  69. package/dist/guard/index.d.ts +24 -0
  70. package/dist/guard/index.js +42 -0
  71. package/dist/guard/index.js.map +1 -0
  72. package/dist/guard/integration.d.ts +44 -0
  73. package/dist/guard/integration.js +363 -0
  74. package/dist/guard/integration.js.map +1 -0
  75. package/dist/guard/moderation.d.ts +18 -0
  76. package/dist/guard/moderation.js +61 -0
  77. package/dist/guard/moderation.js.map +1 -0
  78. package/dist/guard/pii.d.ts +17 -0
  79. package/dist/guard/pii.js +114 -0
  80. package/dist/guard/pii.js.map +1 -0
  81. package/dist/guard/pipeline.d.ts +26 -0
  82. package/dist/guard/pipeline.js +139 -0
  83. package/dist/guard/pipeline.js.map +1 -0
  84. package/dist/guard/prompt-injection.d.ts +21 -0
  85. package/dist/guard/prompt-injection.js +70 -0
  86. package/dist/guard/prompt-injection.js.map +1 -0
  87. package/dist/guard/report.d.ts +34 -0
  88. package/dist/guard/report.js +182 -0
  89. package/dist/guard/report.js.map +1 -0
  90. package/dist/guard/schema.d.ts +20 -0
  91. package/dist/guard/schema.js +99 -0
  92. package/dist/guard/schema.js.map +1 -0
  93. package/dist/guard/sensitive-topic.d.ts +23 -0
  94. package/dist/guard/sensitive-topic.js +89 -0
  95. package/dist/guard/sensitive-topic.js.map +1 -0
  96. package/dist/guard/topic-restriction.d.ts +22 -0
  97. package/dist/guard/topic-restriction.js +54 -0
  98. package/dist/guard/topic-restriction.js.map +1 -0
  99. package/dist/helpers.d.ts +246 -0
  100. package/dist/helpers.js +903 -0
  101. package/dist/helpers.js.map +1 -0
  102. package/dist/index.d.ts +71 -0
  103. package/dist/index.js +234 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/instrumentation/__tests__/ai21-rag-trace-comparison.test.d.ts +13 -0
  106. package/dist/instrumentation/__tests__/ai21-rag-trace-comparison.test.js +176 -0
  107. package/dist/instrumentation/__tests__/ai21-rag-trace-comparison.test.js.map +1 -0
  108. package/dist/instrumentation/__tests__/ai21-trace-comparison.test.d.ts +10 -0
  109. package/dist/instrumentation/__tests__/ai21-trace-comparison.test.js +203 -0
  110. package/dist/instrumentation/__tests__/ai21-trace-comparison.test.js.map +1 -0
  111. package/dist/instrumentation/__tests__/anthropic-wrapper.test.d.ts +1 -0
  112. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js +284 -0
  113. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js.map +1 -0
  114. package/dist/instrumentation/__tests__/assemblyai-wrapper.test.d.ts +1 -0
  115. package/dist/instrumentation/__tests__/assemblyai-wrapper.test.js +284 -0
  116. package/dist/instrumentation/__tests__/assemblyai-wrapper.test.js.map +1 -0
  117. package/dist/instrumentation/__tests__/astra-trace-comparison.test.d.ts +7 -0
  118. package/dist/instrumentation/__tests__/astra-trace-comparison.test.js +160 -0
  119. package/dist/instrumentation/__tests__/astra-trace-comparison.test.js.map +1 -0
  120. package/dist/instrumentation/__tests__/base-wrapper.test.d.ts +1 -0
  121. package/dist/instrumentation/__tests__/base-wrapper.test.js +171 -0
  122. package/dist/instrumentation/__tests__/base-wrapper.test.js.map +1 -0
  123. package/dist/instrumentation/__tests__/bedrock-trace-comparison.test.d.ts +1 -0
  124. package/dist/instrumentation/__tests__/bedrock-trace-comparison.test.js +422 -0
  125. package/dist/instrumentation/__tests__/bedrock-trace-comparison.test.js.map +1 -0
  126. package/dist/instrumentation/__tests__/browser-use-wrapper.test.d.ts +1 -0
  127. package/dist/instrumentation/__tests__/browser-use-wrapper.test.js +284 -0
  128. package/dist/instrumentation/__tests__/browser-use-wrapper.test.js.map +1 -0
  129. package/dist/instrumentation/__tests__/cache-pricing.test.d.ts +15 -0
  130. package/dist/instrumentation/__tests__/cache-pricing.test.js +155 -0
  131. package/dist/instrumentation/__tests__/cache-pricing.test.js.map +1 -0
  132. package/dist/instrumentation/__tests__/chroma-trace-comparison.test.d.ts +18 -0
  133. package/dist/instrumentation/__tests__/chroma-trace-comparison.test.js +209 -0
  134. package/dist/instrumentation/__tests__/chroma-trace-comparison.test.js.map +1 -0
  135. package/dist/instrumentation/__tests__/cohere-wrapper.test.d.ts +1 -0
  136. package/dist/instrumentation/__tests__/cohere-wrapper.test.js +256 -0
  137. package/dist/instrumentation/__tests__/cohere-wrapper.test.js.map +1 -0
  138. package/dist/instrumentation/__tests__/elevenlabs-wrapper.test.d.ts +1 -0
  139. package/dist/instrumentation/__tests__/elevenlabs-wrapper.test.js +282 -0
  140. package/dist/instrumentation/__tests__/elevenlabs-wrapper.test.js.map +1 -0
  141. package/dist/instrumentation/__tests__/firecrawl-wrapper.test.d.ts +1 -0
  142. package/dist/instrumentation/__tests__/firecrawl-wrapper.test.js +238 -0
  143. package/dist/instrumentation/__tests__/firecrawl-wrapper.test.js.map +1 -0
  144. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.d.ts +4 -0
  145. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js +229 -0
  146. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js.map +1 -0
  147. package/dist/instrumentation/__tests__/gpu-collector.test.d.ts +1 -0
  148. package/dist/instrumentation/__tests__/gpu-collector.test.js +247 -0
  149. package/dist/instrumentation/__tests__/gpu-collector.test.js.map +1 -0
  150. package/dist/instrumentation/__tests__/gradient-trace-comparison.test.d.ts +11 -0
  151. package/dist/instrumentation/__tests__/gradient-trace-comparison.test.js +391 -0
  152. package/dist/instrumentation/__tests__/gradient-trace-comparison.test.js.map +1 -0
  153. package/dist/instrumentation/__tests__/groq-trace-comparison.test.d.ts +7 -0
  154. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js +687 -0
  155. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js.map +1 -0
  156. package/dist/instrumentation/__tests__/helpers-genai.test.d.ts +14 -0
  157. package/dist/instrumentation/__tests__/helpers-genai.test.js +347 -0
  158. package/dist/instrumentation/__tests__/helpers-genai.test.js.map +1 -0
  159. package/dist/instrumentation/__tests__/huggingface-trace-comparison.test.d.ts +7 -0
  160. package/dist/instrumentation/__tests__/huggingface-trace-comparison.test.js +529 -0
  161. package/dist/instrumentation/__tests__/huggingface-trace-comparison.test.js.map +1 -0
  162. package/dist/instrumentation/__tests__/langchain-role-map.test.d.ts +1 -0
  163. package/dist/instrumentation/__tests__/langchain-role-map.test.js +19 -0
  164. package/dist/instrumentation/__tests__/langchain-role-map.test.js.map +1 -0
  165. package/dist/instrumentation/__tests__/langchain-wrapper.test.d.ts +1 -0
  166. package/dist/instrumentation/__tests__/langchain-wrapper.test.js +282 -0
  167. package/dist/instrumentation/__tests__/langchain-wrapper.test.js.map +1 -0
  168. package/dist/instrumentation/__tests__/letta-wrapper.test.d.ts +1 -0
  169. package/dist/instrumentation/__tests__/letta-wrapper.test.js +285 -0
  170. package/dist/instrumentation/__tests__/letta-wrapper.test.js.map +1 -0
  171. package/dist/instrumentation/__tests__/mem0-trace-comparison.test.d.ts +13 -0
  172. package/dist/instrumentation/__tests__/mem0-trace-comparison.test.js +208 -0
  173. package/dist/instrumentation/__tests__/mem0-trace-comparison.test.js.map +1 -0
  174. package/dist/instrumentation/__tests__/milvus-trace-comparison.test.d.ts +17 -0
  175. package/dist/instrumentation/__tests__/milvus-trace-comparison.test.js +206 -0
  176. package/dist/instrumentation/__tests__/milvus-trace-comparison.test.js.map +1 -0
  177. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.d.ts +1 -0
  178. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js +345 -0
  179. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js.map +1 -0
  180. package/dist/instrumentation/__tests__/openai-wrapper.test.d.ts +1 -0
  181. package/dist/instrumentation/__tests__/openai-wrapper.test.js +179 -0
  182. package/dist/instrumentation/__tests__/openai-wrapper.test.js.map +1 -0
  183. package/dist/instrumentation/__tests__/pg-trace-comparison.test.d.ts +21 -0
  184. package/dist/instrumentation/__tests__/pg-trace-comparison.test.js +455 -0
  185. package/dist/instrumentation/__tests__/pg-trace-comparison.test.js.map +1 -0
  186. package/dist/instrumentation/__tests__/qdrant-trace-comparison.test.d.ts +17 -0
  187. package/dist/instrumentation/__tests__/qdrant-trace-comparison.test.js +182 -0
  188. package/dist/instrumentation/__tests__/qdrant-trace-comparison.test.js.map +1 -0
  189. package/dist/instrumentation/__tests__/replicate-trace-comparison.test.d.ts +8 -0
  190. package/dist/instrumentation/__tests__/replicate-trace-comparison.test.js +346 -0
  191. package/dist/instrumentation/__tests__/replicate-trace-comparison.test.js.map +1 -0
  192. package/dist/instrumentation/__tests__/together-trace-comparison.test.d.ts +4 -0
  193. package/dist/instrumentation/__tests__/together-trace-comparison.test.js +289 -0
  194. package/dist/instrumentation/__tests__/together-trace-comparison.test.js.map +1 -0
  195. package/dist/instrumentation/__tests__/trace-comparison-utils.d.ts +67 -0
  196. package/dist/instrumentation/__tests__/trace-comparison-utils.js +255 -0
  197. package/dist/instrumentation/__tests__/trace-comparison-utils.js.map +1 -0
  198. package/dist/instrumentation/__tests__/transformers-trace-comparison.test.d.ts +11 -0
  199. package/dist/instrumentation/__tests__/transformers-trace-comparison.test.js +214 -0
  200. package/dist/instrumentation/__tests__/transformers-trace-comparison.test.js.map +1 -0
  201. package/dist/instrumentation/__tests__/vercel-ai-trace-comparison.test.d.ts +8 -0
  202. package/dist/instrumentation/__tests__/vercel-ai-trace-comparison.test.js +446 -0
  203. package/dist/instrumentation/__tests__/vercel-ai-trace-comparison.test.js.map +1 -0
  204. package/dist/instrumentation/__tests__/vertexai-trace-comparison.test.d.ts +6 -0
  205. package/dist/instrumentation/__tests__/vertexai-trace-comparison.test.js +409 -0
  206. package/dist/instrumentation/__tests__/vertexai-trace-comparison.test.js.map +1 -0
  207. package/dist/instrumentation/__tests__/vllm-trace-comparison.test.d.ts +1 -0
  208. package/dist/instrumentation/__tests__/vllm-trace-comparison.test.js +519 -0
  209. package/dist/instrumentation/__tests__/vllm-trace-comparison.test.js.map +1 -0
  210. package/dist/instrumentation/ai21/index.d.ts +11 -0
  211. package/dist/instrumentation/ai21/index.js +67 -0
  212. package/dist/instrumentation/ai21/index.js.map +1 -0
  213. package/dist/instrumentation/ai21/wrapper.d.ts +54 -0
  214. package/dist/instrumentation/ai21/wrapper.js +511 -0
  215. package/dist/instrumentation/ai21/wrapper.js.map +1 -0
  216. package/dist/instrumentation/anthropic/index.d.ts +11 -0
  217. package/dist/instrumentation/anthropic/index.js +45 -0
  218. package/dist/instrumentation/anthropic/index.js.map +1 -0
  219. package/dist/instrumentation/anthropic/wrapper.d.ts +34 -0
  220. package/dist/instrumentation/anthropic/wrapper.js +426 -0
  221. package/dist/instrumentation/anthropic/wrapper.js.map +1 -0
  222. package/dist/instrumentation/assemblyai/index.d.ts +12 -0
  223. package/dist/instrumentation/assemblyai/index.js +91 -0
  224. package/dist/instrumentation/assemblyai/index.js.map +1 -0
  225. package/dist/instrumentation/assemblyai/wrapper.d.ts +35 -0
  226. package/dist/instrumentation/assemblyai/wrapper.js +238 -0
  227. package/dist/instrumentation/assemblyai/wrapper.js.map +1 -0
  228. package/dist/instrumentation/astra/index.d.ts +11 -0
  229. package/dist/instrumentation/astra/index.js +87 -0
  230. package/dist/instrumentation/astra/index.js.map +1 -0
  231. package/dist/instrumentation/astra/wrapper.d.ts +39 -0
  232. package/dist/instrumentation/astra/wrapper.js +349 -0
  233. package/dist/instrumentation/astra/wrapper.js.map +1 -0
  234. package/dist/instrumentation/azure-ai-inference/index.d.ts +11 -0
  235. package/dist/instrumentation/azure-ai-inference/index.js +76 -0
  236. package/dist/instrumentation/azure-ai-inference/index.js.map +1 -0
  237. package/dist/instrumentation/azure-ai-inference/wrapper.d.ts +55 -0
  238. package/dist/instrumentation/azure-ai-inference/wrapper.js +580 -0
  239. package/dist/instrumentation/azure-ai-inference/wrapper.js.map +1 -0
  240. package/dist/instrumentation/base-wrapper.d.ts +16 -0
  241. package/dist/instrumentation/base-wrapper.js +139 -0
  242. package/dist/instrumentation/base-wrapper.js.map +1 -0
  243. package/dist/instrumentation/bedrock/index.d.ts +11 -0
  244. package/dist/instrumentation/bedrock/index.js +52 -0
  245. package/dist/instrumentation/bedrock/index.js.map +1 -0
  246. package/dist/instrumentation/bedrock/wrapper.d.ts +41 -0
  247. package/dist/instrumentation/bedrock/wrapper.js +494 -0
  248. package/dist/instrumentation/bedrock/wrapper.js.map +1 -0
  249. package/dist/instrumentation/browser-use/index.d.ts +11 -0
  250. package/dist/instrumentation/browser-use/index.js +98 -0
  251. package/dist/instrumentation/browser-use/index.js.map +1 -0
  252. package/dist/instrumentation/browser-use/wrapper.d.ts +12 -0
  253. package/dist/instrumentation/browser-use/wrapper.js +706 -0
  254. package/dist/instrumentation/browser-use/wrapper.js.map +1 -0
  255. package/dist/instrumentation/chroma/index.d.ts +11 -0
  256. package/dist/instrumentation/chroma/index.js +70 -0
  257. package/dist/instrumentation/chroma/index.js.map +1 -0
  258. package/dist/instrumentation/chroma/wrapper.d.ts +10 -0
  259. package/dist/instrumentation/chroma/wrapper.js +127 -0
  260. package/dist/instrumentation/chroma/wrapper.js.map +1 -0
  261. package/dist/instrumentation/claude-agent-sdk/index.d.ts +23 -0
  262. package/dist/instrumentation/claude-agent-sdk/index.js +83 -0
  263. package/dist/instrumentation/claude-agent-sdk/index.js.map +1 -0
  264. package/dist/instrumentation/claude-agent-sdk/wrapper.d.ts +13 -0
  265. package/dist/instrumentation/claude-agent-sdk/wrapper.js +1123 -0
  266. package/dist/instrumentation/claude-agent-sdk/wrapper.js.map +1 -0
  267. package/dist/instrumentation/cohere/index.d.ts +11 -0
  268. package/dist/instrumentation/cohere/index.js +53 -0
  269. package/dist/instrumentation/cohere/index.js.map +1 -0
  270. package/dist/instrumentation/cohere/wrapper.d.ts +50 -0
  271. package/dist/instrumentation/cohere/wrapper.js +452 -0
  272. package/dist/instrumentation/cohere/wrapper.js.map +1 -0
  273. package/dist/instrumentation/cursor-sdk/index.d.ts +21 -0
  274. package/dist/instrumentation/cursor-sdk/index.js +58 -0
  275. package/dist/instrumentation/cursor-sdk/index.js.map +1 -0
  276. package/dist/instrumentation/cursor-sdk/wrapper.d.ts +17 -0
  277. package/dist/instrumentation/cursor-sdk/wrapper.js +789 -0
  278. package/dist/instrumentation/cursor-sdk/wrapper.js.map +1 -0
  279. package/dist/instrumentation/elevenlabs/index.d.ts +12 -0
  280. package/dist/instrumentation/elevenlabs/index.js +92 -0
  281. package/dist/instrumentation/elevenlabs/index.js.map +1 -0
  282. package/dist/instrumentation/elevenlabs/wrapper.d.ts +34 -0
  283. package/dist/instrumentation/elevenlabs/wrapper.js +280 -0
  284. package/dist/instrumentation/elevenlabs/wrapper.js.map +1 -0
  285. package/dist/instrumentation/firecrawl/index.d.ts +13 -0
  286. package/dist/instrumentation/firecrawl/index.js +115 -0
  287. package/dist/instrumentation/firecrawl/index.js.map +1 -0
  288. package/dist/instrumentation/firecrawl/wrapper.d.ts +22 -0
  289. package/dist/instrumentation/firecrawl/wrapper.js +378 -0
  290. package/dist/instrumentation/firecrawl/wrapper.js.map +1 -0
  291. package/dist/instrumentation/google-adk/index.d.ts +57 -0
  292. package/dist/instrumentation/google-adk/index.js +371 -0
  293. package/dist/instrumentation/google-adk/index.js.map +1 -0
  294. package/dist/instrumentation/google-adk/utils.d.ts +45 -0
  295. package/dist/instrumentation/google-adk/utils.js +663 -0
  296. package/dist/instrumentation/google-adk/utils.js.map +1 -0
  297. package/dist/instrumentation/google-adk/wrapper.d.ts +11 -0
  298. package/dist/instrumentation/google-adk/wrapper.js +391 -0
  299. package/dist/instrumentation/google-adk/wrapper.js.map +1 -0
  300. package/dist/instrumentation/google-ai/index.d.ts +11 -0
  301. package/dist/instrumentation/google-ai/index.js +48 -0
  302. package/dist/instrumentation/google-ai/index.js.map +1 -0
  303. package/dist/instrumentation/google-ai/wrapper.d.ts +52 -0
  304. package/dist/instrumentation/google-ai/wrapper.js +466 -0
  305. package/dist/instrumentation/google-ai/wrapper.js.map +1 -0
  306. package/dist/instrumentation/gpu/index.d.ts +38 -0
  307. package/dist/instrumentation/gpu/index.js +233 -0
  308. package/dist/instrumentation/gpu/index.js.map +1 -0
  309. package/dist/instrumentation/gradient/index.d.ts +12 -0
  310. package/dist/instrumentation/gradient/index.js +74 -0
  311. package/dist/instrumentation/gradient/index.js.map +1 -0
  312. package/dist/instrumentation/gradient/utils.d.ts +14 -0
  313. package/dist/instrumentation/gradient/utils.js +119 -0
  314. package/dist/instrumentation/gradient/utils.js.map +1 -0
  315. package/dist/instrumentation/gradient/wrapper.d.ts +76 -0
  316. package/dist/instrumentation/gradient/wrapper.js +584 -0
  317. package/dist/instrumentation/gradient/wrapper.js.map +1 -0
  318. package/dist/instrumentation/groq/index.d.ts +11 -0
  319. package/dist/instrumentation/groq/index.js +43 -0
  320. package/dist/instrumentation/groq/index.js.map +1 -0
  321. package/dist/instrumentation/groq/wrapper.d.ts +35 -0
  322. package/dist/instrumentation/groq/wrapper.js +442 -0
  323. package/dist/instrumentation/groq/wrapper.js.map +1 -0
  324. package/dist/instrumentation/huggingface/index.d.ts +13 -0
  325. package/dist/instrumentation/huggingface/index.js +110 -0
  326. package/dist/instrumentation/huggingface/index.js.map +1 -0
  327. package/dist/instrumentation/huggingface/wrapper.d.ts +54 -0
  328. package/dist/instrumentation/huggingface/wrapper.js +514 -0
  329. package/dist/instrumentation/huggingface/wrapper.js.map +1 -0
  330. package/dist/instrumentation/index.d.ts +7 -0
  331. package/dist/instrumentation/index.js +176 -0
  332. package/dist/instrumentation/index.js.map +1 -0
  333. package/dist/instrumentation/langchain/index.d.ts +16 -0
  334. package/dist/instrumentation/langchain/index.js +91 -0
  335. package/dist/instrumentation/langchain/index.js.map +1 -0
  336. package/dist/instrumentation/langchain/wrapper.d.ts +41 -0
  337. package/dist/instrumentation/langchain/wrapper.js +1235 -0
  338. package/dist/instrumentation/langchain/wrapper.js.map +1 -0
  339. package/dist/instrumentation/langgraph/index.d.ts +12 -0
  340. package/dist/instrumentation/langgraph/index.js +99 -0
  341. package/dist/instrumentation/langgraph/index.js.map +1 -0
  342. package/dist/instrumentation/langgraph/wrapper.d.ts +20 -0
  343. package/dist/instrumentation/langgraph/wrapper.js +620 -0
  344. package/dist/instrumentation/langgraph/wrapper.js.map +1 -0
  345. package/dist/instrumentation/letta/index.d.ts +10 -0
  346. package/dist/instrumentation/letta/index.js +122 -0
  347. package/dist/instrumentation/letta/index.js.map +1 -0
  348. package/dist/instrumentation/letta/utils.d.ts +24 -0
  349. package/dist/instrumentation/letta/utils.js +343 -0
  350. package/dist/instrumentation/letta/utils.js.map +1 -0
  351. package/dist/instrumentation/letta/wrapper.d.ts +37 -0
  352. package/dist/instrumentation/letta/wrapper.js +180 -0
  353. package/dist/instrumentation/letta/wrapper.js.map +1 -0
  354. package/dist/instrumentation/llamaindex/index.d.ts +36 -0
  355. package/dist/instrumentation/llamaindex/index.js +221 -0
  356. package/dist/instrumentation/llamaindex/index.js.map +1 -0
  357. package/dist/instrumentation/llamaindex/wrapper.d.ts +36 -0
  358. package/dist/instrumentation/llamaindex/wrapper.js +811 -0
  359. package/dist/instrumentation/llamaindex/wrapper.js.map +1 -0
  360. package/dist/instrumentation/mcp/index.d.ts +20 -0
  361. package/dist/instrumentation/mcp/index.js +282 -0
  362. package/dist/instrumentation/mcp/index.js.map +1 -0
  363. package/dist/instrumentation/mcp/wrapper.d.ts +72 -0
  364. package/dist/instrumentation/mcp/wrapper.js +571 -0
  365. package/dist/instrumentation/mcp/wrapper.js.map +1 -0
  366. package/dist/instrumentation/mem0/index.d.ts +17 -0
  367. package/dist/instrumentation/mem0/index.js +113 -0
  368. package/dist/instrumentation/mem0/index.js.map +1 -0
  369. package/dist/instrumentation/mem0/wrapper.d.ts +37 -0
  370. package/dist/instrumentation/mem0/wrapper.js +298 -0
  371. package/dist/instrumentation/mem0/wrapper.js.map +1 -0
  372. package/dist/instrumentation/milvus/index.d.ts +11 -0
  373. package/dist/instrumentation/milvus/index.js +67 -0
  374. package/dist/instrumentation/milvus/index.js.map +1 -0
  375. package/dist/instrumentation/milvus/wrapper.d.ts +15 -0
  376. package/dist/instrumentation/milvus/wrapper.js +219 -0
  377. package/dist/instrumentation/milvus/wrapper.js.map +1 -0
  378. package/dist/instrumentation/mistral/index.d.ts +11 -0
  379. package/dist/instrumentation/mistral/index.js +66 -0
  380. package/dist/instrumentation/mistral/index.js.map +1 -0
  381. package/dist/instrumentation/mistral/wrapper.d.ts +49 -0
  382. package/dist/instrumentation/mistral/wrapper.js +482 -0
  383. package/dist/instrumentation/mistral/wrapper.js.map +1 -0
  384. package/dist/instrumentation/ollama/index.d.ts +11 -0
  385. package/dist/instrumentation/ollama/index.js +72 -0
  386. package/dist/instrumentation/ollama/index.js.map +1 -0
  387. package/dist/instrumentation/ollama/wrapper.d.ts +73 -0
  388. package/dist/instrumentation/ollama/wrapper.js +629 -0
  389. package/dist/instrumentation/ollama/wrapper.js.map +1 -0
  390. package/dist/instrumentation/openai/index.d.ts +11 -0
  391. package/dist/instrumentation/openai/index.js +79 -0
  392. package/dist/instrumentation/openai/index.js.map +1 -0
  393. package/dist/instrumentation/openai/wrapper.d.ts +80 -0
  394. package/dist/instrumentation/openai/wrapper.js +1121 -0
  395. package/dist/instrumentation/openai/wrapper.js.map +1 -0
  396. package/dist/instrumentation/openai-agents/index.d.ts +20 -0
  397. package/dist/instrumentation/openai-agents/index.js +174 -0
  398. package/dist/instrumentation/openai-agents/index.js.map +1 -0
  399. package/dist/instrumentation/openai-agents/processor.d.ts +35 -0
  400. package/dist/instrumentation/openai-agents/processor.js +249 -0
  401. package/dist/instrumentation/openai-agents/processor.js.map +1 -0
  402. package/dist/instrumentation/openai-agents/utils.d.ts +20 -0
  403. package/dist/instrumentation/openai-agents/utils.js +624 -0
  404. package/dist/instrumentation/openai-agents/utils.js.map +1 -0
  405. package/dist/instrumentation/pg/index.d.ts +20 -0
  406. package/dist/instrumentation/pg/index.js +74 -0
  407. package/dist/instrumentation/pg/index.js.map +1 -0
  408. package/dist/instrumentation/pg/wrapper.d.ts +66 -0
  409. package/dist/instrumentation/pg/wrapper.js +441 -0
  410. package/dist/instrumentation/pg/wrapper.js.map +1 -0
  411. package/dist/instrumentation/pinecone/index.d.ts +11 -0
  412. package/dist/instrumentation/pinecone/index.js +79 -0
  413. package/dist/instrumentation/pinecone/index.js.map +1 -0
  414. package/dist/instrumentation/pinecone/wrapper.d.ts +14 -0
  415. package/dist/instrumentation/pinecone/wrapper.js +198 -0
  416. package/dist/instrumentation/pinecone/wrapper.js.map +1 -0
  417. package/dist/instrumentation/qdrant/index.d.ts +11 -0
  418. package/dist/instrumentation/qdrant/index.js +67 -0
  419. package/dist/instrumentation/qdrant/index.js.map +1 -0
  420. package/dist/instrumentation/qdrant/wrapper.d.ts +14 -0
  421. package/dist/instrumentation/qdrant/wrapper.js +213 -0
  422. package/dist/instrumentation/qdrant/wrapper.js.map +1 -0
  423. package/dist/instrumentation/replicate/index.d.ts +11 -0
  424. package/dist/instrumentation/replicate/index.js +57 -0
  425. package/dist/instrumentation/replicate/index.js.map +1 -0
  426. package/dist/instrumentation/replicate/wrapper.d.ts +28 -0
  427. package/dist/instrumentation/replicate/wrapper.js +242 -0
  428. package/dist/instrumentation/replicate/wrapper.js.map +1 -0
  429. package/dist/instrumentation/strands/index.d.ts +21 -0
  430. package/dist/instrumentation/strands/index.js +83 -0
  431. package/dist/instrumentation/strands/index.js.map +1 -0
  432. package/dist/instrumentation/strands/processor.d.ts +51 -0
  433. package/dist/instrumentation/strands/processor.js +625 -0
  434. package/dist/instrumentation/strands/processor.js.map +1 -0
  435. package/dist/instrumentation/strands/utils.d.ts +24 -0
  436. package/dist/instrumentation/strands/utils.js +373 -0
  437. package/dist/instrumentation/strands/utils.js.map +1 -0
  438. package/dist/instrumentation/together/index.d.ts +11 -0
  439. package/dist/instrumentation/together/index.js +43 -0
  440. package/dist/instrumentation/together/index.js.map +1 -0
  441. package/dist/instrumentation/together/wrapper.d.ts +48 -0
  442. package/dist/instrumentation/together/wrapper.js +409 -0
  443. package/dist/instrumentation/together/wrapper.js.map +1 -0
  444. package/dist/instrumentation/transformers/index.d.ts +35 -0
  445. package/dist/instrumentation/transformers/index.js +119 -0
  446. package/dist/instrumentation/transformers/index.js.map +1 -0
  447. package/dist/instrumentation/transformers/wrapper.d.ts +49 -0
  448. package/dist/instrumentation/transformers/wrapper.js +472 -0
  449. package/dist/instrumentation/transformers/wrapper.js.map +1 -0
  450. package/dist/instrumentation/vercel-ai/index.d.ts +10 -0
  451. package/dist/instrumentation/vercel-ai/index.js +59 -0
  452. package/dist/instrumentation/vercel-ai/index.js.map +1 -0
  453. package/dist/instrumentation/vercel-ai/wrapper.d.ts +50 -0
  454. package/dist/instrumentation/vercel-ai/wrapper.js +539 -0
  455. package/dist/instrumentation/vercel-ai/wrapper.js.map +1 -0
  456. package/dist/instrumentation/vertexai/index.d.ts +11 -0
  457. package/dist/instrumentation/vertexai/index.js +70 -0
  458. package/dist/instrumentation/vertexai/index.js.map +1 -0
  459. package/dist/instrumentation/vertexai/wrapper.d.ts +67 -0
  460. package/dist/instrumentation/vertexai/wrapper.js +530 -0
  461. package/dist/instrumentation/vertexai/wrapper.js.map +1 -0
  462. package/dist/instrumentation/vllm/index.d.ts +13 -0
  463. package/dist/instrumentation/vllm/index.js +67 -0
  464. package/dist/instrumentation/vllm/index.js.map +1 -0
  465. package/dist/instrumentation/vllm/wrapper.d.ts +60 -0
  466. package/dist/instrumentation/vllm/wrapper.js +482 -0
  467. package/dist/instrumentation/vllm/wrapper.js.map +1 -0
  468. package/dist/llm/anthropic.d.ts +5 -0
  469. package/dist/llm/anthropic.js +39 -0
  470. package/dist/llm/anthropic.js.map +1 -0
  471. package/dist/llm/index.d.ts +10 -0
  472. package/dist/llm/index.js +93 -0
  473. package/dist/llm/index.js.map +1 -0
  474. package/dist/llm/openai.d.ts +6 -0
  475. package/dist/llm/openai.js +52 -0
  476. package/dist/llm/openai.js.map +1 -0
  477. package/dist/llm/providers.d.ts +7 -0
  478. package/dist/llm/providers.js +10 -0
  479. package/dist/llm/providers.js.map +1 -0
  480. package/dist/manual-trace.d.ts +40 -0
  481. package/dist/manual-trace.js +103 -0
  482. package/dist/manual-trace.js.map +1 -0
  483. package/dist/otel/__tests__/metrics.test.d.ts +1 -0
  484. package/dist/otel/__tests__/metrics.test.js +40 -0
  485. package/dist/otel/__tests__/metrics.test.js.map +1 -0
  486. package/dist/otel/events.d.ts +11 -0
  487. package/dist/otel/events.js +74 -0
  488. package/dist/otel/events.js.map +1 -0
  489. package/dist/otel/metrics.d.ts +35 -0
  490. package/dist/otel/metrics.js +219 -0
  491. package/dist/otel/metrics.js.map +1 -0
  492. package/dist/otel/tracing.d.ts +12 -0
  493. package/dist/otel/tracing.js +93 -0
  494. package/dist/otel/tracing.js.map +1 -0
  495. package/dist/otel/utils.d.ts +11 -0
  496. package/dist/otel/utils.js +34 -0
  497. package/dist/otel/utils.js.map +1 -0
  498. package/dist/pricing.json +951 -0
  499. package/dist/prompt-hub.d.ts +4 -0
  500. package/dist/prompt-hub.js +66 -0
  501. package/dist/prompt-hub.js.map +1 -0
  502. package/dist/register.d.ts +4 -0
  503. package/dist/register.js +52 -0
  504. package/dist/register.js.map +1 -0
  505. package/dist/score/__tests__/score.test.d.ts +1 -0
  506. package/dist/score/__tests__/score.test.js +143 -0
  507. package/dist/score/__tests__/score.test.js.map +1 -0
  508. package/dist/score/index.d.ts +2 -0
  509. package/dist/score/index.js +6 -0
  510. package/dist/score/index.js.map +1 -0
  511. package/dist/score/score.d.ts +15 -0
  512. package/dist/score/score.js +135 -0
  513. package/dist/score/score.js.map +1 -0
  514. package/dist/semantic-convention.d.ts +555 -0
  515. package/dist/semantic-convention.js +630 -0
  516. package/dist/semantic-convention.js.map +1 -0
  517. package/dist/types.d.ts +131 -0
  518. package/dist/types.js +3 -0
  519. package/dist/types.js.map +1 -0
  520. package/package.json +136 -0
@@ -0,0 +1,625 @@
1
+ "use strict";
2
+ /**
3
+ * Strands Agents SpanProcessor.
4
+ *
5
+ * Enriches Strands' native OTel spans with Shield360-specific attributes,
6
+ * extracts content from span events into span attributes, emits
7
+ * gen_ai.client.inference.operation.details log events for chat spans,
8
+ * and records Shield360 metrics.
9
+ *
10
+ * Provider-level chat spans (OpenAI, Anthropic, etc.) are suppressed
11
+ * when they occur inside a Strands chat span via the shared
12
+ * frameworkLlmActive flag.
13
+ *
14
+ * Mirrors: sdk/python/src/shield360/instrumentation/strands/processor.py
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.StrandsSpanProcessor = void 0;
54
+ const api_1 = require("@opentelemetry/api");
55
+ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
56
+ const semantic_convention_1 = __importDefault(require("../../semantic-convention"));
57
+ const config_1 = __importDefault(require("../../config"));
58
+ const helpers_1 = __importStar(require("../../helpers"));
59
+ const utils_1 = require("./utils");
60
+ const STRANDS_TRACER_SCOPES = new Set([
61
+ 'strands.telemetry.tracer',
62
+ 'strands-agents',
63
+ ]);
64
+ /**
65
+ * Enriches Strands-generated spans with Shield360 telemetry.
66
+ * Added to the TracerProvider so it receives all spans; non-Strands
67
+ * spans are ignored via the _isStrandsSpan() check.
68
+ */
69
+ class StrandsSpanProcessor {
70
+ constructor(strandsVersion = 'unknown') {
71
+ this._chatSpanIds = new Set();
72
+ this._chatInfo = new Map();
73
+ this._strandsVersion = strandsVersion;
74
+ }
75
+ // -----------------------------------------------------------------
76
+ // Span detection
77
+ // -----------------------------------------------------------------
78
+ static _isStrandsSpan(span) {
79
+ const scope = span.instrumentationLibrary;
80
+ if (scope && STRANDS_TRACER_SCOPES.has(scope.name)) {
81
+ return true;
82
+ }
83
+ const attrs = span.attributes || {};
84
+ const system = attrs['gen_ai.system'] || '';
85
+ const provider = attrs['gen_ai.provider.name'] || '';
86
+ return (system === semantic_convention_1.default.GEN_AI_SYSTEM_STRANDS ||
87
+ system === 'strands-agents' ||
88
+ provider === semantic_convention_1.default.GEN_AI_SYSTEM_STRANDS ||
89
+ provider === 'strands-agents');
90
+ }
91
+ // -----------------------------------------------------------------
92
+ // Attribute mutation helpers (span is read-only after onEnd)
93
+ // -----------------------------------------------------------------
94
+ static _setAttr(span, key, value) {
95
+ try {
96
+ if (span.attributes) {
97
+ span.attributes[key] = value;
98
+ }
99
+ }
100
+ catch {
101
+ // ignore
102
+ }
103
+ }
104
+ static _setAttrs(span, mapping) {
105
+ try {
106
+ if (span.attributes) {
107
+ Object.assign(span.attributes, mapping);
108
+ }
109
+ }
110
+ catch {
111
+ // ignore
112
+ }
113
+ }
114
+ static _setSpanName(span, name) {
115
+ try {
116
+ if ('_name' in span)
117
+ span._name = name;
118
+ if ('name' in span)
119
+ span.name = name;
120
+ }
121
+ catch {
122
+ // ignore
123
+ }
124
+ }
125
+ // -----------------------------------------------------------------
126
+ // SpanProcessor API
127
+ // -----------------------------------------------------------------
128
+ onStart(span, _parentContext) {
129
+ if (!StrandsSpanProcessor._isStrandsSpan(span))
130
+ return;
131
+ try {
132
+ span.setAttribute(semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME, 'shield360');
133
+ span.setAttribute(semantic_convention_1.default.GEN_AI_SDK_VERSION, this._strandsVersion);
134
+ span.setAttribute(semantic_convention_1.default.ATTR_DEPLOYMENT_ENVIRONMENT, config_1.default.environment || 'default');
135
+ span.setAttribute(semantic_conventions_1.ATTR_SERVICE_NAME, config_1.default.applicationName || 'default');
136
+ (0, helpers_1.applyCustomSpanAttributes)(span);
137
+ }
138
+ catch {
139
+ // ignore
140
+ }
141
+ const spanName = span.name || '';
142
+ if (spanName === 'chat') {
143
+ try {
144
+ span._kind = api_1.SpanKind.CLIENT;
145
+ }
146
+ catch {
147
+ // ignore
148
+ }
149
+ try {
150
+ (0, helpers_1.setFrameworkLlmActive)();
151
+ const spanId = span.spanContext().spanId;
152
+ this._chatSpanIds.add(spanId);
153
+ }
154
+ catch {
155
+ // ignore
156
+ }
157
+ }
158
+ }
159
+ onEnd(span) {
160
+ if (!StrandsSpanProcessor._isStrandsSpan(span))
161
+ return;
162
+ const spanId = span.spanContext().spanId;
163
+ if (this._chatSpanIds.has(spanId)) {
164
+ this._chatSpanIds.delete(spanId);
165
+ try {
166
+ (0, helpers_1.resetFrameworkLlmActive)();
167
+ }
168
+ catch {
169
+ // ignore
170
+ }
171
+ }
172
+ try {
173
+ this._processSpan(span);
174
+ }
175
+ catch {
176
+ // ignore
177
+ }
178
+ }
179
+ shutdown() {
180
+ return Promise.resolve();
181
+ }
182
+ forceFlush() {
183
+ return Promise.resolve();
184
+ }
185
+ // -----------------------------------------------------------------
186
+ // Core processing (mirrors Python _process_span)
187
+ // -----------------------------------------------------------------
188
+ _processSpan(span) {
189
+ const attrs = span.attributes || {};
190
+ let operation = String(attrs[semantic_convention_1.default.GEN_AI_OPERATION] || '');
191
+ // Normalize agent id: agent_name-span_id_hex
192
+ const agentName = attrs[semantic_convention_1.default.GEN_AI_AGENT_NAME];
193
+ if (agentName && !attrs[semantic_convention_1.default.GEN_AI_AGENT_ID]) {
194
+ const spanIdHex = span.spanContext().spanId;
195
+ StrandsSpanProcessor._setAttr(span, semantic_convention_1.default.GEN_AI_AGENT_ID, `${agentName}-${spanIdHex}`);
196
+ }
197
+ // Normalize gen_ai.system → gen_ai.provider.name
198
+ const genAiSystem = String(attrs['gen_ai.system'] || '');
199
+ if (genAiSystem && !attrs[semantic_convention_1.default.GEN_AI_PROVIDER_NAME_OTEL]) {
200
+ const provider = genAiSystem === 'strands-agents' || genAiSystem === 'strands_agents'
201
+ ? semantic_convention_1.default.GEN_AI_SYSTEM_STRANDS
202
+ : genAiSystem;
203
+ StrandsSpanProcessor._setAttr(span, semantic_convention_1.default.GEN_AI_PROVIDER_NAME_OTEL, provider);
204
+ }
205
+ // Normalize Strands-native cache token keys → OTel standard keys
206
+ const cacheKeyMap = [
207
+ ['gen_ai.usage.cache_read_input_tokens', semantic_convention_1.default.GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS],
208
+ ['gen_ai.usage.cache_write_input_tokens', semantic_convention_1.default.GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS],
209
+ ];
210
+ for (const [strandsKey, otelKey] of cacheKeyMap) {
211
+ const val = attrs[strandsKey];
212
+ if (val != null && !attrs[otelKey]) {
213
+ StrandsSpanProcessor._setAttr(span, otelKey, val);
214
+ }
215
+ }
216
+ // Remap Strands-native system_prompt → gen_ai.system_instructions
217
+ if (operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_AGENT) {
218
+ const systemPrompt = attrs['system_prompt'];
219
+ if (systemPrompt && !attrs[semantic_convention_1.default.GEN_AI_SYSTEM_INSTRUCTIONS]) {
220
+ StrandsSpanProcessor._setAttr(span, semantic_convention_1.default.GEN_AI_SYSTEM_INSTRUCTIONS, systemPrompt);
221
+ }
222
+ }
223
+ // Duration (HrTime → seconds)
224
+ let duration = 0;
225
+ if (span.endTime && span.startTime) {
226
+ const endNs = span.endTime[0] * 1e9 + span.endTime[1];
227
+ const startNs = span.startTime[0] * 1e9 + span.startTime[1];
228
+ duration = (endNs - startNs) / 1e9;
229
+ }
230
+ StrandsSpanProcessor._setAttr(span, semantic_convention_1.default.GEN_AI_CLIENT_OPERATION_DURATION, duration);
231
+ // Server address / port (inferred from model name)
232
+ const modelName = String(attrs[semantic_convention_1.default.GEN_AI_REQUEST_MODEL] || '');
233
+ let serverAddress = String(attrs[semantic_convention_1.default.SERVER_ADDRESS] || '');
234
+ let serverPort = Number(attrs[semantic_convention_1.default.SERVER_PORT] || 0);
235
+ if (!serverAddress && modelName) {
236
+ [serverAddress, serverPort] = (0, utils_1.inferServerAddress)(modelName);
237
+ if (serverAddress) {
238
+ StrandsSpanProcessor._setAttrs(span, {
239
+ [semantic_convention_1.default.SERVER_ADDRESS]: serverAddress,
240
+ [semantic_convention_1.default.SERVER_PORT]: serverPort,
241
+ });
242
+ }
243
+ }
244
+ // Normalize multi-agent operation names to invoke_workflow
245
+ if (operation === 'invoke_swarm' || operation === 'invoke_graph') {
246
+ const workflowName = String(attrs[semantic_convention_1.default.GEN_AI_AGENT_NAME] || '');
247
+ StrandsSpanProcessor._setAttrs(span, {
248
+ [semantic_convention_1.default.GEN_AI_OPERATION]: semantic_convention_1.default.GEN_AI_OPERATION_TYPE_FRAMEWORK,
249
+ [semantic_convention_1.default.GEN_AI_WORKFLOW_NAME]: workflowName,
250
+ });
251
+ operation = semantic_convention_1.default.GEN_AI_OPERATION_TYPE_FRAMEWORK;
252
+ }
253
+ // Output type for agent / workflow spans
254
+ if (operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_AGENT ||
255
+ operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_FRAMEWORK) {
256
+ StrandsSpanProcessor._setAttr(span, semantic_convention_1.default.GEN_AI_OUTPUT_TYPE, semantic_convention_1.default.GEN_AI_OUTPUT_TYPE_TEXT);
257
+ }
258
+ // Tool type and tool call id
259
+ if (operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_TOOLS) {
260
+ StrandsSpanProcessor._setAttr(span, semantic_convention_1.default.GEN_AI_TOOL_TYPE, 'function');
261
+ if (!attrs[semantic_convention_1.default.GEN_AI_TOOL_CALL_ID]) {
262
+ const tid = attrs['tool_use_id'] ||
263
+ attrs['toolUseId'] ||
264
+ attrs['gen_ai.tool.call.id'] ||
265
+ StrandsSpanProcessor._extractToolCallIdFromSpanEvents(span);
266
+ if (tid) {
267
+ StrandsSpanProcessor._setAttr(span, semantic_convention_1.default.GEN_AI_TOOL_CALL_ID, String(tid));
268
+ }
269
+ }
270
+ }
271
+ // OTel-compliant span names
272
+ this._setOtelCompliantSpanName(span, operation);
273
+ // Chat span enrichment: match provider span attributes
274
+ if (operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT) {
275
+ this._enrichChatSpan(span, attrs, modelName);
276
+ this._storeChatInfoForParent(span, modelName);
277
+ }
278
+ // Propagate recommended attrs from child chat spans to invoke_agent
279
+ if (operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_AGENT) {
280
+ this._enrichAgentFromChildren(span);
281
+ }
282
+ // Content capture: extract from events → span attributes
283
+ if (config_1.default.captureMessageContent) {
284
+ this._extractAndSetContent(span, operation);
285
+ }
286
+ // Emit inference log event for chat spans
287
+ if (operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT) {
288
+ this._emitChatInferenceEvent(span, attrs, serverAddress, serverPort);
289
+ }
290
+ // Record Shield360 metrics
291
+ if (!config_1.default.disableMetrics && operation) {
292
+ (0, utils_1.recordStrandsMetrics)(operation, duration, modelName, serverAddress, serverPort);
293
+ }
294
+ // Set error type if missing (low-cardinality per OTel spec)
295
+ if (span.status && span.status.code === api_1.SpanStatusCode.ERROR) {
296
+ const currentAttrs = span.attributes || {};
297
+ if (!currentAttrs[semantic_convention_1.default.ERROR_TYPE]) {
298
+ StrandsSpanProcessor._setAttr(span, semantic_convention_1.default.ERROR_TYPE, '_OTHER');
299
+ }
300
+ }
301
+ }
302
+ // -----------------------------------------------------------------
303
+ // OTel-compliant span naming
304
+ // -----------------------------------------------------------------
305
+ _setOtelCompliantSpanName(span, operation) {
306
+ if (operation !== semantic_convention_1.default.GEN_AI_OPERATION_TYPE_AGENT &&
307
+ operation !== semantic_convention_1.default.GEN_AI_OPERATION_TYPE_TOOLS &&
308
+ operation !== semantic_convention_1.default.GEN_AI_OPERATION_TYPE_FRAMEWORK) {
309
+ return;
310
+ }
311
+ try {
312
+ const attrs = span.attributes || {};
313
+ if (operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_AGENT) {
314
+ const name = attrs[semantic_convention_1.default.GEN_AI_AGENT_NAME];
315
+ if (name)
316
+ StrandsSpanProcessor._setSpanName(span, `invoke_agent ${name}`);
317
+ }
318
+ else if (operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_TOOLS) {
319
+ const name = attrs[semantic_convention_1.default.GEN_AI_TOOL_NAME];
320
+ if (name)
321
+ StrandsSpanProcessor._setSpanName(span, `execute_tool ${name}`);
322
+ }
323
+ else if (operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_FRAMEWORK) {
324
+ const name = attrs[semantic_convention_1.default.GEN_AI_WORKFLOW_NAME];
325
+ if (name)
326
+ StrandsSpanProcessor._setSpanName(span, `invoke_workflow ${name}`);
327
+ }
328
+ }
329
+ catch {
330
+ // ignore
331
+ }
332
+ }
333
+ // -----------------------------------------------------------------
334
+ // Chat span enrichment (parity with provider spans)
335
+ // -----------------------------------------------------------------
336
+ _enrichChatSpan(span, attrs, modelName) {
337
+ const enrichments = {};
338
+ // Span name: "chat" → "chat {model}"
339
+ if (modelName) {
340
+ StrandsSpanProcessor._setSpanName(span, `chat ${modelName}`);
341
+ }
342
+ // Override gen_ai.provider.name with actual provider for chat spans
343
+ const provider = modelName ? (0, utils_1.inferProviderName)(modelName) : '';
344
+ if (provider) {
345
+ enrichments[semantic_convention_1.default.GEN_AI_PROVIDER_NAME_OTEL] = provider;
346
+ }
347
+ // response.model: fall back to request model
348
+ if (!attrs[semantic_convention_1.default.GEN_AI_RESPONSE_MODEL] && modelName) {
349
+ enrichments[semantic_convention_1.default.GEN_AI_RESPONSE_MODEL] = modelName;
350
+ }
351
+ // response.id: extract from events
352
+ if (!attrs[semantic_convention_1.default.GEN_AI_RESPONSE_ID]) {
353
+ const responseId = StrandsSpanProcessor._extractResponseId(span);
354
+ if (responseId) {
355
+ enrichments[semantic_convention_1.default.GEN_AI_RESPONSE_ID] = responseId;
356
+ }
357
+ }
358
+ // Finish reasons from output events
359
+ const [, outputMsgs] = (0, utils_1.extractContentFromEvents)(span, 'chat');
360
+ if (outputMsgs && outputMsgs.length > 0) {
361
+ const finishReasons = outputMsgs
362
+ .filter((m) => typeof m === 'object' && m.finish_reason)
363
+ .map((m) => m.finish_reason);
364
+ if (finishReasons.length > 0) {
365
+ enrichments[semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON] = finishReasons;
366
+ }
367
+ }
368
+ enrichments[semantic_convention_1.default.GEN_AI_OUTPUT_TYPE] = semantic_convention_1.default.GEN_AI_OUTPUT_TYPE_TEXT;
369
+ // Token totals and cost
370
+ const inputTokens = Number(attrs['gen_ai.usage.input_tokens'] || 0);
371
+ const outputTokens = Number(attrs['gen_ai.usage.output_tokens'] || 0);
372
+ if (inputTokens || outputTokens) {
373
+ enrichments[semantic_convention_1.default.GEN_AI_CLIENT_TOKEN_USAGE] = inputTokens + outputTokens;
374
+ }
375
+ if (config_1.default.pricingInfo && modelName) {
376
+ const cacheReadTokens = Number(attrs[semantic_convention_1.default.GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS] ||
377
+ attrs['gen_ai.usage.cache_read_input_tokens'] ||
378
+ 0);
379
+ const cacheCreationTokens = Number(attrs[semantic_convention_1.default.GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS] ||
380
+ attrs['gen_ai.usage.cache_write_input_tokens'] ||
381
+ 0);
382
+ const cacheTotal = cacheReadTokens + cacheCreationTokens;
383
+ // Underlying providers differ; treat input as inclusive when it already
384
+ // covers the cache sum, otherwise exclusive (Anthropic/Bedrock-style).
385
+ const promptTokensIncludeCache = cacheTotal > 0 && inputTokens >= cacheTotal;
386
+ const cost = helpers_1.default.getChatModelCost(modelName, config_1.default.pricingInfo, inputTokens, outputTokens, cacheReadTokens, cacheCreationTokens, promptTokensIncludeCache);
387
+ enrichments[semantic_convention_1.default.GEN_AI_USAGE_COST] = cost;
388
+ }
389
+ if (Object.keys(enrichments).length > 0) {
390
+ StrandsSpanProcessor._setAttrs(span, enrichments);
391
+ }
392
+ }
393
+ _storeChatInfoForParent(span, modelName) {
394
+ try {
395
+ const parentId = span.parentSpanId;
396
+ if (!parentId)
397
+ return;
398
+ const finalAttrs = span.attributes || {};
399
+ const info = {
400
+ responseModel: finalAttrs[semantic_convention_1.default.GEN_AI_RESPONSE_MODEL] || modelName,
401
+ responseId: finalAttrs[semantic_convention_1.default.GEN_AI_RESPONSE_ID],
402
+ finishReasons: finalAttrs[semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON],
403
+ inputTokens: finalAttrs['gen_ai.usage.input_tokens'] || 0,
404
+ outputTokens: finalAttrs['gen_ai.usage.output_tokens'] || 0,
405
+ };
406
+ this._chatInfo.set(parentId, info);
407
+ }
408
+ catch {
409
+ // ignore
410
+ }
411
+ }
412
+ _enrichAgentFromChildren(span) {
413
+ try {
414
+ const spanId = span.spanContext().spanId;
415
+ const info = this._chatInfo.get(spanId);
416
+ this._chatInfo.delete(spanId);
417
+ if (!info)
418
+ return;
419
+ const enrichments = {};
420
+ const current = span.attributes || {};
421
+ if (info.responseModel && !current[semantic_convention_1.default.GEN_AI_RESPONSE_MODEL]) {
422
+ enrichments[semantic_convention_1.default.GEN_AI_RESPONSE_MODEL] = info.responseModel;
423
+ }
424
+ if (info.responseId && !current[semantic_convention_1.default.GEN_AI_RESPONSE_ID]) {
425
+ enrichments[semantic_convention_1.default.GEN_AI_RESPONSE_ID] = info.responseId;
426
+ }
427
+ if (info.finishReasons && !current[semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON]) {
428
+ enrichments[semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON] = info.finishReasons;
429
+ }
430
+ if (Object.keys(enrichments).length > 0) {
431
+ StrandsSpanProcessor._setAttrs(span, enrichments);
432
+ }
433
+ }
434
+ catch {
435
+ // ignore
436
+ }
437
+ }
438
+ // -----------------------------------------------------------------
439
+ // Static extraction helpers
440
+ // -----------------------------------------------------------------
441
+ static _extractResponseId(span) {
442
+ for (const event of span.events || []) {
443
+ const ea = event.attributes || {};
444
+ const rid = ea['gen_ai.response.id'] || ea['response_id'];
445
+ if (rid)
446
+ return String(rid);
447
+ }
448
+ return '';
449
+ }
450
+ static _extractToolCallIdFromSpanEvents(span) {
451
+ for (const event of span.events || []) {
452
+ if (event.name === 'gen_ai.tool.message') {
453
+ const ea = event.attributes || {};
454
+ const tid = ea['id'] || ea[semantic_convention_1.default.GEN_AI_TOOL_CALL_ID];
455
+ if (tid)
456
+ return String(tid);
457
+ }
458
+ }
459
+ for (const event of span.events || []) {
460
+ const ea = event.attributes || {};
461
+ const tid = ea[semantic_convention_1.default.GEN_AI_TOOL_CALL_ID] ||
462
+ ea['tool_use_id'] ||
463
+ ea['toolUseId'] ||
464
+ ea['gen_ai.tool.call.id'];
465
+ if (tid)
466
+ return String(tid);
467
+ }
468
+ return null;
469
+ }
470
+ // -----------------------------------------------------------------
471
+ // Content extraction → span attributes
472
+ // -----------------------------------------------------------------
473
+ _extractAndSetContent(span, operation) {
474
+ try {
475
+ const [inputMsgs, outputMsgs, systemInstr, toolDefs] = (0, utils_1.extractContentFromEvents)(span, operation);
476
+ const additions = {};
477
+ if (operation === semantic_convention_1.default.GEN_AI_OPERATION_TYPE_TOOLS) {
478
+ if (inputMsgs.length > 0) {
479
+ const first = inputMsgs[0];
480
+ const parts = (typeof first === 'object' && first.parts) ? first.parts : [];
481
+ if (parts.length > 0) {
482
+ const arguments_ = parts[0].arguments || parts[0].response || '';
483
+ additions[semantic_convention_1.default.GEN_AI_TOOL_CALL_ARGUMENTS] = (0, utils_1.truncateContent)(typeof arguments_ === 'string' ? arguments_ : JSON.stringify(arguments_));
484
+ }
485
+ }
486
+ if (outputMsgs.length > 0) {
487
+ additions[semantic_convention_1.default.GEN_AI_TOOL_CALL_RESULT] = (0, utils_1.truncateContent)(JSON.stringify(outputMsgs));
488
+ }
489
+ }
490
+ else {
491
+ if (inputMsgs.length > 0) {
492
+ (0, utils_1.truncateMessageContent)(inputMsgs);
493
+ additions[semantic_convention_1.default.GEN_AI_INPUT_MESSAGES] = JSON.stringify(inputMsgs);
494
+ }
495
+ if (outputMsgs.length > 0) {
496
+ (0, utils_1.truncateMessageContent)(outputMsgs);
497
+ additions[semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES] = JSON.stringify(outputMsgs);
498
+ }
499
+ if (systemInstr) {
500
+ additions[semantic_convention_1.default.GEN_AI_SYSTEM_INSTRUCTIONS] = (0, utils_1.truncateContent)(String(systemInstr));
501
+ }
502
+ if (toolDefs) {
503
+ additions[semantic_convention_1.default.GEN_AI_TOOL_DEFINITIONS] = (0, utils_1.truncateContent)(String(toolDefs));
504
+ }
505
+ }
506
+ if (Object.keys(additions).length > 0) {
507
+ StrandsSpanProcessor._setAttrs(span, additions);
508
+ }
509
+ }
510
+ catch {
511
+ // ignore
512
+ }
513
+ }
514
+ // -----------------------------------------------------------------
515
+ // Chat inference log event
516
+ // -----------------------------------------------------------------
517
+ _emitChatInferenceEvent(span, attrs, serverAddress, serverPort) {
518
+ try {
519
+ const [inputMsgs, outputMsgs, systemInstr, toolDefs] = (0, utils_1.extractContentFromEvents)(span, 'chat');
520
+ const extra = {};
521
+ const inputTokens = attrs['gen_ai.usage.input_tokens'];
522
+ const outputTokens = attrs['gen_ai.usage.output_tokens'];
523
+ if (inputTokens != null)
524
+ extra.inputTokens = inputTokens;
525
+ if (outputTokens != null)
526
+ extra.outputTokens = outputTokens;
527
+ const cacheRead = attrs[semantic_convention_1.default.GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS] ||
528
+ attrs['gen_ai.usage.cache_read_input_tokens'];
529
+ const cacheWrite = attrs[semantic_convention_1.default.GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS] ||
530
+ attrs['gen_ai.usage.cache_write_input_tokens'];
531
+ if (cacheRead != null)
532
+ extra.cacheReadInputTokens = cacheRead;
533
+ if (cacheWrite != null)
534
+ extra.cacheCreationInputTokens = cacheWrite;
535
+ const responseId = attrs[semantic_convention_1.default.GEN_AI_RESPONSE_ID] ||
536
+ StrandsSpanProcessor._extractResponseId(span);
537
+ if (responseId)
538
+ extra.responseId = responseId;
539
+ if (systemInstr)
540
+ extra.systemInstructions = systemInstr;
541
+ // Tool definitions: prefer the event-sourced value, otherwise fall back to
542
+ // whatever was already written to the span attribute (e.g. by native
543
+ // Strands instrumentation upstream).
544
+ const toolDefsAttr = toolDefs ||
545
+ attrs[semantic_convention_1.default.GEN_AI_TOOL_DEFINITIONS] ||
546
+ attrs['gen_ai.tool.definitions'];
547
+ if (toolDefsAttr)
548
+ extra.toolDefinitions = toolDefsAttr;
549
+ if (outputMsgs.length > 0) {
550
+ const finishReasons = outputMsgs
551
+ .filter((m) => typeof m === 'object' && m.finish_reason)
552
+ .map((m) => m.finish_reason);
553
+ if (finishReasons.length > 0)
554
+ extra.finishReasons = finishReasons;
555
+ }
556
+ extra.inputMessages = inputMsgs;
557
+ extra.outputMessages = outputMsgs;
558
+ // Stamp shield360.agent.version_hash + gen_ai.agent.version on the chat
559
+ // span and surface them on the inference event extras so versions stay
560
+ // attached even if the span attribute is dropped downstream.
561
+ const requestModel = String(attrs[semantic_convention_1.default.GEN_AI_REQUEST_MODEL] || '');
562
+ const responseModel = String(attrs[semantic_convention_1.default.GEN_AI_RESPONSE_MODEL] || '');
563
+ extra.versionExtras = this._stampChatAgentVersion(span, attrs, {
564
+ primaryModel: responseModel || requestModel,
565
+ systemInstructionsJson: systemInstr ? String(systemInstr) : undefined,
566
+ toolDefinitionsJson: toolDefs
567
+ ? String(toolDefs)
568
+ : (attrs[semantic_convention_1.default.GEN_AI_TOOL_DEFINITIONS]
569
+ ? String(attrs[semantic_convention_1.default.GEN_AI_TOOL_DEFINITIONS])
570
+ : undefined),
571
+ });
572
+ (0, utils_1.emitStrandsInferenceEvent)(span, requestModel, serverAddress, serverPort, extra);
573
+ }
574
+ catch {
575
+ // ignore
576
+ }
577
+ }
578
+ // -----------------------------------------------------------------
579
+ // Agent version stamping (Strands chat spans)
580
+ // -----------------------------------------------------------------
581
+ /**
582
+ * Compute and write `shield360.agent.version_hash` (auto) and
583
+ * `gen_ai.agent.version` (user override) onto a Strands chat span.
584
+ * Returns the same attributes for inclusion in the inference event.
585
+ */
586
+ _stampChatAgentVersion(span, attrs, args) {
587
+ const out = {};
588
+ const additions = {};
589
+ try {
590
+ const temperature = attrs[semantic_convention_1.default.GEN_AI_REQUEST_TEMPERATURE];
591
+ const topP = attrs[semantic_convention_1.default.GEN_AI_REQUEST_TOP_P];
592
+ const maxTokens = attrs[semantic_convention_1.default.GEN_AI_REQUEST_MAX_TOKENS];
593
+ const versionHash = helpers_1.default.computeAgentVersionHash({
594
+ systemInstructions: args.systemInstructionsJson ?? null,
595
+ toolDefinitions: args.toolDefinitionsJson ?? null,
596
+ primaryModel: args.primaryModel ?? null,
597
+ runtimeConfig: {
598
+ temperature: typeof temperature === 'number' ? temperature : null,
599
+ top_p: typeof topP === 'number' ? topP : null,
600
+ max_tokens: typeof maxTokens === 'number' ? maxTokens : null,
601
+ provider: semantic_convention_1.default.GEN_AI_SYSTEM_STRANDS,
602
+ },
603
+ providers: [semantic_convention_1.default.GEN_AI_SYSTEM_STRANDS],
604
+ });
605
+ if (versionHash) {
606
+ out[semantic_convention_1.default.SHIELD360_AGENT_VERSION_HASH] = versionHash;
607
+ additions[semantic_convention_1.default.SHIELD360_AGENT_VERSION_HASH] = versionHash;
608
+ }
609
+ }
610
+ catch {
611
+ // Hash computation must never fail the wrapped call.
612
+ }
613
+ const versionLabel = (0, helpers_1.getCurrentAgentVersion)();
614
+ if (versionLabel) {
615
+ out[semantic_convention_1.default.GEN_AI_AGENT_VERSION] = versionLabel;
616
+ additions[semantic_convention_1.default.GEN_AI_AGENT_VERSION] = versionLabel;
617
+ }
618
+ if (Object.keys(additions).length > 0) {
619
+ StrandsSpanProcessor._setAttrs(span, additions);
620
+ }
621
+ return out;
622
+ }
623
+ }
624
+ exports.StrandsSpanProcessor = StrandsSpanProcessor;
625
+ //# sourceMappingURL=processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../src/instrumentation/strands/processor.ts"],"names":[],"mappings":"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"}