@spotlightjs/spotlight 4.5.0 → 4.6.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 (650) hide show
  1. package/dist/_virtual/_commonjsHelpers.js +9 -0
  2. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  3. package/dist/_virtual/cache.js +5 -0
  4. package/dist/_virtual/cache.js.map +1 -0
  5. package/dist/_virtual/index.js +5 -0
  6. package/dist/_virtual/index.js.map +1 -0
  7. package/dist/_virtual/re.js +5 -0
  8. package/dist/_virtual/re.js.map +1 -0
  9. package/dist/_virtual/uri.all.js +5 -0
  10. package/dist/_virtual/uri.all.js.map +1 -0
  11. package/dist/bootstrap.d.ts +0 -0
  12. package/dist/electron-index.d.ts +1 -0
  13. package/dist/index.d.ts +13 -0
  14. package/dist/instrument.js +74 -0
  15. package/dist/instrument.js.map +1 -0
  16. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js +233 -0
  17. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js.map +1 -0
  18. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +56 -0
  19. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js.map +1 -0
  20. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +188 -0
  21. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
  22. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +596 -0
  23. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +1 -0
  24. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js +68 -0
  25. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js.map +1 -0
  26. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +383 -0
  27. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
  28. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js +33 -0
  29. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js.map +1 -0
  30. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1037 -0
  31. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
  32. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/ajv.js +357 -0
  33. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/ajv.js.map +1 -0
  34. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/cache.js +21 -0
  35. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/cache.js.map +1 -0
  36. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/async.js +65 -0
  37. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/async.js.map +1 -0
  38. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/error_classes.js +28 -0
  39. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/error_classes.js.map +1 -0
  40. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/formats.js +110 -0
  41. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/formats.js.map +1 -0
  42. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/index.js +279 -0
  43. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/index.js.map +1 -0
  44. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/resolve.js +219 -0
  45. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/resolve.js.map +1 -0
  46. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/rules.js +92 -0
  47. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/rules.js.map +1 -0
  48. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/schema_obj.js +10 -0
  49. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/schema_obj.js.map +1 -0
  50. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/ucs2length.js +16 -0
  51. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/ucs2length.js.map +1 -0
  52. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/util.js +183 -0
  53. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/util.js.map +1 -0
  54. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/data.js +48 -0
  55. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/data.js.map +1 -0
  56. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/definition_schema.js +39 -0
  57. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/definition_schema.js.map +1 -0
  58. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limit.js +151 -0
  59. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limit.js.map +1 -0
  60. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitItems.js +81 -0
  61. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitItems.js.map +1 -0
  62. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitLength.js +86 -0
  63. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitLength.js.map +1 -0
  64. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitProperties.js +81 -0
  65. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitProperties.js.map +1 -0
  66. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/allOf.js +43 -0
  67. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/allOf.js.map +1 -0
  68. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/anyOf.js +74 -0
  69. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/anyOf.js.map +1 -0
  70. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/comment.js +17 -0
  71. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/comment.js.map +1 -0
  72. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/const.js +54 -0
  73. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/const.js.map +1 -0
  74. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/contains.js +79 -0
  75. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/contains.js.map +1 -0
  76. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/custom.js +221 -0
  77. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/custom.js.map +1 -0
  78. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/dependencies.js +162 -0
  79. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/dependencies.js.map +1 -0
  80. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/enum.js +63 -0
  81. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/enum.js.map +1 -0
  82. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/format.js +148 -0
  83. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/format.js.map +1 -0
  84. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/if.js +101 -0
  85. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/if.js.map +1 -0
  86. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/index.js +58 -0
  87. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/index.js.map +1 -0
  88. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/items.js +138 -0
  89. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/items.js.map +1 -0
  90. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/multipleOf.js +81 -0
  91. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/multipleOf.js.map +1 -0
  92. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/not.js +86 -0
  93. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/not.js.map +1 -0
  94. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/oneOf.js +72 -0
  95. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/oneOf.js.map +1 -0
  96. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/pattern.js +76 -0
  97. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/pattern.js.map +1 -0
  98. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/properties.js +313 -0
  99. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/properties.js.map +1 -0
  100. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/propertyNames.js +75 -0
  101. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/propertyNames.js.map +1 -0
  102. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/ref.js +125 -0
  103. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/ref.js.map +1 -0
  104. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/required.js +254 -0
  105. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/required.js.map +1 -0
  106. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/uniqueItems.js +86 -0
  107. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/uniqueItems.js.map +1 -0
  108. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/validate.js +455 -0
  109. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/validate.js.map +1 -0
  110. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/keyword.js +99 -0
  111. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/keyword.js.map +1 -0
  112. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/refs/data.json.js +41 -0
  113. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/refs/data.json.js.map +1 -0
  114. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/refs/json-schema-draft-07.json.js +257 -0
  115. package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/refs/json-schema-draft-07.json.js.map +1 -0
  116. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +32 -0
  117. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +1 -0
  118. package/dist/node_modules/.pnpm/fast-json-stable-stringify@2.1.0/node_modules/fast-json-stable-stringify/index.js +53 -0
  119. package/dist/node_modules/.pnpm/fast-json-stable-stringify@2.1.0/node_modules/fast-json-stable-stringify/index.js.map +1 -0
  120. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/helper/streaming/sse.js +24 -0
  121. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/helper/streaming/sse.js.map +1 -0
  122. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/middleware/cors/index.js +87 -0
  123. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/middleware/cors/index.js.map +1 -0
  124. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/html.js +35 -0
  125. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/html.js.map +1 -0
  126. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/stream.js +69 -0
  127. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/stream.js.map +1 -0
  128. package/dist/node_modules/.pnpm/json-schema-traverse@0.4.1/node_modules/json-schema-traverse/index.js +83 -0
  129. package/dist/node_modules/.pnpm/json-schema-traverse@0.4.1/node_modules/json-schema-traverse/index.js.map +1 -0
  130. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.js +123 -0
  131. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.js.map +1 -0
  132. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.js +388 -0
  133. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.js.map +1 -0
  134. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.js +277 -0
  135. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.js.map +1 -0
  136. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.js +11 -0
  137. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.js.map +1 -0
  138. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.js +53 -0
  139. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.js.map +1 -0
  140. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.js +46 -0
  141. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.js.map +1 -0
  142. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.js +12 -0
  143. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.js.map +1 -0
  144. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.js +8 -0
  145. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.js.map +1 -0
  146. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.js +8 -0
  147. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.js.map +1 -0
  148. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.js +42 -0
  149. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.js.map +1 -0
  150. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.js +8 -0
  151. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.js.map +1 -0
  152. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.js +8 -0
  153. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.js.map +1 -0
  154. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.js +8 -0
  155. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.js.map +1 -0
  156. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.js +22 -0
  157. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.js.map +1 -0
  158. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.js +8 -0
  159. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.js.map +1 -0
  160. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.js +8 -0
  161. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.js.map +1 -0
  162. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.js +8 -0
  163. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.js.map +1 -0
  164. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.js +8 -0
  165. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.js.map +1 -0
  166. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.js +8 -0
  167. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.js.map +1 -0
  168. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.js +20 -0
  169. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.js.map +1 -0
  170. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.js +8 -0
  171. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.js.map +1 -0
  172. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.js +11 -0
  173. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.js.map +1 -0
  174. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.js +8 -0
  175. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.js.map +1 -0
  176. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.js +8 -0
  177. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.js.map +1 -0
  178. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.js +15 -0
  179. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.js.map +1 -0
  180. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.js +8 -0
  181. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.js.map +1 -0
  182. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.js +11 -0
  183. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.js.map +1 -0
  184. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.js +135 -0
  185. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.js.map +1 -0
  186. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.js +29 -0
  187. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.js.map +1 -0
  188. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.js +7 -0
  189. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.js.map +1 -0
  190. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.js +22 -0
  191. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.js.map +1 -0
  192. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.js +35 -0
  193. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.js.map +1 -0
  194. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.js +16 -0
  195. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.js.map +1 -0
  196. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.js +91 -0
  197. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.js.map +1 -0
  198. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.js +8 -0
  199. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.js.map +1 -0
  200. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.js +12 -0
  201. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.js.map +1 -0
  202. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.js +8 -0
  203. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.js.map +1 -0
  204. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.js +28 -0
  205. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.js.map +1 -0
  206. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.js +28 -0
  207. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.js.map +1 -0
  208. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.js +57 -0
  209. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.js.map +1 -0
  210. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.js +74 -0
  211. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.js.map +1 -0
  212. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.js +49 -0
  213. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.js.map +1 -0
  214. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.js +163 -0
  215. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.js.map +1 -0
  216. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.js +8 -0
  217. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.js.map +1 -0
  218. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.js +14 -0
  219. package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.js.map +1 -0
  220. package/dist/node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/dist/es5/uri.all.js +1027 -0
  221. package/dist/node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/dist/es5/uri.all.js.map +1 -0
  222. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Options.js +38 -0
  223. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Options.js.map +1 -0
  224. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Refs.js +24 -0
  225. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +1 -0
  226. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +19 -0
  227. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +1 -0
  228. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +12 -0
  229. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +1 -0
  230. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseDef.js +62 -0
  231. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +1 -0
  232. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +19 -0
  233. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +1 -0
  234. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +29 -0
  235. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +1 -0
  236. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +49 -0
  237. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +1 -0
  238. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +9 -0
  239. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +1 -0
  240. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +8 -0
  241. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +1 -0
  242. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +8 -0
  243. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +1 -0
  244. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +62 -0
  245. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +1 -0
  246. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +11 -0
  247. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +1 -0
  248. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +9 -0
  249. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +1 -0
  250. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +10 -0
  251. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +1 -0
  252. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +45 -0
  253. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +1 -0
  254. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +22 -0
  255. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +1 -0
  256. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +30 -0
  257. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +1 -0
  258. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +16 -0
  259. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +1 -0
  260. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +13 -0
  261. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +1 -0
  262. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +12 -0
  263. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +1 -0
  264. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +36 -0
  265. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +1 -0
  266. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +52 -0
  267. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +1 -0
  268. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +73 -0
  269. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +1 -0
  270. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +23 -0
  271. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +1 -0
  272. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +23 -0
  273. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +1 -0
  274. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +8 -0
  275. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +1 -0
  276. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +8 -0
  277. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +1 -0
  278. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +59 -0
  279. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +1 -0
  280. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +24 -0
  281. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +1 -0
  282. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +322 -0
  283. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
  284. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +31 -0
  285. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +1 -0
  286. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +10 -0
  287. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +1 -0
  288. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +72 -0
  289. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +1 -0
  290. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +8 -0
  291. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +1 -0
  292. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/selectParser.js +109 -0
  293. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +1 -0
  294. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +67 -0
  295. package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +1 -0
  296. package/dist/run.d.ts +0 -1
  297. package/dist/run.js +23 -44623
  298. package/dist/run.js.map +1 -0
  299. package/dist/sentry-config.d.ts +7 -0
  300. package/dist/sentry-config.js +11 -0
  301. package/dist/sentry-config.js.map +1 -0
  302. package/dist/server/cli/help.d.ts +1 -0
  303. package/dist/server/cli/help.js +38 -0
  304. package/dist/server/cli/help.js.map +1 -0
  305. package/dist/server/cli/mcp.d.ts +2 -0
  306. package/dist/server/cli/mcp.js +105 -0
  307. package/dist/server/cli/mcp.js.map +1 -0
  308. package/dist/server/cli/run.d.ts +2 -0
  309. package/dist/server/cli/run.js +271 -0
  310. package/dist/server/cli/run.js.map +1 -0
  311. package/dist/server/cli/server.d.ts +2 -0
  312. package/dist/server/cli/server.js +13 -0
  313. package/dist/server/cli/server.js.map +1 -0
  314. package/dist/server/cli/tail.d.ts +8 -0
  315. package/dist/server/cli/tail.js +97 -0
  316. package/dist/server/cli/tail.js.map +1 -0
  317. package/dist/server/cli.d.ts +16 -0
  318. package/dist/server/cli.js +120 -0
  319. package/dist/server/cli.js.map +1 -0
  320. package/dist/server/constants.d.ts +3 -0
  321. package/dist/server/constants.js +7 -0
  322. package/dist/server/constants.js.map +1 -0
  323. package/dist/server/formatters/human/errors.d.ts +6 -0
  324. package/dist/server/formatters/human/errors.js +28 -0
  325. package/dist/server/formatters/human/errors.js.map +1 -0
  326. package/dist/server/formatters/human/index.d.ts +2 -0
  327. package/dist/server/formatters/human/index.js +13 -0
  328. package/dist/server/formatters/human/index.js.map +1 -0
  329. package/dist/server/formatters/human/logs.d.ts +6 -0
  330. package/dist/server/formatters/human/logs.js +23 -0
  331. package/dist/server/formatters/human/logs.js.map +1 -0
  332. package/dist/server/formatters/human/traces.d.ts +6 -0
  333. package/dist/server/formatters/human/traces.js +29 -0
  334. package/dist/server/formatters/human/traces.js.map +1 -0
  335. package/dist/server/formatters/human/utils.d.ts +43 -0
  336. package/dist/server/formatters/human/utils.js +113 -0
  337. package/dist/server/formatters/human/utils.js.map +1 -0
  338. package/dist/server/formatters/index.d.ts +11 -0
  339. package/dist/server/formatters/index.js +19 -0
  340. package/dist/server/formatters/index.js.map +1 -0
  341. package/dist/server/formatters/json/errors.d.ts +3 -0
  342. package/dist/server/formatters/json/errors.js +8 -0
  343. package/dist/server/formatters/json/errors.js.map +1 -0
  344. package/dist/server/formatters/json/index.d.ts +2 -0
  345. package/dist/server/formatters/json/index.js +13 -0
  346. package/dist/server/formatters/json/index.js.map +1 -0
  347. package/dist/server/formatters/json/logs.d.ts +3 -0
  348. package/dist/server/formatters/json/logs.js +11 -0
  349. package/dist/server/formatters/json/logs.js.map +1 -0
  350. package/dist/server/formatters/json/traces.d.ts +3 -0
  351. package/dist/server/formatters/json/traces.js +8 -0
  352. package/dist/server/formatters/json/traces.js.map +1 -0
  353. package/dist/server/formatters/logfmt/errors.d.ts +3 -0
  354. package/dist/server/formatters/logfmt/errors.js +9 -0
  355. package/dist/server/formatters/logfmt/errors.js.map +1 -0
  356. package/dist/server/formatters/logfmt/index.d.ts +2 -0
  357. package/dist/server/formatters/logfmt/index.js +13 -0
  358. package/dist/server/formatters/logfmt/index.js.map +1 -0
  359. package/dist/server/formatters/logfmt/logs.d.ts +3 -0
  360. package/dist/server/formatters/logfmt/logs.js +27 -0
  361. package/dist/server/formatters/logfmt/logs.js.map +1 -0
  362. package/dist/server/formatters/logfmt/traces.d.ts +3 -0
  363. package/dist/server/formatters/logfmt/traces.js +9 -0
  364. package/dist/server/formatters/logfmt/traces.js.map +1 -0
  365. package/dist/server/formatters/md/errors.d.ts +10 -0
  366. package/dist/server/formatters/md/errors.js +77 -0
  367. package/dist/server/formatters/md/errors.js.map +1 -0
  368. package/dist/server/formatters/md/event.d.ts +11 -0
  369. package/dist/server/formatters/md/event.js +362 -0
  370. package/dist/server/formatters/md/event.js.map +1 -0
  371. package/dist/server/formatters/md/index.d.ts +2 -0
  372. package/dist/server/formatters/md/index.js +13 -0
  373. package/dist/server/formatters/md/index.js.map +1 -0
  374. package/dist/server/formatters/md/logs.d.ts +7 -0
  375. package/dist/server/formatters/md/logs.js +39 -0
  376. package/dist/server/formatters/md/logs.js.map +1 -0
  377. package/dist/server/formatters/md/traces.d.ts +87 -0
  378. package/dist/server/formatters/md/traces.js +300 -0
  379. package/dist/server/formatters/md/traces.js.map +1 -0
  380. package/dist/server/formatters/schema.d.ts +6810 -0
  381. package/dist/server/formatters/shared/data-builders.d.ts +15 -0
  382. package/dist/server/formatters/shared/data-builders.js +120 -0
  383. package/dist/server/formatters/shared/data-builders.js.map +1 -0
  384. package/dist/server/formatters/types.d.ts +33 -0
  385. package/dist/server/formatters/types.js +5 -0
  386. package/dist/server/formatters/types.js.map +1 -0
  387. package/dist/server/formatters/utils.d.ts +25 -0
  388. package/dist/server/formatters/utils.js +46 -0
  389. package/dist/server/formatters/utils.js.map +1 -0
  390. package/dist/server/handlers/fileToServe.d.ts +2 -0
  391. package/dist/server/handlers/fileToServe.js +27 -0
  392. package/dist/server/handlers/fileToServe.js.map +1 -0
  393. package/dist/server/handlers/index.d.ts +1 -0
  394. package/dist/server/logger.d.ts +5 -0
  395. package/dist/server/logger.js +31 -0
  396. package/dist/server/logger.js.map +1 -0
  397. package/dist/server/main.d.ts +6 -0
  398. package/dist/server/main.js +175 -0
  399. package/dist/server/main.js.map +1 -0
  400. package/dist/server/mcp/constants.d.ts +3 -0
  401. package/dist/server/mcp/constants.js +79 -0
  402. package/dist/server/mcp/constants.js.map +1 -0
  403. package/dist/server/mcp/mcp.d.ts +31 -0
  404. package/dist/server/mcp/mcp.js +392 -0
  405. package/dist/server/mcp/mcp.js.map +1 -0
  406. package/dist/server/messageBuffer.d.ts +40 -0
  407. package/dist/server/messageBuffer.js +279 -0
  408. package/dist/server/messageBuffer.js.map +1 -0
  409. package/dist/server/parser/helpers.d.ts +10 -0
  410. package/dist/server/parser/helpers.js +32 -0
  411. package/dist/server/parser/helpers.js.map +1 -0
  412. package/dist/server/parser/index.d.ts +3 -0
  413. package/dist/server/parser/processEnvelope.d.ts +17 -0
  414. package/dist/server/parser/processEnvelope.js +86 -0
  415. package/dist/server/parser/processEnvelope.js.map +1 -0
  416. package/dist/server/parser/types.d.ts +198 -0
  417. package/dist/server/routes/clear.d.ts +3 -0
  418. package/dist/server/routes/clear.js +15 -0
  419. package/dist/server/routes/clear.js.map +1 -0
  420. package/dist/server/routes/contextlines/index.d.ts +3 -0
  421. package/dist/server/routes/contextlines/index.js +44 -0
  422. package/dist/server/routes/contextlines/index.js.map +1 -0
  423. package/dist/server/routes/contextlines/utils.d.ts +20 -0
  424. package/dist/server/routes/contextlines/utils.js +83 -0
  425. package/dist/server/routes/contextlines/utils.js.map +1 -0
  426. package/dist/server/routes/health.d.ts +3 -0
  427. package/dist/server/routes/health.js +7 -0
  428. package/dist/server/routes/health.js.map +1 -0
  429. package/dist/server/routes/index.d.ts +3 -0
  430. package/dist/server/routes/index.js +19 -0
  431. package/dist/server/routes/index.js.map +1 -0
  432. package/dist/server/routes/mcp.d.ts +3 -0
  433. package/dist/server/routes/mcp.js +20 -0
  434. package/dist/server/routes/mcp.js.map +1 -0
  435. package/dist/server/routes/open.d.ts +4 -0
  436. package/dist/server/routes/open.js +25 -0
  437. package/dist/server/routes/open.js.map +1 -0
  438. package/dist/server/routes/stream/debugLogging.d.ts +11 -0
  439. package/dist/server/routes/stream/debugLogging.js +59 -0
  440. package/dist/server/routes/stream/debugLogging.js.map +1 -0
  441. package/dist/server/routes/stream/index.d.ts +34 -0
  442. package/dist/server/routes/stream/index.js +98 -0
  443. package/dist/server/routes/stream/index.js.map +1 -0
  444. package/dist/server/routes/stream/streaming.d.ts +3 -0
  445. package/dist/server/routes/stream/streaming.js +26 -0
  446. package/dist/server/routes/stream/streaming.js.map +1 -0
  447. package/dist/server/routes/stream/userAgent.d.ts +11 -0
  448. package/dist/server/routes/stream/userAgent.js +25 -0
  449. package/dist/server/routes/stream/userAgent.js.map +1 -0
  450. package/dist/server/sdk.d.ts +15 -0
  451. package/dist/server/sdk.js +32 -0
  452. package/dist/server/sdk.js.map +1 -0
  453. package/dist/server/types/cli.d.ts +14 -0
  454. package/dist/server/types/env.d.ts +10 -0
  455. package/dist/server/types/index.d.ts +2 -0
  456. package/dist/server/types/utils.d.ts +44 -0
  457. package/dist/server/utils/cors.d.ts +12 -0
  458. package/dist/server/utils/cors.js +22 -0
  459. package/dist/server/utils/cors.js.map +1 -0
  460. package/dist/server/utils/docker-compose-parser.d.ts +20 -0
  461. package/dist/server/utils/docker-compose-parser.js +61 -0
  462. package/dist/server/utils/docker-compose-parser.js.map +1 -0
  463. package/dist/server/utils/docker-compose.d.ts +30 -0
  464. package/dist/server/utils/docker-compose.js +131 -0
  465. package/dist/server/utils/docker-compose.js.map +1 -0
  466. package/dist/server/utils/eventContainer.d.ts +34 -0
  467. package/dist/server/utils/eventContainer.js +71 -0
  468. package/dist/server/utils/eventContainer.js.map +1 -0
  469. package/dist/server/utils/extras.d.ts +5 -0
  470. package/dist/server/utils/extras.js +63 -0
  471. package/dist/server/utils/extras.js.map +1 -0
  472. package/dist/server/utils/getBuffer.d.ts +1 -0
  473. package/dist/server/utils/getBuffer.js +9 -0
  474. package/dist/server/utils/getBuffer.js.map +1 -0
  475. package/dist/server/utils/index.d.ts +4 -0
  476. package/dist/shared/constants.d.ts +3 -0
  477. package/dist/shared/constants.js +9 -0
  478. package/dist/shared/constants.js.map +1 -0
  479. package/dist/ui/assets/angular-html.js +1 -0
  480. package/dist/ui/assets/angular-ts.js +1 -0
  481. package/dist/ui/assets/astro.js +1 -0
  482. package/dist/ui/assets/blade.js +1 -0
  483. package/dist/ui/assets/client.js +50 -0
  484. package/dist/ui/assets/coffee.js +1 -0
  485. package/dist/ui/assets/cpp.js +1 -0
  486. package/dist/ui/assets/electron-index.js +6 -0
  487. package/dist/ui/assets/firefox.svg +105 -0
  488. package/dist/ui/assets/glsl.js +1 -0
  489. package/dist/ui/assets/graphql.js +1 -0
  490. package/dist/ui/assets/haml.js +1 -0
  491. package/dist/ui/assets/handlebars.js +1 -0
  492. package/dist/ui/assets/html-derivative.js +1 -0
  493. package/dist/ui/assets/html.js +1 -0
  494. package/dist/ui/assets/http.js +1 -0
  495. package/dist/ui/assets/index.js +152 -0
  496. package/dist/ui/assets/index2.js +1 -0
  497. package/dist/ui/assets/instrumentation.js +24 -0
  498. package/dist/ui/assets/jinja.js +1 -0
  499. package/dist/ui/assets/jison.js +1 -0
  500. package/dist/ui/assets/julia.js +1 -0
  501. package/dist/ui/assets/main.css +1 -0
  502. package/dist/ui/assets/main.js +2 -0
  503. package/dist/ui/assets/marko.js +1 -0
  504. package/dist/ui/assets/mdc.js +1 -0
  505. package/dist/ui/assets/nestjs.svg +4 -0
  506. package/dist/ui/assets/php.js +1 -0
  507. package/dist/ui/assets/pug.js +1 -0
  508. package/dist/ui/assets/raleway-cyrillic-400-normal.woff +0 -0
  509. package/dist/ui/assets/raleway-cyrillic-400-normal.woff2 +0 -0
  510. package/dist/ui/assets/raleway-cyrillic-ext-400-normal.woff +0 -0
  511. package/dist/ui/assets/raleway-cyrillic-ext-400-normal.woff2 +0 -0
  512. package/dist/ui/assets/raleway-latin-400-normal.woff +0 -0
  513. package/dist/ui/assets/raleway-latin-400-normal.woff2 +0 -0
  514. package/dist/ui/assets/raleway-latin-ext-400-normal.woff +0 -0
  515. package/dist/ui/assets/raleway-latin-ext-400-normal.woff2 +0 -0
  516. package/dist/ui/assets/raleway-vietnamese-400-normal.woff +0 -0
  517. package/dist/ui/assets/raleway-vietnamese-400-normal.woff2 +0 -0
  518. package/dist/ui/assets/safari.svg +38 -0
  519. package/dist/ui/assets/scss.js +1 -0
  520. package/dist/ui/assets/svelte.js +1 -0
  521. package/dist/ui/assets/ts-tags.js +1 -0
  522. package/dist/ui/assets/vue-html.js +1 -0
  523. package/dist/ui/assets/vue-vine.js +1 -0
  524. package/dist/ui/assets/vue.js +1 -0
  525. package/dist/ui/assets/xml.js +1 -0
  526. package/dist/{overlay/src → ui}/index.html +34 -0
  527. package/dist/ui/manifest.json +1103 -0
  528. package/package.json +109 -19
  529. package/dist/overlay/assets/angular-html-BmadGEgW.js +0 -1
  530. package/dist/overlay/assets/angular-ts-D-QQnnGT.js +0 -1
  531. package/dist/overlay/assets/astro-DHnp0xIo.js +0 -1
  532. package/dist/overlay/assets/blade-OPzGcV14.js +0 -1
  533. package/dist/overlay/assets/coffee-Dl27lzbd.js +0 -1
  534. package/dist/overlay/assets/cpp-Cj177cuW.js +0 -1
  535. package/dist/overlay/assets/glsl-CkUcVZNK.js +0 -1
  536. package/dist/overlay/assets/graphql-BLaPX4fU.js +0 -1
  537. package/dist/overlay/assets/haml-6FagfhCM.js +0 -1
  538. package/dist/overlay/assets/handlebars-Bd5Y4M6I.js +0 -1
  539. package/dist/overlay/assets/html-7XVNRwN7.js +0 -1
  540. package/dist/overlay/assets/html-derivative-BNxZ5Yf6.js +0 -1
  541. package/dist/overlay/assets/http-WC357zBG.js +0 -1
  542. package/dist/overlay/assets/index-BfFEknL3.js +0 -1
  543. package/dist/overlay/assets/jinja-WEhOU5ES.js +0 -1
  544. package/dist/overlay/assets/jison-c2JI40PB.js +0 -1
  545. package/dist/overlay/assets/julia-DcoDQokW.js +0 -1
  546. package/dist/overlay/assets/main.js +0 -224
  547. package/dist/overlay/assets/marko-DDi9qpQP.js +0 -1
  548. package/dist/overlay/assets/mdc-FI2x3BiY.js +0 -1
  549. package/dist/overlay/assets/php-BRU9zhoN.js +0 -1
  550. package/dist/overlay/assets/pug-CJWI-qSo.js +0 -1
  551. package/dist/overlay/assets/scss-B1FaCqwR.js +0 -1
  552. package/dist/overlay/assets/svelte-BjDUPxZ1.js +0 -1
  553. package/dist/overlay/assets/ts-tags-CZMzuZh-.js +0 -1
  554. package/dist/overlay/assets/vue-D-ba2-Rx.js +0 -1
  555. package/dist/overlay/assets/vue-html-Dn2ZoOSz.js +0 -1
  556. package/dist/overlay/assets/vue-vine-Jmfkm6lF.js +0 -1
  557. package/dist/overlay/assets/xml-C2J0sS9M.js +0 -1
  558. package/dist/overlay/manifest.json +0 -1000
  559. package/dist/run.cjs +0 -44693
  560. package/dist/sidecar.cjs +0 -7
  561. package/dist/sidecar.d.ts +0 -1
  562. package/dist/sidecar.js +0 -4
  563. /package/dist/{overlay/assets/andromeeda-BIpZ7gaU.js → ui/assets/andromeeda.js} +0 -0
  564. /package/dist/{overlay/assets/aurora-x-BwoVEUWZ.js → ui/assets/aurora-x.js} +0 -0
  565. /package/dist/{overlay/assets/ayu-dark-CxPZkpb2.js → ui/assets/ayu-dark.js} +0 -0
  566. /package/dist/{overlay/assets/c-eeMepfLm.js → ui/assets/c.js} +0 -0
  567. /package/dist/{overlay/assets/catppuccin-frappe-5udUqgsX.js → ui/assets/catppuccin-frappe.js} +0 -0
  568. /package/dist/{overlay/assets/catppuccin-latte-ufkS-HWv.js → ui/assets/catppuccin-latte.js} +0 -0
  569. /package/dist/{overlay/assets/catppuccin-macchiato-DzL2LPek.js → ui/assets/catppuccin-macchiato.js} +0 -0
  570. /package/dist/{overlay/assets/catppuccin-mocha-DDDDwkUT.js → ui/assets/catppuccin-mocha.js} +0 -0
  571. /package/dist/{overlay/assets/css-CECN5uSL.js → ui/assets/css.js} +0 -0
  572. /package/dist/{overlay/assets/dark-plus-pUHDTVV0.js → ui/assets/dark-plus.js} +0 -0
  573. /package/dist/{overlay/assets/dracula-soft-BKa-aqBv.js → ui/assets/dracula-soft.js} +0 -0
  574. /package/dist/{overlay/assets/dracula-BtZx2Kac.js → ui/assets/dracula.js} +0 -0
  575. /package/dist/{overlay/assets/everforest-dark-DMCBqXCK.js → ui/assets/everforest-dark.js} +0 -0
  576. /package/dist/{overlay/assets/everforest-light-BbXl82Em.js → ui/assets/everforest-light.js} +0 -0
  577. /package/dist/{overlay/assets/github-dark-default-BJPUVz4H.js → ui/assets/github-dark-default.js} +0 -0
  578. /package/dist/{overlay/assets/github-dark-dimmed-DUshB20C.js → ui/assets/github-dark-dimmed.js} +0 -0
  579. /package/dist/{overlay/assets/github-dark-high-contrast-D3aGCnF8.js → ui/assets/github-dark-high-contrast.js} +0 -0
  580. /package/dist/{overlay/assets/github-dark-DenFmJkN.js → ui/assets/github-dark.js} +0 -0
  581. /package/dist/{overlay/assets/github-light-default-D99KPAby.js → ui/assets/github-light-default.js} +0 -0
  582. /package/dist/{overlay/assets/github-light-high-contrast-BbmZE-Mp.js → ui/assets/github-light-high-contrast.js} +0 -0
  583. /package/dist/{overlay/assets/github-light-JYsPkUQd.js → ui/assets/github-light.js} +0 -0
  584. /package/dist/{overlay/assets/gruvbox-dark-hard-C2ND4cMr.js → ui/assets/gruvbox-dark-hard.js} +0 -0
  585. /package/dist/{overlay/assets/gruvbox-dark-medium-C8k4c8au.js → ui/assets/gruvbox-dark-medium.js} +0 -0
  586. /package/dist/{overlay/assets/gruvbox-dark-soft-xx9Q6FaG.js → ui/assets/gruvbox-dark-soft.js} +0 -0
  587. /package/dist/{overlay/assets/gruvbox-light-hard-BpUXv5in.js → ui/assets/gruvbox-light-hard.js} +0 -0
  588. /package/dist/{overlay/assets/gruvbox-light-medium-D3XFCoU1.js → ui/assets/gruvbox-light-medium.js} +0 -0
  589. /package/dist/{overlay/assets/gruvbox-light-soft-u7hpfz6Z.js → ui/assets/gruvbox-light-soft.js} +0 -0
  590. /package/dist/{overlay/assets/houston-BDYrDoDW.js → ui/assets/houston.js} +0 -0
  591. /package/dist/{overlay/assets/imba-CimUv-Uh.js → ui/assets/imba.js} +0 -0
  592. /package/dist/{overlay/assets/java-DY6VlHhP.js → ui/assets/java.js} +0 -0
  593. /package/dist/{overlay/assets/javascript-Dp1Jmi5H.js → ui/assets/javascript.js} +0 -0
  594. /package/dist/{overlay/assets/json-DxJze_jm.js → ui/assets/json.js} +0 -0
  595. /package/dist/{overlay/assets/json5-BT4Fjg39.js → ui/assets/json5.js} +0 -0
  596. /package/dist/{overlay/assets/jsonc-CHjZD8gR.js → ui/assets/jsonc.js} +0 -0
  597. /package/dist/{overlay/assets/jsonl-BGuvDmy9.js → ui/assets/jsonl.js} +0 -0
  598. /package/dist/{overlay/assets/jsx-BtKADgXT.js → ui/assets/jsx.js} +0 -0
  599. /package/dist/{overlay/assets/kanagawa-dragon-CiKur4Hl.js → ui/assets/kanagawa-dragon.js} +0 -0
  600. /package/dist/{overlay/assets/kanagawa-lotus-BKu-smKu.js → ui/assets/kanagawa-lotus.js} +0 -0
  601. /package/dist/{overlay/assets/kanagawa-wave-CQwozSzG.js → ui/assets/kanagawa-wave.js} +0 -0
  602. /package/dist/{overlay/assets/laserwave-6a00oqik.js → ui/assets/laserwave.js} +0 -0
  603. /package/dist/{overlay/assets/less-B1GLI2Di.js → ui/assets/less.js} +0 -0
  604. /package/dist/{overlay/assets/light-plus-CZuVqSLX.js → ui/assets/light-plus.js} +0 -0
  605. /package/dist/{overlay/assets/markdown-CrScaQ96.js → ui/assets/markdown.js} +0 -0
  606. /package/dist/{overlay/assets/material-theme-darker-CkRroheE.js → ui/assets/material-theme-darker.js} +0 -0
  607. /package/dist/{overlay/assets/material-theme-lighter-BUBw43Yz.js → ui/assets/material-theme-lighter.js} +0 -0
  608. /package/dist/{overlay/assets/material-theme-ocean-ClGX14Ja.js → ui/assets/material-theme-ocean.js} +0 -0
  609. /package/dist/{overlay/assets/material-theme-palenight-C1RVm8K1.js → ui/assets/material-theme-palenight.js} +0 -0
  610. /package/dist/{overlay/assets/material-theme-D6KBX41T.js → ui/assets/material-theme.js} +0 -0
  611. /package/dist/{overlay/assets/mdx-BOhZZUJ8.js → ui/assets/mdx.js} +0 -0
  612. /package/dist/{overlay/assets/min-dark-C7ak0t6c.js → ui/assets/min-dark.js} +0 -0
  613. /package/dist/{overlay/assets/min-light-CKFxVcPp.js → ui/assets/min-light.js} +0 -0
  614. /package/dist/{overlay/assets/monokai-C1KBYcO0.js → ui/assets/monokai.js} +0 -0
  615. /package/dist/{overlay/assets/night-owl-Bm2rzalh.js → ui/assets/night-owl.js} +0 -0
  616. /package/dist/{overlay/assets/nord-CC5OiUXg.js → ui/assets/nord.js} +0 -0
  617. /package/dist/{overlay/assets/one-dark-pro-DTA3VF0_.js → ui/assets/one-dark-pro.js} +0 -0
  618. /package/dist/{overlay/assets/one-light-D9sNaUtq.js → ui/assets/one-light.js} +0 -0
  619. /package/dist/{overlay/assets/plastic-CSTz3KZp.js → ui/assets/plastic.js} +0 -0
  620. /package/dist/{overlay/assets/poimandres-C-VADXHD.js → ui/assets/poimandres.js} +0 -0
  621. /package/dist/{overlay/assets/postcss-05aHdL-n.js → ui/assets/postcss.js} +0 -0
  622. /package/dist/{overlay/assets/python-BFNSHbwJ.js → ui/assets/python.js} +0 -0
  623. /package/dist/{overlay/assets/r-Bm0uF0U2.js → ui/assets/r.js} +0 -0
  624. /package/dist/{overlay/assets/red-7y8PH7HH.js → ui/assets/red.js} +0 -0
  625. /package/dist/{overlay/assets/regexp-BazyLpPg.js → ui/assets/regexp.js} +0 -0
  626. /package/dist/{overlay/assets/rose-pine-dawn-ClRRUdXX.js → ui/assets/rose-pine-dawn.js} +0 -0
  627. /package/dist/{overlay/assets/rose-pine-moon-ucNn3Gm8.js → ui/assets/rose-pine-moon.js} +0 -0
  628. /package/dist/{overlay/assets/rose-pine-Cr4kwgAY.js → ui/assets/rose-pine.js} +0 -0
  629. /package/dist/{overlay/assets/sass-DxHp5rTx.js → ui/assets/sass.js} +0 -0
  630. /package/dist/{overlay/assets/shellscript-InADTalH.js → ui/assets/shellscript.js} +0 -0
  631. /package/dist/{overlay/assets/slack-dark-i7wN4OET.js → ui/assets/slack-dark.js} +0 -0
  632. /package/dist/{overlay/assets/slack-ochin-ndHf0LoP.js → ui/assets/slack-ochin.js} +0 -0
  633. /package/dist/{overlay/assets/snazzy-light-BlSJXAu4.js → ui/assets/snazzy-light.js} +0 -0
  634. /package/dist/{overlay/assets/solarized-dark-UTmkh7lw.js → ui/assets/solarized-dark.js} +0 -0
  635. /package/dist/{overlay/assets/solarized-light-BheCkDPT.js → ui/assets/solarized-light.js} +0 -0
  636. /package/dist/{overlay/assets/sql-Cn_v3PB0.js → ui/assets/sql.js} +0 -0
  637. /package/dist/{overlay/assets/stylus-CyKEU1Ej.js → ui/assets/stylus.js} +0 -0
  638. /package/dist/{overlay/assets/synthwave-84-NU3C_KFZ.js → ui/assets/synthwave-84.js} +0 -0
  639. /package/dist/{overlay/assets/tokyo-night-DP4TmcQl.js → ui/assets/tokyo-night.js} +0 -0
  640. /package/dist/{overlay/assets/tsx-B8rCNbgL.js → ui/assets/tsx.js} +0 -0
  641. /package/dist/{overlay/assets/typescript-mg6ATTE8.js → ui/assets/typescript.js} +0 -0
  642. /package/dist/{overlay/assets/vesper-BckBta1U.js → ui/assets/vesper.js} +0 -0
  643. /package/dist/{overlay/assets/vitesse-black-BoGvW84i.js → ui/assets/vitesse-black.js} +0 -0
  644. /package/dist/{overlay/assets/vitesse-dark-Cym-eLtO.js → ui/assets/vitesse-dark.js} +0 -0
  645. /package/dist/{overlay/assets/vitesse-light-CcmG315c.js → ui/assets/vitesse-light.js} +0 -0
  646. /package/dist/{overlay/assets/wasm-BBXxrAl7.js → ui/assets/wasm.js} +0 -0
  647. /package/dist/{overlay/assets/wasm-DQxwEHae.js → ui/assets/wasm2.js} +0 -0
  648. /package/dist/{overlay/assets/wgsl-DY4iK1q1.js → ui/assets/wgsl.js} +0 -0
  649. /package/dist/{overlay/assets/wit-CQMQOlTg.js → ui/assets/wit.js} +0 -0
  650. /package/dist/{overlay/assets/yaml-DaO7k5B1.js → ui/assets/yaml.js} +0 -0
