@jini-ai/provider-plugins 0.6.15-rc.2 → 0.6.19

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 (242) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/NOTICE +28 -0
  3. package/README.md +23 -8
  4. package/catalog.json +22 -12
  5. package/package.json +64 -15
  6. package/plugins/ai-trace-langfuse/0.6.19/CHANGELOG.md +7 -0
  7. package/plugins/ai-trace-langfuse/0.6.19/NOTICE +6 -0
  8. package/plugins/ai-trace-langfuse/0.6.19/README.md +13 -0
  9. package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/jini.plugin.json +7 -2
  10. package/plugins/ai-trace-langfuse/0.6.19/licenses/_jini-ai_provider-plugins/NOTICE +28 -0
  11. package/plugins/{analytics-posthog/0.6.15-rc.2 → ai-trace-langfuse/0.6.19}/licenses/_jini-ai_provider-plugins/package-license.json +1 -1
  12. package/plugins/analytics-posthog/0.6.19/CHANGELOG.md +6 -0
  13. package/plugins/analytics-posthog/0.6.19/NOTICE +11 -0
  14. package/plugins/analytics-posthog/0.6.19/README.md +25 -0
  15. package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/jini.plugin.json +14 -8
  16. package/plugins/analytics-posthog/0.6.19/licenses/_jini-ai_cookie-consent/LICENSE-SOURCE +1 -0
  17. package/plugins/analytics-posthog/0.6.19/licenses/_jini-ai_cookie-consent/NOTICE +28 -0
  18. package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/licenses/_jini-ai_cookie-consent/package-license.json +1 -1
  19. package/plugins/{observability-opentelemetry/0.6.15-rc.2 → analytics-posthog/0.6.19}/licenses/_jini-ai_core/package-license.json +1 -1
  20. package/plugins/{observability-sentry/0.6.15-rc.2 → analytics-posthog/0.6.19}/licenses/_jini-ai_diagnostics/package-license.json +1 -1
  21. package/plugins/analytics-posthog/0.6.19/licenses/_jini-ai_provider-plugins/NOTICE +28 -0
  22. package/plugins/{fixture-provider/0.6.15-rc.2 → analytics-posthog/0.6.19}/licenses/_jini-ai_provider-plugins/package-license.json +1 -1
  23. package/plugins/analytics-posthog/0.6.19/server/consent-adapter.mjs +1 -0
  24. package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/server/index.mjs +11 -7
  25. package/plugins/charts-echarts/0.6.19/client/provider.js +41 -0
  26. package/plugins/charts-echarts/0.6.19/client/styles.css +1 -0
  27. package/plugins/charts-echarts/0.6.19/jini.plugin.json +55 -0
  28. package/plugins/charts-echarts/0.6.19/licenses/_jini-ai_provider-plugins/NOTICE +28 -0
  29. package/plugins/{ai-trace-langfuse/0.6.15-rc.2 → charts-echarts/0.6.19}/licenses/_jini-ai_provider-plugins/package-license.json +1 -1
  30. package/plugins/charts-echarts/0.6.19/licenses/_jini-ai_ui/LICENSE-SOURCE +1 -0
  31. package/plugins/charts-echarts/0.6.19/licenses/_jini-ai_ui/NOTICE +28 -0
  32. package/plugins/charts-echarts/0.6.19/licenses/_jini-ai_ui/package-license.json +5 -0
  33. package/plugins/charts-echarts/0.6.19/licenses/echarts/LICENSE +222 -0
  34. package/plugins/charts-echarts/0.6.19/licenses/echarts/NOTICE +5 -0
  35. package/plugins/charts-echarts/0.6.19/licenses/echarts/package-license.json +5 -0
  36. package/plugins/charts-echarts/0.6.19/licenses/tslib/LICENSE.txt +12 -0
  37. package/plugins/charts-echarts/0.6.19/licenses/tslib/package-license.json +5 -0
  38. package/plugins/charts-echarts/0.6.19/licenses/zod/LICENSE +21 -0
  39. package/plugins/charts-echarts/0.6.19/licenses/zod/package-license.json +5 -0
  40. package/plugins/charts-echarts/0.6.19/licenses/zrender/LICENSE +29 -0
  41. package/plugins/charts-echarts/0.6.19/licenses/zrender/package-license.json +5 -0
  42. package/plugins/charts-echarts/0.6.19/server/index.mjs +8 -0
  43. package/plugins/charts-recharts/0.6.19/client/provider.js +134 -0
  44. package/plugins/charts-recharts/0.6.19/client/styles.css +1 -0
  45. package/plugins/charts-recharts/0.6.19/jini.plugin.json +100 -0
  46. package/plugins/charts-recharts/0.6.19/licenses/_jini-ai_provider-plugins/NOTICE +28 -0
  47. package/plugins/{observability-opentelemetry/0.6.15-rc.2 → charts-recharts/0.6.19}/licenses/_jini-ai_provider-plugins/package-license.json +1 -1
  48. package/plugins/charts-recharts/0.6.19/licenses/_jini-ai_ui/LICENSE-SOURCE +1 -0
  49. package/plugins/charts-recharts/0.6.19/licenses/_jini-ai_ui/NOTICE +28 -0
  50. package/plugins/charts-recharts/0.6.19/licenses/_jini-ai_ui/package-license.json +5 -0
  51. package/plugins/charts-recharts/0.6.19/licenses/_reduxjs_toolkit/LICENSE +21 -0
  52. package/plugins/charts-recharts/0.6.19/licenses/_reduxjs_toolkit/package-license.json +5 -0
  53. package/plugins/charts-recharts/0.6.19/licenses/clsx/license +9 -0
  54. package/plugins/charts-recharts/0.6.19/licenses/clsx/package-license.json +5 -0
  55. package/plugins/charts-recharts/0.6.19/licenses/d3-array/LICENSE +13 -0
  56. package/plugins/charts-recharts/0.6.19/licenses/d3-array/package-license.json +5 -0
  57. package/plugins/charts-recharts/0.6.19/licenses/d3-color/LICENSE +13 -0
  58. package/plugins/charts-recharts/0.6.19/licenses/d3-color/package-license.json +5 -0
  59. package/plugins/charts-recharts/0.6.19/licenses/d3-format/LICENSE +13 -0
  60. package/plugins/charts-recharts/0.6.19/licenses/d3-format/package-license.json +5 -0
  61. package/plugins/charts-recharts/0.6.19/licenses/d3-interpolate/LICENSE +13 -0
  62. package/plugins/charts-recharts/0.6.19/licenses/d3-interpolate/package-license.json +5 -0
  63. package/plugins/charts-recharts/0.6.19/licenses/d3-path/LICENSE +13 -0
  64. package/plugins/charts-recharts/0.6.19/licenses/d3-path/package-license.json +5 -0
  65. package/plugins/charts-recharts/0.6.19/licenses/d3-scale/LICENSE +13 -0
  66. package/plugins/charts-recharts/0.6.19/licenses/d3-scale/package-license.json +5 -0
  67. package/plugins/charts-recharts/0.6.19/licenses/d3-shape/LICENSE +13 -0
  68. package/plugins/charts-recharts/0.6.19/licenses/d3-shape/package-license.json +5 -0
  69. package/plugins/charts-recharts/0.6.19/licenses/d3-time/LICENSE +13 -0
  70. package/plugins/charts-recharts/0.6.19/licenses/d3-time/package-license.json +5 -0
  71. package/plugins/charts-recharts/0.6.19/licenses/d3-time-format/LICENSE +13 -0
  72. package/plugins/charts-recharts/0.6.19/licenses/d3-time-format/package-license.json +5 -0
  73. package/plugins/charts-recharts/0.6.19/licenses/decimal.js-light/LICENCE.md +23 -0
  74. package/plugins/charts-recharts/0.6.19/licenses/decimal.js-light/package-license.json +5 -0
  75. package/plugins/charts-recharts/0.6.19/licenses/es-toolkit/LICENSE +21 -0
  76. package/plugins/charts-recharts/0.6.19/licenses/es-toolkit/package-license.json +5 -0
  77. package/plugins/charts-recharts/0.6.19/licenses/eventemitter3/LICENSE +21 -0
  78. package/plugins/charts-recharts/0.6.19/licenses/eventemitter3/package-license.json +5 -0
  79. package/plugins/charts-recharts/0.6.19/licenses/immer/LICENSE +21 -0
  80. package/plugins/charts-recharts/0.6.19/licenses/immer/package-license.json +5 -0
  81. package/plugins/charts-recharts/0.6.19/licenses/internmap/LICENSE +13 -0
  82. package/plugins/charts-recharts/0.6.19/licenses/internmap/package-license.json +5 -0
  83. package/plugins/charts-recharts/0.6.19/licenses/react/LICENSE +21 -0
  84. package/plugins/charts-recharts/0.6.19/licenses/react/package-license.json +5 -0
  85. package/plugins/charts-recharts/0.6.19/licenses/react-dom/LICENSE +21 -0
  86. package/plugins/charts-recharts/0.6.19/licenses/react-dom/package-license.json +5 -0
  87. package/plugins/charts-recharts/0.6.19/licenses/react-is/LICENSE +21 -0
  88. package/plugins/charts-recharts/0.6.19/licenses/react-is/package-license.json +5 -0
  89. package/plugins/charts-recharts/0.6.19/licenses/react-redux/LICENSE.md +21 -0
  90. package/plugins/charts-recharts/0.6.19/licenses/react-redux/package-license.json +5 -0
  91. package/plugins/charts-recharts/0.6.19/licenses/recharts/LICENSE +22 -0
  92. package/plugins/charts-recharts/0.6.19/licenses/recharts/package-license.json +5 -0
  93. package/plugins/charts-recharts/0.6.19/licenses/redux/LICENSE.md +21 -0
  94. package/plugins/charts-recharts/0.6.19/licenses/redux/package-license.json +5 -0
  95. package/plugins/charts-recharts/0.6.19/licenses/redux-thunk/LICENSE.md +21 -0
  96. package/plugins/charts-recharts/0.6.19/licenses/redux-thunk/package-license.json +5 -0
  97. package/plugins/charts-recharts/0.6.19/licenses/reselect/LICENSE +21 -0
  98. package/plugins/charts-recharts/0.6.19/licenses/reselect/package-license.json +5 -0
  99. package/plugins/charts-recharts/0.6.19/licenses/scheduler/LICENSE +21 -0
  100. package/plugins/charts-recharts/0.6.19/licenses/scheduler/package-license.json +5 -0
  101. package/plugins/charts-recharts/0.6.19/licenses/tiny-invariant/LICENSE +21 -0
  102. package/plugins/charts-recharts/0.6.19/licenses/tiny-invariant/package-license.json +5 -0
  103. package/plugins/charts-recharts/0.6.19/licenses/use-sync-external-store/LICENSE +21 -0
  104. package/plugins/charts-recharts/0.6.19/licenses/use-sync-external-store/package-license.json +5 -0
  105. package/plugins/charts-recharts/0.6.19/licenses/victory-vendor/LICENSE.txt +150 -0
  106. package/plugins/charts-recharts/0.6.19/licenses/victory-vendor/package-license.json +5 -0
  107. package/plugins/charts-recharts/0.6.19/licenses/zod/LICENSE +21 -0
  108. package/plugins/charts-recharts/0.6.19/licenses/zod/package-license.json +5 -0
  109. package/plugins/charts-recharts/0.6.19/server/index.mjs +8 -0
  110. package/plugins/fixture-provider/{0.6.15-rc.2 → 0.6.19}/jini.plugin.json +3 -2
  111. package/plugins/fixture-provider/0.6.19/licenses/_jini-ai_provider-plugins/NOTICE +28 -0
  112. package/plugins/fixture-provider/0.6.19/licenses/_jini-ai_provider-plugins/package-license.json +5 -0
  113. package/plugins/observability-opentelemetry/0.6.19/CHANGELOG.md +19 -0
  114. package/plugins/observability-opentelemetry/0.6.19/NOTICE +11 -0
  115. package/plugins/observability-opentelemetry/0.6.19/README.md +32 -0
  116. package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/jini.plugin.json +12 -9
  117. package/plugins/{analytics-posthog/0.6.15-rc.2 → observability-opentelemetry/0.6.19}/licenses/_jini-ai_core/package-license.json +1 -1
  118. package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_jini-ai_diagnostics/package-license.json +1 -1
  119. package/plugins/observability-opentelemetry/0.6.19/licenses/_jini-ai_plugins/LICENSE +201 -0
  120. package/plugins/observability-opentelemetry/0.6.19/licenses/_jini-ai_plugins/LICENSE-SOURCE +1 -0
  121. package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_jini-ai_plugins/package-license.json +1 -1
  122. package/plugins/observability-opentelemetry/0.6.19/licenses/_jini-ai_provider-plugins/LICENSE +201 -0
  123. package/plugins/observability-opentelemetry/0.6.19/licenses/_jini-ai_provider-plugins/NOTICE +28 -0
  124. package/plugins/observability-opentelemetry/0.6.19/licenses/_jini-ai_provider-plugins/package-license.json +5 -0
  125. package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/server/index.mjs +151 -46
  126. package/plugins/observability-sentry/0.6.19/CHANGELOG.md +19 -0
  127. package/plugins/observability-sentry/0.6.19/LICENSE +201 -0
  128. package/plugins/observability-sentry/0.6.19/NOTICE +11 -0
  129. package/plugins/observability-sentry/0.6.19/README.md +32 -0
  130. package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/jini.plugin.json +10 -5
  131. package/plugins/observability-sentry/0.6.19/licenses/_jini-ai_core/LICENSE +201 -0
  132. package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_jini-ai_core/package-license.json +1 -1
  133. package/plugins/observability-sentry/0.6.19/licenses/_jini-ai_diagnostics/LICENSE +201 -0
  134. package/plugins/{analytics-posthog/0.6.15-rc.2 → observability-sentry/0.6.19}/licenses/_jini-ai_diagnostics/package-license.json +1 -1
  135. package/plugins/observability-sentry/0.6.19/licenses/_jini-ai_provider-plugins/LICENSE +201 -0
  136. package/plugins/observability-sentry/0.6.19/licenses/_jini-ai_provider-plugins/NOTICE +28 -0
  137. package/plugins/observability-sentry/0.6.19/licenses/_jini-ai_provider-plugins/package-license.json +5 -0
  138. package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/server/index.mjs +111 -40
  139. package/plugins/payments-stripe/0.6.19/CHANGELOG.md +7 -0
  140. package/plugins/payments-stripe/0.6.19/LICENSE +201 -0
  141. package/plugins/payments-stripe/0.6.19/NOTICE +28 -0
  142. package/plugins/payments-stripe/0.6.19/README.md +36 -0
  143. package/plugins/payments-stripe/0.6.19/jini.plugin.json +72 -0
  144. package/plugins/payments-stripe/0.6.19/licenses/_jini-ai_commerce/LICENSE +201 -0
  145. package/plugins/payments-stripe/0.6.19/licenses/_jini-ai_commerce/NOTICE +28 -0
  146. package/plugins/payments-stripe/0.6.19/licenses/_jini-ai_commerce/package-license.json +5 -0
  147. package/plugins/payments-stripe/0.6.19/licenses/_jini-ai_core/LICENSE +201 -0
  148. package/plugins/payments-stripe/0.6.19/licenses/_jini-ai_core/package-license.json +5 -0
  149. package/plugins/payments-stripe/0.6.19/licenses/_jini-ai_provider-plugins/LICENSE +201 -0
  150. package/plugins/payments-stripe/0.6.19/licenses/_jini-ai_provider-plugins/NOTICE +28 -0
  151. package/plugins/payments-stripe/0.6.19/licenses/_jini-ai_provider-plugins/package-license.json +5 -0
  152. package/plugins/payments-stripe/0.6.19/server/index.mjs +311 -0
  153. package/plugins/analytics-posthog/0.6.15-rc.2/licenses/_jini-ai_cookie-consent/LICENSE-SOURCE +0 -1
  154. package/plugins/analytics-posthog/0.6.15-rc.2/server/consent-adapter.mjs +0 -1
  155. package/plugins/observability-opentelemetry/0.6.15-rc.2/licenses/_jini-ai_analytics/package-license.json +0 -5
  156. package/plugins/observability-opentelemetry/0.6.15-rc.2/licenses/_jini-ai_plugins/LICENSE-SOURCE +0 -1
  157. package/plugins/observability-sentry/0.6.15-rc.2/licenses/_jini-ai_provider-plugins/package-license.json +0 -5
  158. package/plugins/payments-stripe/0.6.15-rc.2/jini.plugin.json +0 -35
  159. package/plugins/payments-stripe/0.6.15-rc.2/licenses/_jini-ai_provider-plugins/package-license.json +0 -5
  160. package/plugins/payments-stripe/0.6.15-rc.2/server/index.mjs +0 -153
  161. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2/licenses/_jini-ai_provider-plugins → 0.6.19}/LICENSE +0 -0
  162. /package/plugins/{analytics-posthog/0.6.15-rc.2/licenses/_jini-ai_cookie-consent → ai-trace-langfuse/0.6.19/licenses/_jini-ai_provider-plugins}/LICENSE +0 -0
  163. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/licenses/langfuse/LICENSE +0 -0
  164. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/licenses/langfuse/LICENSE-SOURCE +0 -0
  165. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/licenses/langfuse/SOURCE +0 -0
  166. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/licenses/langfuse/package-license.json +0 -0
  167. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/licenses/langfuse-core/LICENSE +0 -0
  168. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/licenses/langfuse-core/LICENSE-SOURCE +0 -0
  169. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/licenses/langfuse-core/SOURCE +0 -0
  170. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/licenses/langfuse-core/package-license.json +0 -0
  171. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/licenses/mustache/LICENSE +0 -0
  172. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/licenses/mustache/package-license.json +0 -0
  173. /package/plugins/ai-trace-langfuse/{0.6.15-rc.2 → 0.6.19}/server/index.mjs +0 -0
  174. /package/plugins/analytics-posthog/{0.6.15-rc.2/licenses/_jini-ai_core → 0.6.19}/LICENSE +0 -0
  175. /package/plugins/analytics-posthog/{0.6.15-rc.2/licenses/_jini-ai_diagnostics → 0.6.19/licenses/_jini-ai_cookie-consent}/LICENSE +0 -0
  176. /package/plugins/analytics-posthog/{0.6.15-rc.2/licenses/_jini-ai_provider-plugins → 0.6.19/licenses/_jini-ai_core}/LICENSE +0 -0
  177. /package/plugins/{fixture-provider/0.6.15-rc.2/licenses/_jini-ai_provider-plugins → analytics-posthog/0.6.19/licenses/_jini-ai_diagnostics}/LICENSE +0 -0
  178. /package/plugins/{observability-opentelemetry/0.6.15-rc.2/licenses/_jini-ai_analytics → analytics-posthog/0.6.19/licenses/_jini-ai_provider-plugins}/LICENSE +0 -0
  179. /package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/licenses/_posthog_core/LICENSE +0 -0
  180. /package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/licenses/_posthog_core/package-license.json +0 -0
  181. /package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/licenses/js-tokens/LICENSE +0 -0
  182. /package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/licenses/js-tokens/package-license.json +0 -0
  183. /package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/licenses/posthog-js/LICENSE +0 -0
  184. /package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/licenses/posthog-js/package-license.json +0 -0
  185. /package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/licenses/posthog-node/LICENSE +0 -0
  186. /package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/licenses/posthog-node/package-license.json +0 -0
  187. /package/plugins/analytics-posthog/{0.6.15-rc.2 → 0.6.19}/server/posthog-browser.js +0 -0
  188. /package/plugins/{observability-opentelemetry/0.6.15-rc.2/licenses/_jini-ai_core → charts-echarts/0.6.19/licenses/_jini-ai_provider-plugins}/LICENSE +0 -0
  189. /package/plugins/{observability-opentelemetry/0.6.15-rc.2/licenses/_jini-ai_diagnostics → charts-echarts/0.6.19/licenses/_jini-ai_ui}/LICENSE +0 -0
  190. /package/plugins/{observability-opentelemetry/0.6.15-rc.2/licenses/_jini-ai_plugins → charts-recharts/0.6.19/licenses/_jini-ai_provider-plugins}/LICENSE +0 -0
  191. /package/plugins/{observability-opentelemetry/0.6.15-rc.2/licenses/_jini-ai_provider-plugins → charts-recharts/0.6.19/licenses/_jini-ai_ui}/LICENSE +0 -0
  192. /package/plugins/{observability-sentry/0.6.15-rc.2/licenses/_jini-ai_core → fixture-provider/0.6.19/licenses/_jini-ai_provider-plugins}/LICENSE +0 -0
  193. /package/plugins/fixture-provider/{0.6.15-rc.2 → 0.6.19}/server/index.mjs +0 -0
  194. /package/plugins/{observability-sentry/0.6.15-rc.2/licenses/_jini-ai_diagnostics → observability-opentelemetry/0.6.19}/LICENSE +0 -0
  195. /package/plugins/{observability-sentry/0.6.15-rc.2/licenses/_jini-ai_provider-plugins → observability-opentelemetry/0.6.19/licenses/_jini-ai_core}/LICENSE +0 -0
  196. /package/plugins/{payments-stripe/0.6.15-rc.2/licenses/_jini-ai_provider-plugins → observability-opentelemetry/0.6.19/licenses/_jini-ai_diagnostics}/LICENSE +0 -0
  197. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_api/LICENSE +0 -0
  198. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_api/package-license.json +0 -0
  199. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_api-logs/LICENSE +0 -0
  200. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_api-logs/package-license.json +0 -0
  201. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_context-async-hooks/LICENSE +0 -0
  202. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_context-async-hooks/package-license.json +0 -0
  203. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_core/LICENSE +0 -0
  204. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_core/package-license.json +0 -0
  205. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_otlp-exporter-base/LICENSE +0 -0
  206. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_otlp-exporter-base/package-license.json +0 -0
  207. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_otlp-transformer/LICENSE +0 -0
  208. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_otlp-transformer/package-license.json +0 -0
  209. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_resources/LICENSE +0 -0
  210. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_resources/package-license.json +0 -0
  211. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_sdk-metrics/LICENSE +0 -0
  212. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_sdk-metrics/package-license.json +0 -0
  213. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_sdk-trace/LICENSE +0 -0
  214. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_sdk-trace/package-license.json +0 -0
  215. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_sdk-trace-base/LICENSE +0 -0
  216. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_sdk-trace-base/package-license.json +0 -0
  217. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_sdk-trace-node/LICENSE +0 -0
  218. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_sdk-trace-node/package-license.json +0 -0
  219. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_semantic-conventions/LICENSE +0 -0
  220. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_semantic-conventions/package-license.json +0 -0
  221. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/js-tokens/LICENSE +0 -0
  222. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/js-tokens/package-license.json +0 -0
  223. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/semver/LICENSE +0 -0
  224. /package/plugins/observability-opentelemetry/{0.6.15-rc.2 → 0.6.19}/licenses/semver/package-license.json +0 -0
  225. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_api/LICENSE +0 -0
  226. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_opentelemetry_api/package-license.json +0 -0
  227. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_conventions/LICENSE +0 -0
  228. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_conventions/package-license.json +0 -0
  229. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_core/LICENSE +0 -0
  230. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_core/package-license.json +0 -0
  231. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_node/LICENSE +0 -0
  232. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_node/package-license.json +0 -0
  233. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_opentelemetry/LICENSE +0 -0
  234. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_opentelemetry/package-license.json +0 -0
  235. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_server-runtime-injection/LICENSE +0 -0
  236. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_server-runtime-injection/LICENSE-SOURCE +0 -0
  237. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_server-runtime-injection/package-license.json +0 -0
  238. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_server-utils/LICENSE +0 -0
  239. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_server-utils/LICENSE-SOURCE +0 -0
  240. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/_sentry_server-utils/package-license.json +0 -0
  241. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/js-tokens/LICENSE +0 -0
  242. /package/plugins/observability-sentry/{0.6.15-rc.2 → 0.6.19}/licenses/js-tokens/package-license.json +0 -0
@@ -17726,6 +17726,27 @@ var SECRET_SHAPE_PATTERNS = [
17726
17726
  { name: "Fastmail app password (fm2_)", pattern: /(?<![A-Za-z0-9+/=])fm2_[A-Za-z0-9+/=]{20,}/ },
17727
17727
  { name: PEM_PATTERN_NAME, pattern: /-----BEGIN [A-Z ]*PRIVATE KEY-----/ }
17728
17728
  ];
17729
+ var AGENT_FAILURE_TOKEN_SHAPES = [
17730
+ /AIza[\w-]+/,
17731
+ // Google API key
17732
+ /AQ\.[\w.\/-]+/,
17733
+ // AI Studio key
17734
+ /sk-[\w.-]+/,
17735
+ // OpenAI-style secret key
17736
+ /gh[pousr]_\w+/,
17737
+ // GitHub token
17738
+ /github_pat_\w+/,
17739
+ // GitHub fine-grained token
17740
+ /ya29\.[\w.-]+/,
17741
+ // Google OAuth access token
17742
+ /eyJ[\w-]+\.[\w-]+(?:\.[\w-]+)?/
17743
+ // JWT
17744
+ ];
17745
+ var AGENT_FAILURE_SECRET_SHAPE_RE = new RegExp(`\\b(?:${AGENT_FAILURE_TOKEN_SHAPES.map((shape) => shape.source).join("|")})`, "g");
17746
+ var IPV4_OCTET = "(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)";
17747
+ var PHONE_SEPARATOR = "[\\s.-]?";
17748
+ var PHONE_COUNTRY_CODE = /(?:\+?\d{1,3}[\s.-]?)?/;
17749
+ var PHONE_AREA_CODE = /(?:\(\d{3}\)|\d{3})/;
17729
17750
  var PATTERNS = [
17730
17751
  // Langfuse public/secret keys (pk-lf- / sk-lf-). Must run before the
17731
17752
  // generic sk- rule so the more specific label wins.
@@ -17761,14 +17782,16 @@ var PATTERNS = [
17761
17782
  // Bearer tokens in HTTP Authorization header copy/paste. We only match
17762
17783
  // the value, not the literal 'Bearer ', so the marker stays readable in
17763
17784
  // the redacted output ("Authorization: Bearer [REDACTED:bearer_token]").
17764
- { name: "bearer_token", regex: /(?<=\bBearer\s+)[A-Za-z0-9._~+/-]{16,}={0,2}/g },
17785
+ // The leading lookahead only lets the lookbehind run where a value can start, so a long
17786
+ // whitespace run is not rescanned from every position inside it.
17787
+ { name: "bearer_token", regex: /(?=[A-Za-z0-9._~+/-])(?<=\bBearer\s+)[A-Za-z0-9._~+/-]{16,}={0,2}/g },
17765
17788
  // Alphabetic TLDs preserve versioned package paths in error stacks (e.g. pkg@1.2.3).
17766
17789
  { name: "email", regex: /\b[\w.+-]+@(?:[\w-]+\.)+[A-Za-z]{2,}\b/g },
17767
17790
  // IPv4. Reject all-zero / 255.255.255.255-ish junk shapes by gating on
17768
17791
  // each octet being 0-255.
17769
17792
  {
17770
17793
  name: "ipv4",
17771
- regex: /\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\b/g
17794
+ regex: new RegExp(`\\b(?:${IPV4_OCTET}\\.){3}${IPV4_OCTET}\\b`, "g")
17772
17795
  },
17773
17796
  // Phone numbers. Tight US-leaning shape; a global PII detector would
17774
17797
  // need a real lib. We keep this so US-based test prompts ('call me at
@@ -17778,20 +17801,28 @@ var PATTERNS = [
17778
17801
  // hashes and identifiers stay readable; separators within phones still match.
17779
17802
  {
17780
17803
  name: "phone",
17781
- regex: /(?<![\w-])(?:\+?\d{1,3}[\s.-]?)?(?:\(\d{3}\)|\d{3})[\s.-]?\d{3}[\s.-]?\d{4}(?![\w-])/g
17804
+ regex: new RegExp(`(?<![\\w-])${PHONE_COUNTRY_CODE.source}${PHONE_AREA_CODE.source}${PHONE_SEPARATOR}\\d{3}${PHONE_SEPARATOR}\\d{4}(?![\\w-])`, "g")
17782
17805
  }
17783
17806
  ];
17807
+ var QUOTED_SECRET_VALUE = String.raw`"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'`;
17808
+ var API_KEY_HEADER = new RegExp(`(^|[^?&\\w-])(["']?)(x-api-key|api-key|x-goog-api-key)\\2(\\s*[:=]\\s*)(${QUOTED_SECRET_VALUE}|[^\\s,;"'#}]+)`, "gi");
17784
17809
  var SECRET_LABELS = "authorization|bearer|api[-_]?key|access[-_]?token|refresh[-_]?token|client[-_]?secret|password|secret|cookie";
17810
+ var SERIALIZED_SECRET_LABELS = `${SECRET_LABELS}|x[-_](?:goog[-_])?api[-_]?key|api key|token|set[-_]cookie|private[-_]?key`;
17811
+ var EMPTY_QUOTED_ASSIGNMENT_RE = new RegExp(`\\b(?:${SERIALIZED_SECRET_LABELS})\\s*[:=]\\s*$`, "i");
17785
17812
  var LABELED_SECRET_RE = new RegExp(`\\b(${SECRET_LABELS})\\b\\s*[:=]\\s*\\S+`, "gi");
17786
- var MASK_AWARE_LABELED_SECRET_RE = new RegExp(LABELED_SECRET_RE.source.replace(/\\S\+$/, "(?!Bearer\\s+\\[REDACTED:[^\\]]+\\](?:\\s|$))(?!\\[REDACTED:[^\\]]+\\][;&])(\\S+)"), LABELED_SECRET_RE.flags);
17813
+ var CORRELATION_ID = "ERR-[0-9A-F]{4}(?:-[0-9A-F]{4}){3}";
17814
+ var UPPER_SNAKE_DIAGNOSTIC = "[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)+";
17815
+ var NON_SECRET_TOKEN_RE = new RegExp(`^(?:${CORRELATION_ID}|delegated-tool-calls|${UPPER_SNAKE_DIAGNOSTIC})$`);
17816
+ var MASK_AWARE_LABELED_SECRET_RE = new RegExp(`(?<![\\w-])((["']?)(?:${SERIALIZED_SECRET_LABELS})\\2\\s*[:=]\\s*)(?!Bearer\\s+\\[REDACTED:[^\\]]+\\](?:\\s|$))(?!\\[REDACTED:[^\\]]+\\][;&])(${QUOTED_SECRET_VALUE}|(?!&)\\S+)`, "gi");
17787
17817
  var URL_CREDENTIALS_RE = /(\b[a-z][a-z0-9+.-]*:\/\/)([^/\s?#@]+)@/gi;
17788
- var URL_SECRET_PARAM_RE = /[?&#;]([\w.-]{0,128}?(?:token|key|secret|signature|sig|code|password|passwd|pwd|auth|authorization|credential)s?(?=[._=-])[\w.-]{0,128})=[^&\s"'<>()]+/gi;
17818
+ var URL_SECRET_WORDS = "token|key|secret|signature|sig|code|password|passwd|pwd|auth|authorization|credential";
17819
+ var URL_SECRET_PARAM_RE = new RegExp(`[?&#;]([\\w.-]{0,128}?(?:${URL_SECRET_WORDS})s?(?=[._=-])[\\w.-]{0,128})=[^&\\s"'<>()]+`, "gi");
17789
17820
  var LABELED_URL_PARAM_NAME_RE = new RegExp(`(?:^|[.-])(?:${SECRET_LABELS})$`, "i");
17790
17821
  var PII_PATTERN_NAMES = ["email", "ipv4", "phone"];
17791
17822
  var NON_PII_PATTERNS = PATTERNS.filter((pattern) => !PII_PATTERN_NAMES.includes(pattern.name));
17792
17823
  var PII_PATTERNS = PATTERNS.filter((pattern) => PII_PATTERN_NAMES.includes(pattern.name));
17793
17824
  var PROTECTED_SPAN_RE = new RegExp([
17794
- `\\b(?:${SECRET_LABELS})\\b\\s*[:=]`,
17825
+ `(?<![\\w-])["']?(?:${SERIALIZED_SECRET_LABELS})["']?\\s*[:=]`,
17795
17826
  "\\bbearer\\s+",
17796
17827
  URL_SECRET_PARAM_RE.source.slice(0, URL_SECRET_PARAM_RE.source.lastIndexOf("=") + 1),
17797
17828
  URL_CREDENTIALS_RE.source.slice(0, URL_CREDENTIALS_RE.source.indexOf(")") + 1),
@@ -17799,6 +17830,14 @@ var PROTECTED_SPAN_RE = new RegExp([
17799
17830
  "\\[redacted\\]"
17800
17831
  ].join("|"), "gi");
17801
17832
 
17833
+ // ../core/dist/primitives/trim-chars.js
17834
+ function trimCharsEnd({ text: text2, chars }) {
17835
+ let end = text2.length;
17836
+ while (end > 0 && chars.includes(text2.charAt(end - 1)))
17837
+ end -= 1;
17838
+ return text2.slice(0, end);
17839
+ }
17840
+
17802
17841
  // ../plugins/dist/host/provider-host.js
17803
17842
  var PluginProviderStartupError = class extends Error {
17804
17843
  reason;
@@ -17811,12 +17850,33 @@ var PluginProviderStartupError = class extends Error {
17811
17850
  }
17812
17851
  };
17813
17852
 
17853
+ // ../core/dist/text/line-tail.js
17854
+ var LINE_TERMINATOR = /[\n\r\u2028\u2029]/;
17855
+ function captureLineTail({ rest }, { minWhitespace = 0 } = {}) {
17856
+ const stripped = rest.trimStart();
17857
+ if (stripped !== "") {
17858
+ const leading = rest.length - stripped.length;
17859
+ return leading >= minWhitespace && !LINE_TERMINATOR.test(stripped) ? stripped : null;
17860
+ }
17861
+ if (rest.length < minWhitespace + 1)
17862
+ return null;
17863
+ const last = rest.slice(-1);
17864
+ return LINE_TERMINATOR.test(last) ? null : last;
17865
+ }
17866
+
17814
17867
  // ../plugins/dist/host/provider-setting-required.js
17815
17868
  function hasProviderAuthHeader({ text: text2, names }, _optional = {}) {
17816
- const pairs = text2.split(",").map((pair) => /^([^=\s][^=]*?)\s*=\s*(.+)$/.exec(pair.trim()));
17869
+ const pairs = text2.split(",").map((pair) => headerPair(pair.trim()));
17817
17870
  if (pairs.some((pair) => !pair))
17818
17871
  return false;
17819
- return pairs.some((pair) => names.some((name) => name.toLowerCase() === pair[1].toLowerCase()) && pair[2].trim() !== "");
17872
+ return pairs.some((pair) => names.some((name) => name.toLowerCase() === pair[0].toLowerCase()) && pair[1].trim() !== "");
17873
+ }
17874
+ function headerPair(pair) {
17875
+ const eq = pair.indexOf("=");
17876
+ if (eq <= 0)
17877
+ return null;
17878
+ const value = captureLineTail({ rest: pair.slice(eq + 1) });
17879
+ return value === null ? null : [pair.slice(0, eq).trimEnd(), value];
17820
17880
  }
17821
17881
 
17822
17882
  // ../diagnostics/dist/core/secrets-only.js
@@ -17830,6 +17890,10 @@ var REUSED_CREDENTIAL_RULES = SECRET_SHAPE_PATTERNS.map((vendor) => ({
17830
17890
  replacement: () => "[REDACTED:credential]"
17831
17891
  }));
17832
17892
  var LABELED_SECRET_LABELS = "password|passwd|pwd|secret|client_secret|api_key|apikey|access_token|refresh_token|id_token|auth_token|token|private_key|secret_access_key|signing_secret|webhook_secret";
17893
+ var AUTH_HEADER_NAMES = "(?:proxy-)?authorization|x-api-key|api-key|x-goog-api-key|x-auth-token";
17894
+ var AUTH_SCHEMES = "Bearer|Basic|Token|Digest|ApiKey";
17895
+ var AUTH_VALUE = String.raw`(?!\[REDACTED)[^\s"'),;]+`;
17896
+ var AUTH_HEADER_VALUE_RE = new RegExp(String.raw`(?<![a-z0-9-])(${AUTH_HEADER_NAMES})(\s*(?:["']\s*)?[:=]\s*["']?)` + String.raw`(?:((?:${AUTH_SCHEMES})\s+)${AUTH_VALUE}|(?!(?:${AUTH_SCHEMES})\s)${AUTH_VALUE})`, "gi");
17833
17897
  var REDACTION_RULES = [
17834
17898
  {
17835
17899
  kind: "private_key",
@@ -17853,12 +17917,12 @@ var REDACTION_RULES = [
17853
17917
  // text. The second alternative's own `(?!(?:Bearer|...)\s)` explicitly refuses to start on a
17854
17918
  // scheme keyword, so when the first alternative's lookahead fails there is no fallback left to
17855
17919
  // backtrack into, and the whole rule correctly finds no match on a second pass.
17856
- pattern: /(?<![A-Za-z0-9-])((?:proxy-)?authorization|x-api-key|api-key|x-goog-api-key|x-auth-token)(\s*["']?\s*[:=]\s*["']?)(?:((?:Bearer|Basic|Token|Digest|ApiKey)\s+)(?!\[REDACTED)[^\s"'),;]+|(?!\[REDACTED)(?!(?:Bearer|Basic|Token|Digest|ApiKey)\s)[^\s"'),;]+)/gi,
17920
+ pattern: AUTH_HEADER_VALUE_RE,
17857
17921
  replacement: ({ match: m }) => `${m[1]}${m[2]}${m[3] ?? ""}[REDACTED:auth_header]`
17858
17922
  },
17859
17923
  {
17860
17924
  kind: "auth_header",
17861
- pattern: /(?<![A-Za-z0-9-])((?:set-)?cookie)(\s*[:=]\s*)(?!\[REDACTED)[^\s"'),;]+(?:;\s*[^\s"'),;]+)*/gi,
17925
+ pattern: /(?<![a-z0-9-])((?:set-)?cookie)(\s*[:=]\s*)(?!\[REDACTED)[^\s"'),;]+(?:;\s*[^\s"'),;]+)*/gi,
17862
17926
  replacement: ({ match: m }) => `${m[1]}${m[2]}[REDACTED:auth_header]`
17863
17927
  },
17864
17928
  {
@@ -17874,18 +17938,18 @@ var REDACTION_RULES = [
17874
17938
  ...REUSED_CREDENTIAL_RULES,
17875
17939
  {
17876
17940
  kind: "stripe_key",
17877
- pattern: /(?<![A-Za-z0-9_])(?:sk|rk)_(?:live|test)_[0-9A-Za-z]{16,}/g,
17941
+ pattern: /(?<!\w)(?:sk|rk)_(?:live|test)_[0-9A-Za-z]{16,}/g,
17878
17942
  replacement: () => "[REDACTED:stripe_key]"
17879
17943
  },
17880
17944
  {
17881
17945
  kind: "stripe_key",
17882
- pattern: /(?<![A-Za-z0-9_])whsec_[A-Za-z0-9]{24,}/g,
17946
+ pattern: /(?<!\w)whsec_[A-Za-z0-9]{24,}/g,
17883
17947
  replacement: () => "[REDACTED:stripe_key]"
17884
17948
  },
17885
17949
  {
17886
17950
  kind: "github_token",
17887
17951
  // Covers `ghs_`/`ghu_`/`ghr_` and lengths the exact-length SECRET_SHAPE_PATTERNS entries miss.
17888
- pattern: /(?<![A-Za-z0-9_])gh[pousr]_[A-Za-z0-9]{30,}/g,
17952
+ pattern: /(?<!\w)gh[pousr]_[A-Za-z0-9]{30,}/g,
17889
17953
  replacement: () => "[REDACTED:github_token]"
17890
17954
  },
17891
17955
  {
@@ -18010,7 +18074,7 @@ function hasSecretLiteralContext({ previous }, _options = {}) {
18010
18074
  if (!name || name.type !== "IdentifierName" && name.type !== "StringLiteral")
18011
18075
  return false;
18012
18076
  const label = name.type === "StringLiteral" ? decodeStaticLiteral({ content: name.value.slice(1, -1) }) : name.value;
18013
- if (!/(pass(word|wd)?|secret|token|api[-_]?key|access[-_]?key|private[-_]?key|client[-_]?secret|auth(orization)?|bearer|cookie|credential)s?$/i.test(label))
18077
+ if (!SECRET_LABEL_SUFFIX.test(label))
18014
18078
  return false;
18015
18079
  if (separator === ":" || separator === "=")
18016
18080
  return true;
@@ -18041,20 +18105,34 @@ function redactUnclassifiedLiteral({ content, adjacentSecret }, _options = {}) {
18041
18105
  return { text: "[REDACTED:high_entropy]", redactions: 1 };
18042
18106
  return { text: content, redactions: 0 };
18043
18107
  }
18108
+ var SECRET_LABEL_WORDS = [
18109
+ "pass(word|wd)?",
18110
+ "secret",
18111
+ "token",
18112
+ "api[-_]?key",
18113
+ "access[-_]?key",
18114
+ "private[-_]?key",
18115
+ "client[-_]?secret",
18116
+ "auth(orization)?",
18117
+ "bearer",
18118
+ "cookie",
18119
+ "credential"
18120
+ ];
18121
+ var SECRET_LABEL_SUFFIX = new RegExp(`(${SECRET_LABEL_WORDS.join("|")})s?$`, "i");
18044
18122
  function decodeStaticLiteral({ content }, _options = {}) {
18045
18123
  const escapes = { n: "\n", r: "\r", t: " ", b: "\b", f: "\f", v: "\v" };
18046
- return content.replace(/\\(u\{[0-9a-fA-F]+\}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2}|[0-7]{1,3}|\r\n|[\s\S])/g, (_match, escape) => {
18047
- if (escape.startsWith("u{")) {
18048
- const point = Number.parseInt(escape.slice(2, -1), 16);
18124
+ return content.replace(/\\(u\{[0-9a-fA-F]+\}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2}|[0-7]{1,3}|\r\n|[\s\S])/g, (_match, sequence) => {
18125
+ if (sequence.startsWith("u{")) {
18126
+ const point = Number.parseInt(sequence.slice(2, -1), 16);
18049
18127
  return point <= 1114111 ? String.fromCodePoint(point) : "";
18050
18128
  }
18051
- if (/^[ux]/.test(escape) && escape.length > 1)
18052
- return String.fromCharCode(Number.parseInt(escape.slice(1), 16));
18053
- if (/^[0-7]+$/.test(escape))
18054
- return String.fromCharCode(Number.parseInt(escape, 8));
18055
- if (/^[\r\n]/.test(escape))
18129
+ if (/^[ux]/.test(sequence) && sequence.length > 1)
18130
+ return String.fromCharCode(Number.parseInt(sequence.slice(1), 16));
18131
+ if (/^[0-7]+$/.test(sequence))
18132
+ return String.fromCharCode(Number.parseInt(sequence, 8));
18133
+ if (/^[\r\n]/.test(sequence))
18056
18134
  return "";
18057
- return escapes[escape] ?? escape;
18135
+ return escapes[sequence] ?? sequence;
18058
18136
  });
18059
18137
  }
18060
18138
  function redactCodeTokenContent({ content, literal, adjacentSecret, policy }, _options = {}) {
@@ -18124,9 +18202,12 @@ function redactSecretShapes({ text: text2, policy }) {
18124
18202
  }
18125
18203
 
18126
18204
  // ../diagnostics/dist/observability/otel.js
18205
+ function fallbackErrorLabel(error) {
18206
+ return error instanceof Error ? String(error.name) : typeof error;
18207
+ }
18127
18208
  function errorType(error) {
18128
18209
  const code = error?.code;
18129
- const label = typeof code === "string" && /^[A-Z][A-Z0-9_]{1,63}$/.test(code) ? code : error instanceof Error ? String(error.name) : typeof error;
18210
+ const label = typeof code === "string" && /^[A-Z][A-Z0-9_]{1,63}$/.test(code) ? code : fallbackErrorLabel(error);
18130
18211
  return redactLabel(label).slice(0, MAX_ERROR_TYPE) || "Error";
18131
18212
  }
18132
18213
  var MAX_ERROR_TYPE = 64;
@@ -18138,11 +18219,8 @@ function redactLabel(text2) {
18138
18219
  }
18139
18220
  function redactOperationAttributes({ attributes }) {
18140
18221
  const safe = {};
18141
- for (const name of Object.keys(attributes)) {
18142
- if (Object.keys(safe).length >= MAX_ATTRIBUTES)
18143
- break;
18144
- if (!ATTRIBUTE_KEY.test(name) || redactLabel(name) !== name)
18145
- continue;
18222
+ const names = Object.keys(attributes).filter((name) => ATTRIBUTE_KEY.test(name) && redactLabel(name) === name);
18223
+ for (const name of names.slice(0, MAX_ATTRIBUTES)) {
18146
18224
  const value = attributes[name];
18147
18225
  safe[name] = typeof value === "string" ? redactLabel(value).slice(0, MAX_ATTRIBUTE_TEXT) : value;
18148
18226
  }
@@ -18163,10 +18241,14 @@ function safePathSegment({ segment }, _options = {}) {
18163
18241
  return ":param";
18164
18242
  return decoded;
18165
18243
  }
18244
+ function withoutQueryOrFragment(target) {
18245
+ const cut = target.search(/[?#]/);
18246
+ return cut === -1 ? target : target.slice(0, cut);
18247
+ }
18166
18248
  function redactRequestTarget({ path }, { routePattern } = {}) {
18167
18249
  if (routePattern && routePattern !== "unmatched")
18168
- return routePattern.replace(/[?#][\s\S]*$/, "").slice(0, 1024);
18169
- return path.replace(/[?#][\s\S]*$/, "").split("/").map((segment) => safePathSegment({ segment })).join("/").slice(0, 1024);
18250
+ return withoutQueryOrFragment(routePattern).slice(0, 1024);
18251
+ return withoutQueryOrFragment(path).split("/").map((segment) => safePathSegment({ segment })).join("/").slice(0, 1024);
18170
18252
  }
18171
18253
  function outboundTargetAttributes(url) {
18172
18254
  let parsed;
@@ -18249,8 +18331,10 @@ function createOtelObservabilityPort({ config, exporterFactory, tracerProviderFa
18249
18331
  const span = start({ name: `${method} ${target["server.address"]}`, kind: "client", attributes: { "http.request.method": method, ...target } });
18250
18332
  return { run: runIn(span), end: once(({ statusCode, error }) => {
18251
18333
  const attributes = statusCode !== void 0 ? { "http.response.status_code": statusCode } : {};
18252
- if (error !== void 0)
18253
- return finish({ span, attributes }, { failure: errorType(error), error });
18334
+ if (error !== void 0) {
18335
+ finish({ span, attributes }, { failure: errorType(error), error });
18336
+ return;
18337
+ }
18254
18338
  finish({ span, attributes }, statusCode !== void 0 && statusCode >= 400 ? { failure: String(statusCode) } : {});
18255
18339
  }) };
18256
18340
  },
@@ -18271,6 +18355,7 @@ function createOtelObservabilityPort({ config, exporterFactory, tracerProviderFa
18271
18355
  reportedSpans.add(span);
18272
18356
  if (!active)
18273
18357
  span.end({});
18358
+ return true;
18274
18359
  } catch {
18275
18360
  return false;
18276
18361
  }
@@ -18284,8 +18369,10 @@ function createOtelObservabilityPort({ config, exporterFactory, tracerProviderFa
18284
18369
  } }, { root: true });
18285
18370
  return { run: runIn(span), end: once(({ status, error }) => {
18286
18371
  const attributes = { "agent.run.status": status };
18287
- if (error !== void 0)
18288
- return finish({ span, attributes }, { failure: errorType(error), error });
18372
+ if (error !== void 0) {
18373
+ finish({ span, attributes }, { failure: errorType(error), error });
18374
+ return;
18375
+ }
18289
18376
  finish({ span, attributes }, FAILED_RUN_STATUSES.has(status) ? { failure: status } : {});
18290
18377
  }) };
18291
18378
  }
@@ -18302,13 +18389,15 @@ function resolveObservabilityConfig({ serviceName, tracerName }, { endpoint, tra
18302
18389
  throw new TypeError("serviceName must be non-empty");
18303
18390
  if (!tracerName.trim())
18304
18391
  throw new TypeError("tracerName must be non-empty");
18305
- return { enabled: true, serviceName: serviceName.trim(), tracerName: tracerName.trim(), endpoint: traces || `${base.replace(/\/+$/, "")}/v1/traces` };
18392
+ return { enabled: true, serviceName: serviceName.trim(), tracerName: tracerName.trim(), endpoint: traces || `${trimCharsEnd({ text: base, chars: "/" })}/v1/traces` };
18306
18393
  }
18307
18394
 
18308
18395
  // ../diagnostics/dist/observability/delivery.js
18309
18396
  var ERROR_CLASSES = /* @__PURE__ */ new Set(["Error", "TypeError", "RangeError", "TimeoutError", "AbortError", "OTLPExporterError", "PluginProviderError"]);
18310
18397
  function httpStatus(value) {
18311
- return typeof value === "number" && Number.isInteger(value) && value >= 100 && value <= 599 ? value : void 0;
18398
+ if (typeof value !== "number" || !Number.isInteger(value))
18399
+ return void 0;
18400
+ return value >= 100 && value <= 599 ? value : void 0;
18312
18401
  }
18313
18402
  function describeTelemetryFailure({ error }, _options = {}) {
18314
18403
  if (typeof error !== "object" || error === null)
@@ -19731,6 +19820,13 @@ function createProviderTelemetryReporter({ endpoint }, optional = {}) {
19731
19820
  };
19732
19821
  }
19733
19822
 
19823
+ // src/trim-trailing-slashes.ts
19824
+ function trimTrailingSlashes(text2) {
19825
+ let end = text2.length;
19826
+ while (end > 0 && text2[end - 1] === "/") end -= 1;
19827
+ return text2.slice(0, end);
19828
+ }
19829
+
19734
19830
  // src/observability-opentelemetry/opentelemetry.ts
19735
19831
  var OTLP_SPAN_EXPORTER_COMPONENT = "otlp_http_span_exporter";
19736
19832
  var BATCH_DEFAULTS = { maxExportBatchSize: 512, maxQueueSize: 2048, scheduledDelayMillis: 5e3, exportTimeoutMillis: 3e4 };
@@ -19816,7 +19912,7 @@ function createOtelFactories(_required, options = {}) {
19816
19912
  },
19817
19913
  exporterFactory: {
19818
19914
  create: ({ endpoint }) => {
19819
- if (options.spanProcessors !== void 0) return void 0;
19915
+ if (options.exportEnabled !== true || options.spanProcessors !== void 0) return void 0;
19820
19916
  const exporter = createInjectedOtlpTraceExporter({ url: endpoint }, options);
19821
19917
  exporterPipelines.set(exporter, createReportingExporter({
19822
19918
  exporter,
@@ -19827,7 +19923,7 @@ function createOtelFactories(_required, options = {}) {
19827
19923
  },
19828
19924
  tracerProviderFactory: {
19829
19925
  create: ({ serviceName, exporter }) => {
19830
- let spanProcessors = options.spanProcessors;
19926
+ let spanProcessors = options.exportEnabled === true ? options.spanProcessors : [];
19831
19927
  if (spanProcessors === void 0) {
19832
19928
  if (!(exporter instanceof OTLPExporterBase)) throw new TypeError("OpenTelemetry requires an OTLP trace exporter");
19833
19929
  spanProcessors = [new import_sdk_trace_base.BatchSpanProcessor(exporterPipelines.get(exporter) ?? exporter, BATCH_DEFAULTS)];
@@ -19846,13 +19942,13 @@ function createOtelFactories(_required, options = {}) {
19846
19942
  };
19847
19943
  }
19848
19944
  function resolveMetricsEndpoint({ tracesEndpoint }, { endpoint } = {}) {
19849
- if (endpoint?.trim()) return `${endpoint.trim().replace(/\/+$/, "")}/v1/metrics`;
19945
+ if (endpoint?.trim()) return `${trimTrailingSlashes(endpoint.trim())}/v1/metrics`;
19850
19946
  if (/\/v1\/traces(?=[?#]|$)/.test(tracesEndpoint)) return tracesEndpoint.replace(/\/v1\/traces(?=[?#]|$)/, "/v1/metrics");
19851
19947
  return new URL("/v1/metrics", tracesEndpoint).href;
19852
19948
  }
19853
19949
  function createMetricProvider({ config }, options = {}) {
19854
19950
  const endpoint = resolveMetricsEndpoint({ tracesEndpoint: config.endpoint }, options);
19855
- const readers = options.metricReaders ?? [new import_sdk_metrics.PeriodicExportingMetricReader({
19951
+ const readers = options.exportEnabled !== true ? [] : options.metricReaders ?? [new import_sdk_metrics.PeriodicExportingMetricReader({
19856
19952
  exporter: createReportingExporter({
19857
19953
  exporter: createInjectedOtlpExporter({
19858
19954
  url: endpoint,
@@ -19899,7 +19995,7 @@ function createOtelObservabilityAdapter({ config }, options = {}) {
19899
19995
  const { shutdown, ...factories } = createOtelFactories({}, options);
19900
19996
  const metrics = createMetrics({ config }, options);
19901
19997
  const port = { ...createOtelObservabilityPort({ config, ...factories }, { scope: createAsyncLocalSpanScope({}) }), metric: metrics.metric, supportsMetric: true };
19902
- reporter.initialized({ message: "OpenTelemetry exporting" });
19998
+ reporter.initialized({ message: options.exportEnabled === true ? "OpenTelemetry exporting" : "OpenTelemetry export disabled" });
19903
19999
  return { port, dispose: async () => {
19904
20000
  try {
19905
20001
  await Promise.all([shutdown(), metrics.shutdown()]);
@@ -20010,12 +20106,18 @@ var text = (value, name) => {
20010
20106
  if (typeof value !== "string") throw new TypeError(`${name} must be a string`);
20011
20107
  return value;
20012
20108
  };
20013
- var HEADER_PAIR = /^([^=\s][^=]*?)\s*=\s*(.+)$/;
20109
+ function parseHeaderPair(pair) {
20110
+ const eq = pair.indexOf("=");
20111
+ if (eq <= 0 || /\s/.test(pair[0])) return null;
20112
+ const value = pair.slice(eq + 1).trimStart();
20113
+ if (value === "" || /[\n\r\u2028\u2029]/.test(value)) return null;
20114
+ return [pair.slice(0, eq).trimEnd(), value];
20115
+ }
20014
20116
  function headersFromText(value) {
20015
20117
  if (!value.trim()) return void 0;
20016
- const pairs = value.split(",").map((pair) => HEADER_PAIR.exec(pair.trim()));
20118
+ const pairs = value.split(",").map((pair) => parseHeaderPair(pair.trim()));
20017
20119
  if (pairs.some((pair) => !pair)) throw new TypeError("headers must be Name=Value pairs separated by commas");
20018
- return Object.fromEntries(pairs.map((pair) => [pair[1], pair[2].trim()]));
20120
+ return Object.fromEntries(pairs.map((pair) => [pair[0], pair[1].trim()]));
20019
20121
  }
20020
20122
  function otlpHeadersOf(value) {
20021
20123
  if (value === void 0) return void 0;
@@ -20032,7 +20134,9 @@ function otlpAuthorization({ auth, username, token }, _optional = {}) {
20032
20134
  if (auth) throw new TypeError("Token is required");
20033
20135
  return void 0;
20034
20136
  }
20035
- return usesBasicAuthorization({ auth, username }) ? `Basic ${Buffer.from(`${username.trim()}:${value}`).toString("base64")}` : `Bearer ${value}`;
20137
+ if (!usesBasicAuthorization({ auth, username })) return `Bearer ${value}`;
20138
+ const credentials = `${username.trim()}:${value}`;
20139
+ return `Basic ${Buffer.from(credentials).toString("base64")}`;
20036
20140
  }
20037
20141
  function usesBasicAuthorization({ auth, username }, _optional = {}) {
20038
20142
  return auth === "grafana-cloud" || (auth === void 0 || auth === "token") && Boolean(username?.trim());
@@ -20075,6 +20179,7 @@ function createOpenTelemetryProvider(required, optional = {}) {
20075
20179
  const metricReaders = optional.metricReaders;
20076
20180
  const resourceAttributes = attributionOf(required.attribution).attributes;
20077
20181
  const options = {
20182
+ exportEnabled: optional.exportEnabled === true,
20078
20183
  endpoint,
20079
20184
  metricReaders,
20080
20185
  ...headers ? { headers } : {},
@@ -0,0 +1,19 @@
1
+ # @jini-ai/provider-plugins/observability-sentry
2
+
3
+ ## 0.6.17
4
+
5
+ ### Patch Changes
6
+
7
+ - Handle npm 12 pack JSON through the shared parser in packaging tests.
8
+
9
+ ## 0.6.16
10
+
11
+ ### Minor Changes
12
+
13
+ - Add a pure host-fact policy for outbound observability and require explicit export eligibility in
14
+ Sentry and OpenTelemetry provider factory options. Denied runtimes retain local admission while
15
+ Sentry events, spans, native crash uploads and OTLP trace/metric export stay off. Consent remains
16
+ independent. Hosts must supply the policy decision; rebuild and replace installed provider artifacts.
17
+
18
+ Migration: Hosts must now pass `exportEnabled: true` in provider factory options to permit export.
19
+
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for describing the origin of the Work and
141
+ reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Support. While redistributing the Work or
166
+ Derivative Works thereof, You may choose to offer, and charge a
167
+ fee for, acceptance of support, warranty, indemnity, or other
168
+ liability obligations and/or rights consistent with this License.
169
+ However, in accepting such obligations, You may act only on Your
170
+ own behalf and on Your sole responsibility, not on behalf of any
171
+ other Contributor, and only if You agree to indemnify, defend,
172
+ and hold each Contributor harmless for any liability incurred by,
173
+ or claims asserted against, such Contributor by reason of your
174
+ accepting any such warranty or support.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2026 Open Design contributors
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
@@ -0,0 +1,11 @@
1
+ Jini Sentry Provider Plugin
2
+ Copyright 2026 Leona Burime
3
+
4
+ This product includes software derived from Open Design
5
+ (https://github.com/nexu-io/open-design), Copyright its contributors,
6
+ used under the Apache License, Version 2.0.
7
+
8
+ The provider sources remain at packages/provider-plugins/src/observability-sentry.
9
+ This standalone distribution is extracted from @jini-ai/provider-plugins.
10
+ Bundled dependency licenses and notices are retained under the artifact's licenses/
11
+ directory by the shared builder and are included in its integrity manifest.