@@ -0,0 +1,279 @@
1
+ import { UUID, uuidv7 } from "uuidv7";
2
+ import { EventContainer } from "./utils/eventContainer.js";
3
+ class MessageBuffer {
4
+ size;
5
+ items;
6
+ writePos = 0;
7
+ head = 0;
8
+ readers = /* @__PURE__ */ new Map();
9
+ filenameCache = /* @__PURE__ */ new Map();
10
+ constructor(size = 500) {
11
+ this.size = size;
12
+ this.items = new Array(size);
13
+ }
14
+ /**
15
+ * Binary search for an event by its envelope ID (UUIDv7).
16
+ * Returns the position of the event, or -1 if not found.
17
+ * Takes advantage of UUIDv7's time-ordered property.
18
+ */
19
+ binarySearchEventId(targetId) {
20
+ let left = this.head;
21
+ let right = this.writePos - 1;
22
+ let targetUuid;
23
+ try {
24
+ targetUuid = UUID.parse(targetId);
25
+ } catch {
26
+ return -1;
27
+ }
28
+ while (left <= right) {
29
+ const mid = Math.floor((left + right) / 2);
30
+ const item = this.items[mid % this.size];
31
+ if (item == null || !(item[1] instanceof EventContainer)) {
32
+ let boundsAdjusted = false;
33
+ for (let i = mid - 1; i >= left; i--) {
34
+ const leftItem = this.items[i % this.size];
35
+ if (leftItem && leftItem[1] instanceof EventContainer) {
36
+ const envelope2 = leftItem[1].getParsedEnvelope();
37
+ if (envelope2?.envelope) {
38
+ const envelopeId2 = envelope2.envelope[0].__spotlight_envelope_id;
39
+ const isEqual2 = envelopeId2.compareTo(targetUuid);
40
+ if (isEqual2 === 0) {
41
+ return i;
42
+ }
43
+ if (isEqual2 < 0) {
44
+ left = mid + 1;
45
+ } else {
46
+ right = mid - 1;
47
+ }
48
+ boundsAdjusted = true;
49
+ break;
50
+ }
51
+ }
52
+ }
53
+ if (!boundsAdjusted) {
54
+ for (let i = mid + 1; i <= right; i++) {
55
+ const rightItem = this.items[i % this.size];
56
+ if (rightItem && rightItem[1] instanceof EventContainer) {
57
+ const envelope2 = rightItem[1].getParsedEnvelope();
58
+ if (envelope2?.envelope) {
59
+ const envelopeId2 = envelope2.envelope[0].__spotlight_envelope_id;
60
+ const isEqual2 = envelopeId2.compareTo(targetUuid);
61
+ if (isEqual2 === 0) {
62
+ return i;
63
+ }
64
+ if (isEqual2 < 0) {
65
+ left = mid + 1;
66
+ } else {
67
+ right = mid - 1;
68
+ }
69
+ boundsAdjusted = true;
70
+ break;
71
+ }
72
+ }
73
+ }
74
+ }
75
+ if (!boundsAdjusted) {
76
+ left = mid + 1;
77
+ }
78
+ continue;
79
+ }
80
+ const envelope = item[1].getParsedEnvelope();
81
+ if (!envelope?.envelope) {
82
+ left = mid + 1;
83
+ continue;
84
+ }
85
+ const envelopeId = envelope.envelope[0].__spotlight_envelope_id;
86
+ const isEqual = envelopeId.compareTo(targetUuid);
87
+ if (isEqual === 0) {
88
+ return mid;
89
+ }
90
+ if (isEqual < 0) {
91
+ left = mid + 1;
92
+ } else {
93
+ right = mid - 1;
94
+ }
95
+ }
96
+ return -1;
97
+ }
98
+ put(item) {
99
+ const curTime = (/* @__PURE__ */ new Date()).getTime();
100
+ const oldValue = this.items[this.writePos % this.size];
101
+ if (oldValue && oldValue[1] instanceof EventContainer) {
102
+ const envelope = oldValue[1].getParsedEnvelope();
103
+ if (envelope?.envelope) {
104
+ const deletedEnvelopeId = envelope.envelope[0].__spotlight_envelope_id.toString();
105
+ const goneFiles = /* @__PURE__ */ new Set();
106
+ for (const [filename, envelopeIds] of this.filenameCache.entries()) {
107
+ envelopeIds.delete(deletedEnvelopeId);
108
+ if (envelopeIds.size === 0) {
109
+ goneFiles.add(filename);
110
+ }
111
+ }
112
+ for (const filename of goneFiles) {
113
+ this.filenameCache.delete(filename);
114
+ }
115
+ }
116
+ }
117
+ this.items[this.writePos % this.size] = [curTime, item];
118
+ this.writePos += 1;
119
+ if (this.writePos - this.head > this.size) {
120
+ this.head = this.writePos - this.size;
121
+ }
122
+ if (item instanceof EventContainer) {
123
+ const envelope = item.getParsedEnvelope();
124
+ if (envelope?.envelope) {
125
+ const spotlightEnvelopeId = envelope.envelope[0].__spotlight_envelope_id.toString();
126
+ const events = envelope.envelope[1] ?? [];
127
+ for (const event of events) {
128
+ const [, payload] = event;
129
+ const values = typeof payload === "object" && "exception" in payload && payload.exception?.values;
130
+ if (values) {
131
+ for (const value of values) {
132
+ const frames = value.stacktrace?.frames;
133
+ if (frames) {
134
+ for (const frame of frames) {
135
+ const filename = frame.filename;
136
+ if (filename) {
137
+ const envelopeIds = this.filenameCache.get(filename);
138
+ if (envelopeIds) {
139
+ envelopeIds.add(spotlightEnvelopeId);
140
+ } else {
141
+ this.filenameCache.set(filename, /* @__PURE__ */ new Set([spotlightEnvelopeId]));
142
+ }
143
+ }
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ }
150
+ }
151
+ for (const [readerId, readerInfo] of this.readers.entries()) {
152
+ if (readerInfo.tid) {
153
+ clearImmediate(readerInfo.tid);
154
+ }
155
+ readerInfo.tid = setImmediate(() => this.stream(readerId));
156
+ readerInfo.tid.unref();
157
+ }
158
+ }
159
+ subscribe(callback, lastEventId) {
160
+ const readerId = uuidv7();
161
+ let startPos = this.head;
162
+ if (lastEventId) {
163
+ const foundPos = this.binarySearchEventId(lastEventId);
164
+ if (foundPos !== -1) {
165
+ startPos = foundPos + 1;
166
+ }
167
+ }
168
+ const readerInfo = {
169
+ callback,
170
+ pos: startPos,
171
+ tid: setImmediate(() => this.stream(readerId))
172
+ };
173
+ readerInfo.tid.unref();
174
+ this.readers.set(readerId, readerInfo);
175
+ return readerId;
176
+ }
177
+ unsubscribe(readerId) {
178
+ const readerInfo = this.readers.get(readerId);
179
+ if (readerInfo?.tid) {
180
+ clearImmediate(readerInfo.tid);
181
+ }
182
+ this.readers.delete(readerId);
183
+ }
184
+ stream(readerId) {
185
+ const readerInfo = this.readers.get(readerId);
186
+ if (!readerInfo) return;
187
+ const { pos, callback } = readerInfo;
188
+ let atReadPos = pos < this.head ? this.head : pos;
189
+ let item;
190
+ while (true) {
191
+ item = this.items[atReadPos % this.size];
192
+ if (typeof item === "undefined" || atReadPos >= this.writePos) {
193
+ break;
194
+ }
195
+ callback(item[1]);
196
+ atReadPos += 1;
197
+ }
198
+ readerInfo.pos = atReadPos;
199
+ }
200
+ /**
201
+ * hard reset: drops items and resets cursors.
202
+ */
203
+ clear() {
204
+ this.writePos = 0;
205
+ this.reset();
206
+ for (const readerInfo of this.readers.values()) {
207
+ if (readerInfo.tid) {
208
+ clearImmediate(readerInfo.tid);
209
+ }
210
+ readerInfo.tid = void 0;
211
+ readerInfo.pos = this.head;
212
+ }
213
+ }
214
+ /**
215
+ * soft reset: clears buffered items but preserves subscribers
216
+ * do not set head or writePos to `0` as subscribers retain their
217
+ * readPos which would mess things up if we suddenly reset everything
218
+ * to 0.
219
+ */
220
+ reset() {
221
+ this.items = new Array(this.size);
222
+ this.head = this.writePos;
223
+ this.filenameCache.clear();
224
+ }
225
+ read(filters = { timeWindow: 60 }) {
226
+ const result = [];
227
+ const start = this.head;
228
+ const end = this.writePos;
229
+ const filterHandlers = [];
230
+ for (const key of Object.keys(filters)) {
231
+ if (this.filterHandlers[key]) {
232
+ filterHandlers.push(this.filterHandlers[key]);
233
+ }
234
+ }
235
+ for (let i = end - 1; i >= start; i--) {
236
+ const item = this.items[i % this.size];
237
+ if (item == null) continue;
238
+ if (filterHandlers.every((handler) => handler(item, filters, { filenameCache: this.filenameCache }))) {
239
+ result.push(item[1]);
240
+ }
241
+ }
242
+ return result;
243
+ }
244
+ filterHandlers = {
245
+ timeWindow: (item, value) => {
246
+ if (!("timeWindow" in value)) {
247
+ return true;
248
+ }
249
+ return item[0] > Date.now() - value.timeWindow * 1e3;
250
+ },
251
+ envelopeId: (item, value) => {
252
+ if (!("envelopeId" in value) || value.envelopeId == null) {
253
+ return true;
254
+ }
255
+ const data = item[1].getParsedEnvelope();
256
+ return data.envelope[0].__spotlight_envelope_id.equals(UUID.parse(value.envelopeId));
257
+ },
258
+ filename: (item, value, ctx) => {
259
+ if (!("filename" in value)) {
260
+ return true;
261
+ }
262
+ const contents = item[1].getParsedEnvelope();
263
+ const spotlightEnvelopeId = contents.envelope[0].__spotlight_envelope_id.toString();
264
+ for (const [filename, envelopeIds] of ctx.filenameCache.entries()) {
265
+ if (filename.endsWith(value.filename)) {
266
+ if (envelopeIds.has(spotlightEnvelopeId)) {
267
+ return true;
268
+ }
269
+ }
270
+ }
271
+ return false;
272
+ },
273
+ all: () => true
274
+ };
275
+ }
276
+ export {
277
+ MessageBuffer
278
+ };
279
+ //# sourceMappingURL=messageBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageBuffer.js","sources":["../../src/server/messageBuffer.ts"],"sourcesContent":["import { UUID, uuidv7 } from \"uuidv7\";\nimport type { InputSchema } from \"./mcp/mcp.ts\";\nimport { EventContainer } from \"./utils/eventContainer.ts\";\n\nexport class MessageBuffer<T> {\n private size: number;\n private items: [number, T][];\n private writePos = 0;\n private head = 0;\n private readers = new Map<string, { tid?: NodeJS.Immediate; pos: number; callback: (item: T) => void }>();\n private filenameCache = new Map<string, Set<string>>();\n\n constructor(size = 500) {\n this.size = size;\n this.items = new Array(size);\n }\n\n /**\n * Binary search for an event by its envelope ID (UUIDv7).\n * Returns the position of the event, or -1 if not found.\n * Takes advantage of UUIDv7's time-ordered property.\n */\n private binarySearchEventId(targetId: string): number {\n let left = this.head;\n let right = this.writePos - 1;\n\n // Parse and validate the target UUID\n let targetUuid: UUID;\n try {\n targetUuid = UUID.parse(targetId);\n } catch {\n // Invalid UUID format, cannot find\n return -1;\n }\n\n while (left <= right) {\n const mid = Math.floor((left + right) / 2);\n const item = this.items[mid % this.size];\n\n // Skip null items or non-EventContainer items\n if (item == null || !(item[1] instanceof EventContainer)) {\n // Linear scan nearby to handle gaps\n let boundsAdjusted = false;\n\n // Check left side\n for (let i = mid - 1; i >= left; i--) {\n const leftItem = this.items[i % this.size];\n if (leftItem && leftItem[1] instanceof EventContainer) {\n const envelope = leftItem[1].getParsedEnvelope();\n if (envelope?.envelope) {\n const envelopeId = envelope.envelope[0].__spotlight_envelope_id;\n const isEqual = envelopeId.compareTo(targetUuid);\n if (isEqual === 0) {\n return i;\n }\n // Adjust search bounds based on comparison\n if (isEqual < 0) {\n left = mid + 1;\n } else {\n right = mid - 1;\n }\n boundsAdjusted = true;\n break;\n }\n }\n }\n\n // Check right side if left didn't help\n if (!boundsAdjusted) {\n for (let i = mid + 1; i <= right; i++) {\n const rightItem = this.items[i % this.size];\n if (rightItem && rightItem[1] instanceof EventContainer) {\n const envelope = rightItem[1].getParsedEnvelope();\n if (envelope?.envelope) {\n const envelopeId = envelope.envelope[0].__spotlight_envelope_id;\n const isEqual = envelopeId.compareTo(targetUuid);\n if (isEqual === 0) {\n return i;\n }\n // Adjust search bounds\n if (isEqual < 0) {\n left = mid + 1;\n } else {\n right = mid - 1;\n }\n boundsAdjusted = true;\n break;\n }\n }\n }\n }\n\n // If both scans failed to find a valid item, skip past this gap\n // to avoid infinite loop\n if (!boundsAdjusted) {\n left = mid + 1;\n }\n\n continue;\n }\n\n const envelope = item[1].getParsedEnvelope();\n if (!envelope?.envelope) {\n // Skip invalid envelopes, move to next\n left = mid + 1;\n continue;\n }\n\n const envelopeId = envelope.envelope[0].__spotlight_envelope_id;\n\n const isEqual = envelopeId.compareTo(targetUuid);\n if (isEqual === 0) {\n // Found exact match\n return mid;\n }\n\n if (isEqual < 0) {\n // Target is in the right half (later in time)\n left = mid + 1;\n } else {\n // Target is in the left half (earlier in time)\n right = mid - 1;\n }\n }\n\n return -1;\n }\n\n put(item: T): void {\n const curTime = new Date().getTime();\n\n // Remove old value from filename cache\n const oldValue = this.items[this.writePos % this.size];\n if (oldValue && oldValue[1] instanceof EventContainer) {\n const envelope = oldValue[1].getParsedEnvelope();\n if (envelope?.envelope) {\n const deletedEnvelopeId = envelope.envelope[0].__spotlight_envelope_id.toString();\n const goneFiles = new Set<string>();\n for (const [filename, envelopeIds] of this.filenameCache.entries()) {\n envelopeIds.delete(deletedEnvelopeId);\n if (envelopeIds.size === 0) {\n goneFiles.add(filename);\n }\n }\n\n for (const filename of goneFiles) {\n this.filenameCache.delete(filename);\n }\n }\n }\n\n this.items[this.writePos % this.size] = [curTime, item];\n this.writePos += 1;\n if (this.writePos - this.head > this.size) {\n this.head = this.writePos - this.size;\n }\n\n // Update filename cache\n if (item instanceof EventContainer) {\n const envelope = item.getParsedEnvelope();\n if (envelope?.envelope) {\n const spotlightEnvelopeId = envelope.envelope[0].__spotlight_envelope_id.toString();\n const events = envelope.envelope[1] ?? [];\n\n for (const event of events) {\n const [, payload] = event;\n const values = typeof payload === \"object\" && \"exception\" in payload && payload.exception?.values;\n if (values) {\n for (const value of values) {\n const frames = value.stacktrace?.frames;\n if (frames) {\n for (const frame of frames) {\n const filename = frame.filename;\n if (filename) {\n const envelopeIds = this.filenameCache.get(filename);\n if (envelopeIds) {\n envelopeIds.add(spotlightEnvelopeId);\n } else {\n this.filenameCache.set(filename, new Set([spotlightEnvelopeId]));\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n // Calling subscribers\n for (const [readerId, readerInfo] of this.readers.entries()) {\n if (readerInfo.tid) {\n clearImmediate(readerInfo.tid);\n }\n\n readerInfo.tid = setImmediate(() => this.stream(readerId));\n readerInfo.tid.unref();\n }\n }\n\n subscribe(callback: (item: T) => void, lastEventId?: string): string {\n const readerId = uuidv7();\n\n // Determine starting position based on lastEventId\n let startPos = this.head;\n if (lastEventId) {\n // Binary search for lastEventId (UUIDv7 is time-ordered)\n // Since buffer is chronologically ordered, we can use binary search\n const foundPos = this.binarySearchEventId(lastEventId);\n if (foundPos !== -1) {\n // Start from the position after the found event\n startPos = foundPos + 1;\n }\n // If lastEventId not found, startPos remains at this.head (normal behavior)\n }\n\n const readerInfo = {\n callback,\n pos: startPos,\n tid: setImmediate(() => this.stream(readerId)),\n };\n readerInfo.tid.unref();\n this.readers.set(readerId, readerInfo);\n\n return readerId;\n }\n\n unsubscribe(readerId: string): void {\n const readerInfo = this.readers.get(readerId);\n // Clearing any pending timeouts\n if (readerInfo?.tid) {\n clearImmediate(readerInfo.tid);\n }\n\n this.readers.delete(readerId);\n }\n\n stream(readerId: string): void {\n const readerInfo = this.readers.get(readerId);\n if (!readerInfo) return;\n const { pos, callback } = readerInfo;\n\n let atReadPos = pos < this.head ? this.head : pos;\n let item: [number, T] | undefined;\n /* eslint-disable no-constant-condition */\n while (true) {\n item = this.items[atReadPos % this.size];\n // atReadPos >= this.writePos prevents the case where we have a full buffer\n if (typeof item === \"undefined\" || atReadPos >= this.writePos) {\n break;\n }\n callback(item[1]);\n atReadPos += 1;\n }\n\n // No need to `this.readers.set` again, as `readerInfo` is a reference\n readerInfo.pos = atReadPos;\n }\n\n /**\n * hard reset: drops items and resets cursors.\n */\n clear(): void {\n this.writePos = 0;\n this.reset();\n\n for (const readerInfo of this.readers.values()) {\n if (readerInfo.tid) {\n clearImmediate(readerInfo.tid);\n }\n\n readerInfo.tid = undefined;\n readerInfo.pos = this.head;\n }\n }\n\n /**\n * soft reset: clears buffered items but preserves subscribers\n * do not set head or writePos to `0` as subscribers retain their\n * readPos which would mess things up if we suddenly reset everything\n * to 0.\n */\n reset(): void {\n this.items = new Array(this.size);\n this.head = this.writePos;\n\n // Clear filename cache\n this.filenameCache.clear();\n }\n\n read(filters: ReadFilter = { timeWindow: 60 }): T[] {\n const result: T[] = [];\n const start = this.head;\n const end = this.writePos;\n\n const filterHandlers = [];\n for (const key of Object.keys(filters)) {\n if (this.filterHandlers[key]) {\n filterHandlers.push(this.filterHandlers[key]);\n }\n }\n\n for (let i = end - 1; i >= start; i--) {\n const item = this.items[i % this.size];\n\n if (item == null) continue;\n\n // Check if the item passes all filters\n if (filterHandlers.every(handler => handler(item, filters, { filenameCache: this.filenameCache }))) {\n result.push(item[1]);\n }\n }\n\n return result;\n }\n\n filterHandlers: Record<\n keyof ReadFilter | string,\n (item: [number, T], value: NonNullable<ReadFilter>, ctx: { filenameCache: Map<string, Set<string>> }) => boolean\n > = {\n timeWindow: (item, value) => {\n if (!(\"timeWindow\" in value)) {\n return true;\n }\n\n return item[0] > Date.now() - value.timeWindow * 1000;\n },\n envelopeId: (item, value) => {\n if (!(\"envelopeId\" in value) || value.envelopeId == null) {\n return true;\n }\n\n const data = (item[1] as EventContainer).getParsedEnvelope();\n\n return data.envelope[0].__spotlight_envelope_id.equals(UUID.parse(value.envelopeId));\n },\n filename: (item, value, ctx) => {\n if (!(\"filename\" in value)) {\n return true;\n }\n\n const contents = (item[1] as EventContainer).getParsedEnvelope();\n const spotlightEnvelopeId = contents.envelope[0].__spotlight_envelope_id.toString();\n\n for (const [filename, envelopeIds] of ctx.filenameCache.entries()) {\n if (filename.endsWith(value.filename)) {\n if (envelopeIds.has(spotlightEnvelopeId)) {\n return true;\n }\n }\n }\n\n return false;\n },\n all: () => true,\n };\n}\n\nexport type ReadFilter =\n | InputSchema[\"filters\"]\n | {\n envelopeId: string;\n }\n | { all: true };\n"],"names":["envelope","envelopeId","isEqual"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { SentryErrorEvent, SentryEvent, SentryLogEvent, SentryProfileV1Event, SentryTransactionEvent } from './types.ts';
2
+ export declare const ERROR_EVENT_TYPES: Set<string>;
3
+ export declare const TRACE_EVENT_TYPES: Set<string>;
4
+ export declare const PROFILE_EVENT_TYPES: Set<string>;
5
+ export declare const LOG_EVENT_TYPES: Set<string>;
6
+ export declare const SUPPORTED_EVENT_TYPES: Set<string>;
7
+ export declare function isErrorEvent(event: SentryEvent): event is SentryErrorEvent;
8
+ export declare function isProfileEvent(event: SentryEvent): event is SentryProfileV1Event;
9
+ export declare function isTraceEvent(event: SentryEvent): event is SentryTransactionEvent;
10
+ export declare function isLogEvent(event: SentryEvent): event is SentryLogEvent;
@@ -0,0 +1,32 @@
1
+ const ERROR_EVENT_TYPES = /* @__PURE__ */ new Set(["event", "error"]);
2
+ const TRACE_EVENT_TYPES = /* @__PURE__ */ new Set(["transaction"]);
3
+ const PROFILE_EVENT_TYPES = /* @__PURE__ */ new Set(["profile"]);
4
+ const LOG_EVENT_TYPES = /* @__PURE__ */ new Set(["log"]);
5
+ /* @__PURE__ */ new Set([
6
+ ...ERROR_EVENT_TYPES,
7
+ ...TRACE_EVENT_TYPES,
8
+ ...PROFILE_EVENT_TYPES,
9
+ ...LOG_EVENT_TYPES
10
+ ]);
11
+ function isErrorEvent(event) {
12
+ const hasValidType = !event.type || ERROR_EVENT_TYPES.has(event.type);
13
+ const hasException = Boolean(event.exception);
14
+ const hasMessage = Boolean(event.message);
15
+ return hasValidType && (hasException || hasMessage);
16
+ }
17
+ function isTraceEvent(event) {
18
+ return !!event.type && TRACE_EVENT_TYPES.has(event.type);
19
+ }
20
+ function isLogEvent(event) {
21
+ return !!event.type && LOG_EVENT_TYPES.has(event.type);
22
+ }
23
+ export {
24
+ ERROR_EVENT_TYPES,
25
+ LOG_EVENT_TYPES,
26
+ PROFILE_EVENT_TYPES,
27
+ TRACE_EVENT_TYPES,
28
+ isErrorEvent,
29
+ isLogEvent,
30
+ isTraceEvent
31
+ };
32
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/server/parser/helpers.ts"],"sourcesContent":["import type {\n SentryErrorEvent,\n SentryEvent,\n SentryLogEvent,\n SentryProfileV1Event,\n SentryTransactionEvent,\n} from \"./types.ts\";\n\nexport const ERROR_EVENT_TYPES = new Set([\"event\", \"error\"]);\nexport const TRACE_EVENT_TYPES = new Set([\"transaction\"]);\nexport const PROFILE_EVENT_TYPES = new Set([\"profile\"]);\nexport const LOG_EVENT_TYPES = new Set([\"log\"]);\nexport const SUPPORTED_EVENT_TYPES = new Set([\n ...ERROR_EVENT_TYPES,\n ...TRACE_EVENT_TYPES,\n ...PROFILE_EVENT_TYPES,\n ...LOG_EVENT_TYPES,\n]);\n\nexport function isErrorEvent(event: SentryEvent): event is SentryErrorEvent {\n const hasValidType = !event.type || ERROR_EVENT_TYPES.has(event.type);\n const hasException = Boolean((event as SentryErrorEvent).exception);\n const hasMessage = Boolean((event as SentryErrorEvent).message);\n return hasValidType && (hasException || hasMessage);\n}\n\nexport function isProfileEvent(event: SentryEvent): event is SentryProfileV1Event {\n return !!event.type && PROFILE_EVENT_TYPES.has(event.type) && (event as SentryProfileV1Event).version === \"1\";\n}\n\nexport function isTraceEvent(event: SentryEvent): event is SentryTransactionEvent {\n return !!event.type && TRACE_EVENT_TYPES.has(event.type);\n}\n\nexport function isLogEvent(event: SentryEvent): event is SentryLogEvent {\n return !!event.type && LOG_EVENT_TYPES.has(event.type);\n}\n"],"names":[],"mappings":"AAQO,MAAM,oBAAoB,oBAAI,IAAI,CAAC,SAAS,OAAO,CAAC;AACpD,MAAM,oBAAoB,oBAAI,IAAI,CAAC,aAAa,CAAC;AACjD,MAAM,sBAAsB,oBAAI,IAAI,CAAC,SAAS,CAAC;AAC/C,MAAM,kBAAkB,oBAAI,IAAI,CAAC,KAAK,CAAC;oBACL,IAAI;AAAA,EAC3C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL,CAAC;AAEM,SAAS,aAAa,OAA+C;AAC1E,QAAM,eAAe,CAAC,MAAM,QAAQ,kBAAkB,IAAI,MAAM,IAAI;AACpE,QAAM,eAAe,QAAS,MAA2B,SAAS;AAClE,QAAM,aAAa,QAAS,MAA2B,OAAO;AAC9D,SAAO,iBAAiB,gBAAgB;AAC1C;AAMO,SAAS,aAAa,OAAqD;AAChF,SAAO,CAAC,CAAC,MAAM,QAAQ,kBAAkB,IAAI,MAAM,IAAI;AACzD;AAEO,SAAS,WAAW,OAA6C;AACtE,SAAO,CAAC,CAAC,MAAM,QAAQ,gBAAgB,IAAI,MAAM,IAAI;AACvD;"}
@@ -0,0 +1,3 @@
1
+ export * from './helpers.ts';
2
+ export * from './processEnvelope.ts';
3
+ export * from './types.ts';
@@ -0,0 +1,17 @@
1
+ import { Envelope } from '@sentry/core';
2
+ import { UUID } from 'uuidv7';
3
+ import { RawEventContext } from './types.ts';
4
+ export type ParsedEnvelope = {
5
+ envelope: [Envelope[0] & {
6
+ __spotlight_envelope_id: UUID;
7
+ }, Envelope[1]];
8
+ rawEnvelope: RawEventContext;
9
+ };
10
+ /**
11
+ * Implements parser for
12
+ * @see https://develop.sentry.dev/sdk/envelopes/#serialization-format
13
+ * @param rawEvent Envelope data
14
+ * @param senderUserAgent Optional User-Agent header from the HTTP request sending the envelope
15
+ * @returns parsed envelope
16
+ */
17
+ export declare function processEnvelope(rawEvent: RawEventContext, senderUserAgent?: string): ParsedEnvelope | null;
@@ -0,0 +1,86 @@
1
+ import { uuidv7obj } from "uuidv7";
2
+ import { RAW_TYPES } from "../../shared/constants.js";
3
+ import { logger } from "../logger.js";
4
+ const TEXT_CONTENT_TYPES = /* @__PURE__ */ new Set([
5
+ "text/plain",
6
+ "text/css",
7
+ "text/csv",
8
+ "text/html",
9
+ "text/javascript",
10
+ "text/json",
11
+ "text/x-json",
12
+ "application/json",
13
+ "application/ld+json",
14
+ "application/json"
15
+ ]);
16
+ function processEnvelope(rawEvent, senderUserAgent) {
17
+ let buffer = typeof rawEvent.data === "string" ? Uint8Array.from(rawEvent.data, (c) => c.charCodeAt(0)) : rawEvent.data;
18
+ function readLine(length) {
19
+ const cursor = length ?? getLineEnd(buffer);
20
+ const line = buffer.subarray(0, cursor);
21
+ buffer = buffer.subarray(cursor + 1);
22
+ return line;
23
+ }
24
+ const envelopeHeader = parseJSONFromBuffer(readLine());
25
+ if (!envelopeHeader) {
26
+ logger.error("Malformed envelope header, skipping...");
27
+ return null;
28
+ }
29
+ envelopeHeader.__spotlight_envelope_id = uuidv7obj();
30
+ if (senderUserAgent) {
31
+ envelopeHeader.__spotlight_sender_user_agent = senderUserAgent;
32
+ }
33
+ const items = [];
34
+ while (buffer.length) {
35
+ const itemHeader = parseJSONFromBuffer(readLine());
36
+ const payloadLength = itemHeader.length;
37
+ const itemPayloadRaw = readLine(payloadLength);
38
+ let itemPayload;
39
+ try {
40
+ if (RAW_TYPES.has(itemHeader.type)) {
41
+ const rawPayload = itemPayloadRaw;
42
+ if (!itemHeader.content_type && // @ts-expect-error -- statsd is an old and deprecated event type but have envelopes for that
43
+ itemHeader.type === "statsd") {
44
+ itemHeader.content_type = "text/plain";
45
+ }
46
+ itemPayload = {
47
+ data: rawPayload.toString(TEXT_CONTENT_TYPES.has(itemHeader.content_type) ? "utf-8" : "base64")
48
+ };
49
+ } else {
50
+ itemPayload = parseJSONFromBuffer(itemPayloadRaw);
51
+ if (!itemPayload) {
52
+ logger.error(itemHeader);
53
+ } else if (itemHeader.type) {
54
+ itemPayload.type = itemHeader.type;
55
+ }
56
+ }
57
+ } catch (err) {
58
+ itemPayload = itemPayloadRaw;
59
+ logger.error(err);
60
+ }
61
+ items.push([itemHeader, itemPayload]);
62
+ }
63
+ return {
64
+ envelope: [envelopeHeader, items],
65
+ rawEnvelope: rawEvent
66
+ };
67
+ }
68
+ function getLineEnd(data) {
69
+ let end = data.indexOf(10);
70
+ if (end === -1) {
71
+ end = data.length;
72
+ }
73
+ return end;
74
+ }
75
+ function parseJSONFromBuffer(data) {
76
+ try {
77
+ return JSON.parse(new TextDecoder().decode(data));
78
+ } catch (err) {
79
+ logger.error(err);
80
+ return null;
81
+ }
82
+ }
83
+ export {
84
+ processEnvelope
85
+ };
86
+ //# sourceMappingURL=processEnvelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processEnvelope.js","sources":["../../../src/server/parser/processEnvelope.ts"],"sourcesContent":["import type { Envelope, EnvelopeItem } from \"@sentry/core\";\nimport { type UUID, uuidv7obj } from \"uuidv7\";\nimport { RAW_TYPES } from \"../constants.ts\";\nimport { logger } from \"../logger.ts\";\nimport type { RawEventContext } from \"./types.ts\";\n\nexport type ParsedEnvelope = {\n envelope: [Envelope[0] & { __spotlight_envelope_id: UUID }, Envelope[1]];\n rawEnvelope: RawEventContext;\n};\n\nconst TEXT_CONTENT_TYPES = new Set([\n \"text/plain\",\n \"text/css\",\n \"text/csv\",\n \"text/html\",\n \"text/javascript\",\n \"text/json\",\n \"text/x-json\",\n \"application/json\",\n \"application/ld+json\",\n \"application/json\",\n]);\n\n/**\n * Implements parser for\n * @see https://develop.sentry.dev/sdk/envelopes/#serialization-format\n * @param rawEvent Envelope data\n * @param senderUserAgent Optional User-Agent header from the HTTP request sending the envelope\n * @returns parsed envelope\n */\nexport function processEnvelope(rawEvent: RawEventContext, senderUserAgent?: string): ParsedEnvelope | null {\n let buffer = typeof rawEvent.data === \"string\" ? Uint8Array.from(rawEvent.data, c => c.charCodeAt(0)) : rawEvent.data;\n\n function readLine(length?: number) {\n const cursor = length ?? getLineEnd(buffer);\n const line = buffer.subarray(0, cursor);\n buffer = buffer.subarray(cursor + 1);\n return line;\n }\n\n const envelopeHeader = parseJSONFromBuffer(readLine()) as Envelope[0];\n if (!envelopeHeader) {\n logger.error(\"Malformed envelope header, skipping...\");\n return null;\n }\n\n envelopeHeader.__spotlight_envelope_id = uuidv7obj();\n\n // Store sender User-Agent for improved SDK categorization\n if (senderUserAgent) {\n envelopeHeader.__spotlight_sender_user_agent = senderUserAgent;\n }\n\n const items: EnvelopeItem[] = [];\n while (buffer.length) {\n const itemHeader = parseJSONFromBuffer(readLine()) as EnvelopeItem[0];\n const payloadLength = itemHeader.length;\n const itemPayloadRaw = readLine(payloadLength);\n\n let itemPayload: EnvelopeItem[1];\n try {\n if (RAW_TYPES.has(itemHeader.type)) {\n const rawPayload = itemPayloadRaw as Buffer;\n if (\n !itemHeader.content_type &&\n // @ts-expect-error -- statsd is an old and deprecated event type but have envelopes for that\n itemHeader.type === \"statsd\"\n ) {\n // @ts-expect-error -- same as above\n itemHeader.content_type = \"text/plain\";\n }\n itemPayload = {\n data: rawPayload.toString(TEXT_CONTENT_TYPES.has(itemHeader.content_type as string) ? \"utf-8\" : \"base64\"),\n } as EnvelopeItem[1];\n } else {\n itemPayload = parseJSONFromBuffer(itemPayloadRaw);\n if (!itemPayload) {\n logger.error(itemHeader);\n } else if (itemHeader.type) {\n // data sanitization\n // @ts-expect-error ts(2339) -- We should really stop adding type to payloads\n itemPayload.type = itemHeader.type;\n }\n }\n } catch (err) {\n itemPayload = itemPayloadRaw;\n logger.error(err);\n }\n\n items.push([itemHeader, itemPayload] as EnvelopeItem);\n }\n\n return {\n envelope: [envelopeHeader, items] as ParsedEnvelope[\"envelope\"],\n rawEnvelope: rawEvent,\n };\n}\n\nfunction getLineEnd(data: Uint8Array): number {\n let end = data.indexOf(0xa);\n if (end === -1) {\n end = data.length;\n }\n\n return end;\n}\n\nfunction parseJSONFromBuffer<T = unknown>(data: Uint8Array): T {\n try {\n return JSON.parse(new TextDecoder().decode(data)) as T;\n } catch (err) {\n logger.error(err);\n return null as T;\n }\n}\n"],"names":[],"mappings":";;;AAWA,MAAM,yCAAyB,IAAI;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AASM,SAAS,gBAAgB,UAA2B,iBAAiD;AAC1G,MAAI,SAAS,OAAO,SAAS,SAAS,WAAW,WAAW,KAAK,SAAS,MAAM,OAAK,EAAE,WAAW,CAAC,CAAC,IAAI,SAAS;AAEjH,WAAS,SAAS,QAAiB;AACjC,UAAM,SAAS,UAAU,WAAW,MAAM;AAC1C,UAAM,OAAO,OAAO,SAAS,GAAG,MAAM;AACtC,aAAS,OAAO,SAAS,SAAS,CAAC;AACnC,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,oBAAoB,UAAU;AACrD,MAAI,CAAC,gBAAgB;AACnB,WAAO,MAAM,wCAAwC;AACrD,WAAO;AAAA,EACT;AAEA,iBAAe,0BAA0B,UAAA;AAGzC,MAAI,iBAAiB;AACnB,mBAAe,gCAAgC;AAAA,EACjD;AAEA,QAAM,QAAwB,CAAA;AAC9B,SAAO,OAAO,QAAQ;AACpB,UAAM,aAAa,oBAAoB,UAAU;AACjD,UAAM,gBAAgB,WAAW;AACjC,UAAM,iBAAiB,SAAS,aAAa;AAE7C,QAAI;AACJ,QAAI;AACF,UAAI,UAAU,IAAI,WAAW,IAAI,GAAG;AAClC,cAAM,aAAa;AACnB,YACE,CAAC,WAAW;AAAA,QAEZ,WAAW,SAAS,UACpB;AAEA,qBAAW,eAAe;AAAA,QAC5B;AACA,sBAAc;AAAA,UACZ,MAAM,WAAW,SAAS,mBAAmB,IAAI,WAAW,YAAsB,IAAI,UAAU,QAAQ;AAAA,QAAA;AAAA,MAE5G,OAAO;AACL,sBAAc,oBAAoB,cAAc;AAChD,YAAI,CAAC,aAAa;AAChB,iBAAO,MAAM,UAAU;AAAA,QACzB,WAAW,WAAW,MAAM;AAG1B,sBAAY,OAAO,WAAW;AAAA,QAChC;AAAA,MACF;AAAA,IACF,SAAS,KAAK;AACZ,oBAAc;AACd,aAAO,MAAM,GAAG;AAAA,IAClB;AAEA,UAAM,KAAK,CAAC,YAAY,WAAW,CAAiB;AAAA,EACtD;AAEA,SAAO;AAAA,IACL,UAAU,CAAC,gBAAgB,KAAK;AAAA,IAChC,aAAa;AAAA,EAAA;AAEjB;AAEA,SAAS,WAAW,MAA0B;AAC5C,MAAI,MAAM,KAAK,QAAQ,EAAG;AAC1B,MAAI,QAAQ,IAAI;AACd,UAAM,KAAK;AAAA,EACb;AAEA,SAAO;AACT;AAEA,SAAS,oBAAiC,MAAqB;AAC7D,MAAI;AACF,WAAO,KAAK,MAAM,IAAI,cAAc,OAAO,IAAI,CAAC;AAAA,EAClD,SAAS,KAAK;AACZ,WAAO,MAAM,GAAG;AAChB,WAAO;AAAA,EACT;AACF;"}