@spotlightjs/spotlight 4.8.0 → 4.10.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 (706) hide show
  1. package/dist/_virtual/_commonjsHelpers.js +3 -4
  2. package/dist/_virtual/additionalItems.js +2 -2
  3. package/dist/_virtual/additionalProperties.js +2 -2
  4. package/dist/_virtual/ajv.js +2 -2
  5. package/dist/_virtual/allOf.js +2 -2
  6. package/dist/_virtual/anyOf.js +2 -2
  7. package/dist/_virtual/applicability.js +2 -2
  8. package/dist/_virtual/boolSchema.js +2 -2
  9. package/dist/_virtual/code.js +2 -2
  10. package/dist/_virtual/code2.js +2 -2
  11. package/dist/_virtual/const.js +2 -2
  12. package/dist/_virtual/contains.js +2 -2
  13. package/dist/_virtual/core.js +2 -2
  14. package/dist/_virtual/dataType.js +2 -2
  15. package/dist/_virtual/defaults.js +2 -2
  16. package/dist/_virtual/dependencies.js +2 -2
  17. package/dist/_virtual/draft7.js +2 -2
  18. package/dist/_virtual/enum.js +2 -2
  19. package/dist/_virtual/equal.js +2 -2
  20. package/dist/_virtual/errors.js +2 -2
  21. package/dist/_virtual/format.js +2 -2
  22. package/dist/_virtual/formats.js +2 -2
  23. package/dist/_virtual/id.js +2 -2
  24. package/dist/_virtual/if.js +2 -2
  25. package/dist/_virtual/index.js +2 -2
  26. package/dist/_virtual/index10.js +2 -2
  27. package/dist/_virtual/index11.js +2 -2
  28. package/dist/_virtual/index2.js +2 -2
  29. package/dist/_virtual/index3.js +2 -2
  30. package/dist/_virtual/index4.js +2 -2
  31. package/dist/_virtual/index5.js +2 -2
  32. package/dist/_virtual/index6.js +2 -2
  33. package/dist/_virtual/index7.js +2 -2
  34. package/dist/_virtual/index8.js +2 -2
  35. package/dist/_virtual/index9.js +2 -2
  36. package/dist/_virtual/items.js +2 -2
  37. package/dist/_virtual/items2020.js +2 -2
  38. package/dist/_virtual/keyword.js +2 -2
  39. package/dist/_virtual/limit.js +2 -2
  40. package/dist/_virtual/limitItems.js +2 -2
  41. package/dist/_virtual/limitLength.js +2 -2
  42. package/dist/_virtual/limitNumber.js +2 -2
  43. package/dist/_virtual/limitProperties.js +2 -2
  44. package/dist/_virtual/metadata.js +2 -2
  45. package/dist/_virtual/multipleOf.js +2 -2
  46. package/dist/_virtual/names.js +2 -2
  47. package/dist/_virtual/not.js +2 -2
  48. package/dist/_virtual/oneOf.js +2 -2
  49. package/dist/_virtual/pattern.js +2 -2
  50. package/dist/_virtual/patternProperties.js +2 -2
  51. package/dist/_virtual/prefixItems.js +2 -2
  52. package/dist/_virtual/properties.js +2 -2
  53. package/dist/_virtual/propertyNames.js +2 -2
  54. package/dist/_virtual/ref.js +2 -2
  55. package/dist/_virtual/ref_error.js +2 -2
  56. package/dist/_virtual/required.js +2 -2
  57. package/dist/_virtual/resolve.js +2 -2
  58. package/dist/_virtual/rules.js +2 -2
  59. package/dist/_virtual/scope.js +2 -2
  60. package/dist/_virtual/subschema.js +2 -2
  61. package/dist/_virtual/thenElse.js +2 -2
  62. package/dist/_virtual/types.js +2 -2
  63. package/dist/_virtual/ucs2length.js +2 -2
  64. package/dist/_virtual/uniqueItems.js +2 -2
  65. package/dist/_virtual/uri.js +2 -2
  66. package/dist/_virtual/util.js +2 -2
  67. package/dist/_virtual/validation_error.js +2 -2
  68. package/dist/instrument.js +7 -4
  69. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js +109 -40
  70. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js.map +1 -0
  71. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/client.js +4 -5
  72. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/client.js.map +1 -0
  73. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js +6 -8
  74. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js.map +1 -0
  75. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js +2 -2
  76. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js.map +1 -0
  77. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js +2 -2
  78. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js.map +1 -0
  79. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js +2 -2
  80. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js.map +1 -0
  81. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +4 -4
  82. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js.map +1 -0
  83. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +23 -36
  84. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
  85. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +25 -12
  86. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +1 -0
  87. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js +7 -10
  88. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js.map +1 -0
  89. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +11 -21
  90. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -0
  91. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +10 -11
  92. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +1 -0
  93. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +75 -91
  94. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
  95. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js +2 -2
  96. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js.map +1 -0
  97. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +2 -2
  98. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js.map +1 -0
  99. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +171 -113
  100. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
  101. package/dist/node_modules/.pnpm/{@modelcontextprotocol_sdk@1.24.3_zod@4.1.13 → @modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13}/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +7 -8
  102. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.25.2_hono@4.10.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
  103. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.17.1/node_modules/ajv-formats/dist/formats.js +10 -11
  104. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.17.1/node_modules/ajv-formats/dist/formats.js.map +1 -1
  105. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.17.1/node_modules/ajv-formats/dist/index.js +8 -8
  106. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.17.1/node_modules/ajv-formats/dist/index.js.map +1 -1
  107. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.17.1/node_modules/ajv-formats/dist/limit.js +9 -10
  108. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.17.1/node_modules/ajv-formats/dist/limit.js.map +1 -1
  109. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/ajv.js +25 -23
  110. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/ajv.js.map +1 -1
  111. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/code.js +23 -24
  112. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/code.js.map +1 -1
  113. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/index.js +26 -27
  114. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/index.js.map +1 -1
  115. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/scope.js +12 -13
  116. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -1
  117. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/errors.js +14 -15
  118. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/errors.js.map +1 -1
  119. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/index.js +3 -4
  120. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/index.js.map +1 -1
  121. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/names.js +3 -4
  122. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/names.js.map +1 -1
  123. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/ref_error.js +3 -4
  124. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/ref_error.js.map +1 -1
  125. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/resolve.js +3 -4
  126. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/resolve.js.map +1 -1
  127. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/rules.js +3 -4
  128. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/rules.js.map +1 -1
  129. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/util.js +3 -4
  130. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/util.js.map +1 -1
  131. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/applicability.js +3 -4
  132. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -1
  133. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/boolSchema.js +3 -4
  134. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -1
  135. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/dataType.js +3 -4
  136. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -1
  137. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/defaults.js +3 -4
  138. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -1
  139. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/index.js +3 -4
  140. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/index.js.map +1 -1
  141. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/keyword.js +3 -4
  142. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -1
  143. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/subschema.js +3 -4
  144. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -1
  145. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/core.js +14 -15
  146. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/core.js.map +1 -1
  147. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/refs/data.json.js +2 -2
  148. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +2 -2
  149. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/equal.js +3 -4
  150. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/equal.js.map +1 -1
  151. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/ucs2length.js +3 -4
  152. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -1
  153. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/uri.js +4 -5
  154. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/uri.js.map +1 -1
  155. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/validation_error.js +3 -4
  156. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/validation_error.js.map +1 -1
  157. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +3 -4
  158. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -1
  159. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +3 -4
  160. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -1
  161. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/allOf.js +3 -4
  162. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -1
  163. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +3 -4
  164. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -1
  165. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/contains.js +3 -4
  166. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -1
  167. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +11 -12
  168. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -1
  169. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/if.js +3 -4
  170. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -1
  171. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/index.js +3 -4
  172. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -1
  173. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/items.js +3 -4
  174. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -1
  175. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/items2020.js +3 -4
  176. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -1
  177. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/not.js +3 -4
  178. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -1
  179. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +3 -4
  180. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -1
  181. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +3 -4
  182. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -1
  183. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +3 -4
  184. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -1
  185. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/properties.js +3 -4
  186. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -1
  187. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +3 -4
  188. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -1
  189. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +3 -4
  190. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -1
  191. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/code.js +3 -4
  192. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/code.js.map +1 -1
  193. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/core/id.js +3 -4
  194. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -1
  195. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/core/index.js +3 -4
  196. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -1
  197. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/core/ref.js +3 -4
  198. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -1
  199. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/index.js +3 -4
  200. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -1
  201. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/types.js +3 -4
  202. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -1
  203. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/draft7.js +3 -4
  204. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -1
  205. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/format.js +3 -4
  206. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -1
  207. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/index.js +3 -4
  208. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -1
  209. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/metadata.js +3 -4
  210. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -1
  211. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/const.js +3 -4
  212. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -1
  213. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/enum.js +3 -4
  214. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -1
  215. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/index.js +3 -4
  216. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -1
  217. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitItems.js +3 -4
  218. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -1
  219. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitLength.js +3 -4
  220. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -1
  221. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +3 -4
  222. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -1
  223. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +3 -4
  224. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -1
  225. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +3 -4
  226. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -1
  227. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/pattern.js +3 -4
  228. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -1
  229. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/required.js +3 -4
  230. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -1
  231. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +3 -4
  232. package/dist/node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -1
  233. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +3 -4
  234. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +1 -1
  235. package/dist/node_modules/.pnpm/{fast-uri@3.0.2 → fast-uri@3.1.0}/node_modules/fast-uri/index.js +57 -60
  236. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js.map +1 -0
  237. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js +197 -0
  238. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js.map +1 -0
  239. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js +261 -0
  240. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js.map +1 -0
  241. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/helper/streaming/sse.js +2 -2
  242. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/middleware/cors/index.js +2 -2
  243. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/middleware/cors/index.js.map +1 -1
  244. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/html.js +2 -2
  245. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/html.js.map +1 -1
  246. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/stream.js +2 -2
  247. package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/stream.js.map +1 -1
  248. package/dist/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js +3 -4
  249. package/dist/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js.map +1 -1
  250. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/Options.js +2 -2
  251. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/Options.js.map +1 -1
  252. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/Refs.js +2 -2
  253. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +1 -1
  254. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +2 -2
  255. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +1 -1
  256. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +2 -2
  257. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +1 -1
  258. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parseDef.js +2 -2
  259. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +1 -1
  260. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +2 -2
  261. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +1 -1
  262. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +2 -2
  263. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +1 -1
  264. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +2 -2
  265. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +1 -1
  266. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +2 -2
  267. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +1 -1
  268. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +2 -2
  269. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +1 -1
  270. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +2 -2
  271. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +1 -1
  272. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +2 -2
  273. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +1 -1
  274. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +2 -2
  275. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +1 -1
  276. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +2 -2
  277. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +1 -1
  278. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +2 -2
  279. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +1 -1
  280. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +2 -2
  281. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +1 -1
  282. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +2 -2
  283. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +1 -1
  284. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +2 -2
  285. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +1 -1
  286. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +2 -2
  287. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +1 -1
  288. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +2 -2
  289. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +1 -1
  290. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +2 -2
  291. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +1 -1
  292. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +2 -2
  293. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +1 -1
  294. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +2 -2
  295. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +1 -1
  296. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +2 -2
  297. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +1 -1
  298. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +2 -2
  299. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +1 -1
  300. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +2 -2
  301. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +1 -1
  302. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +2 -2
  303. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +1 -1
  304. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +2 -2
  305. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +1 -1
  306. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +2 -2
  307. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +1 -1
  308. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +2 -2
  309. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +1 -1
  310. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +2 -2
  311. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -1
  312. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +2 -2
  313. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +1 -1
  314. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +2 -2
  315. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +1 -1
  316. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +2 -2
  317. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +1 -1
  318. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +2 -2
  319. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +1 -1
  320. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/selectParser.js +2 -2
  321. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +1 -1
  322. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +2 -2
  323. package/dist/node_modules/.pnpm/{zod-to-json-schema@3.25.0_zod@4.1.13 → zod-to-json-schema@3.25.1_zod@4.1.13}/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +1 -1
  324. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v3/ZodError.js +2 -2
  325. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v3/errors.js +2 -2
  326. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v3/helpers/errorUtil.js +2 -2
  327. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v3/helpers/parseUtil.js +2 -2
  328. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v3/helpers/util.js +2 -2
  329. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v3/locales/en.js +2 -2
  330. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v3/types.js +2 -2
  331. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/classic/errors.js +2 -2
  332. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/classic/iso.js +2 -2
  333. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/classic/parse.js +2 -2
  334. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/classic/schemas.js +4 -4
  335. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/classic/schemas.js.map +1 -1
  336. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/api.js +2 -2
  337. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/checks.js +2 -2
  338. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/core.js +2 -2
  339. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/core.js.map +1 -1
  340. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/doc.js +2 -2
  341. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/errors.js +2 -2
  342. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/parse.js +2 -2
  343. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/regexes.js +2 -2
  344. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/registries.js +2 -2
  345. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/schemas.js +2 -2
  346. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/to-json-schema.js +3 -2
  347. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/to-json-schema.js.map +1 -1
  348. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/util.js +2 -2
  349. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/util.js.map +1 -1
  350. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/versions.js +2 -2
  351. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/core/versions.js.map +1 -1
  352. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/mini/schemas.js +4 -4
  353. package/dist/node_modules/.pnpm/zod@4.1.13/node_modules/zod/v4/mini/schemas.js.map +1 -1
  354. package/dist/run.js +5 -6
  355. package/dist/sentry-config.js +5 -5
  356. package/dist/server/cli/help.d.ts +2 -1
  357. package/dist/server/cli/help.js +43 -21
  358. package/dist/server/cli/mcp.d.ts +8 -2
  359. package/dist/server/cli/mcp.js +31 -8
  360. package/dist/server/cli/run.d.ts +8 -2
  361. package/dist/server/cli/run.js +36 -9
  362. package/dist/server/cli/server.d.ts +8 -2
  363. package/dist/server/cli/server.js +50 -18
  364. package/dist/server/cli/tail.d.ts +8 -2
  365. package/dist/server/cli/tail.js +42 -8
  366. package/dist/server/cli.d.ts +3 -2
  367. package/dist/server/cli.js +20 -19
  368. package/dist/server/constants.js +3 -4
  369. package/dist/server/formatters/human/errors.js +3 -4
  370. package/dist/server/formatters/human/index.js +3 -4
  371. package/dist/server/formatters/human/logs.js +3 -4
  372. package/dist/server/formatters/human/traces.js +3 -4
  373. package/dist/server/formatters/human/utils.d.ts +8 -4
  374. package/dist/server/formatters/human/utils.js +29 -17
  375. package/dist/server/formatters/index.js +4 -5
  376. package/dist/server/formatters/json/errors.js +3 -4
  377. package/dist/server/formatters/json/index.js +3 -4
  378. package/dist/server/formatters/json/logs.js +3 -4
  379. package/dist/server/formatters/json/traces.js +3 -4
  380. package/dist/server/formatters/logfmt/errors.js +3 -4
  381. package/dist/server/formatters/logfmt/index.js +3 -4
  382. package/dist/server/formatters/logfmt/logs.js +3 -4
  383. package/dist/server/formatters/logfmt/traces.js +3 -4
  384. package/dist/server/formatters/md/errors.js +7 -4
  385. package/dist/server/formatters/md/event.js +3 -4
  386. package/dist/server/formatters/md/index.js +3 -4
  387. package/dist/server/formatters/md/logs.js +7 -4
  388. package/dist/server/formatters/md/traces.js +3 -4
  389. package/dist/server/formatters/schema.d.ts +382 -382
  390. package/dist/server/formatters/shared/data-builders.js +3 -4
  391. package/dist/server/formatters/types.js +3 -4
  392. package/dist/server/formatters/utils.js +3 -4
  393. package/dist/server/handlers/fileToServe.js +3 -4
  394. package/dist/server/logger.js +3 -4
  395. package/dist/server/main.d.ts +3 -0
  396. package/dist/server/main.js +21 -10
  397. package/dist/server/mcp/constants.js +3 -4
  398. package/dist/server/mcp/mcp.js +6 -6
  399. package/dist/server/messageBuffer.js +9 -4
  400. package/dist/server/parser/helpers.js +3 -4
  401. package/dist/server/parser/processEnvelope.d.ts +10 -3
  402. package/dist/server/parser/processEnvelope.js +10 -4
  403. package/dist/server/parser/types.d.ts +47 -1
  404. package/dist/server/routes/clear.js +4 -4
  405. package/dist/server/routes/contextlines/index.js +3 -4
  406. package/dist/server/routes/contextlines/utils.js +3 -4
  407. package/dist/server/routes/health.js +3 -4
  408. package/dist/server/routes/index.js +3 -4
  409. package/dist/server/routes/mcp.js +3 -4
  410. package/dist/server/routes/open.js +3 -4
  411. package/dist/server/routes/stream/debugLogging.js +4 -4
  412. package/dist/server/routes/stream/index.js +4 -4
  413. package/dist/server/routes/stream/streaming.js +3 -4
  414. package/dist/server/routes/stream/userAgent.js +3 -4
  415. package/dist/server/sdk.d.ts +1 -1
  416. package/dist/server/sdk.js +5 -6
  417. package/dist/server/types/cli.d.ts +11 -0
  418. package/dist/server/utils/cors.js +3 -4
  419. package/dist/server/utils/docker-compose-parser.js +3 -4
  420. package/dist/server/utils/docker-compose.js +3 -4
  421. package/dist/server/utils/eventContainer.d.ts +2 -1
  422. package/dist/server/utils/eventContainer.js +4 -4
  423. package/dist/server/utils/extras.js +3 -4
  424. package/dist/server/utils/getBuffer.js +3 -4
  425. package/dist/shared/constants.js +3 -4
  426. package/dist/ui/assets/index.js +67 -63
  427. package/dist/ui/assets/index2.js +1 -1
  428. package/dist/ui/assets/instrumentation.js +18 -19
  429. package/dist/ui/assets/main.css +1 -1
  430. package/dist/ui/assets/main.js +1 -1
  431. package/dist/ui/assets/serverTimingMeta.js +16 -15
  432. package/dist/ui/index.html +0 -28
  433. package/dist/ui/manifest.json +3 -7
  434. package/package.json +9 -9
  435. package/dist/_virtual/_commonjsHelpers.js.map +0 -1
  436. package/dist/_virtual/_sentry-release-injection-file.js +0 -11
  437. package/dist/_virtual/_sentry-release-injection-file.js.map +0 -1
  438. package/dist/_virtual/additionalItems.js.map +0 -1
  439. package/dist/_virtual/additionalProperties.js.map +0 -1
  440. package/dist/_virtual/ajv.js.map +0 -1
  441. package/dist/_virtual/allOf.js.map +0 -1
  442. package/dist/_virtual/anyOf.js.map +0 -1
  443. package/dist/_virtual/applicability.js.map +0 -1
  444. package/dist/_virtual/boolSchema.js.map +0 -1
  445. package/dist/_virtual/code.js.map +0 -1
  446. package/dist/_virtual/code2.js.map +0 -1
  447. package/dist/_virtual/const.js.map +0 -1
  448. package/dist/_virtual/contains.js.map +0 -1
  449. package/dist/_virtual/core.js.map +0 -1
  450. package/dist/_virtual/dataType.js.map +0 -1
  451. package/dist/_virtual/defaults.js.map +0 -1
  452. package/dist/_virtual/dependencies.js.map +0 -1
  453. package/dist/_virtual/draft7.js.map +0 -1
  454. package/dist/_virtual/enum.js.map +0 -1
  455. package/dist/_virtual/equal.js.map +0 -1
  456. package/dist/_virtual/errors.js.map +0 -1
  457. package/dist/_virtual/format.js.map +0 -1
  458. package/dist/_virtual/formats.js.map +0 -1
  459. package/dist/_virtual/id.js.map +0 -1
  460. package/dist/_virtual/if.js.map +0 -1
  461. package/dist/_virtual/index.js.map +0 -1
  462. package/dist/_virtual/index10.js.map +0 -1
  463. package/dist/_virtual/index11.js.map +0 -1
  464. package/dist/_virtual/index2.js.map +0 -1
  465. package/dist/_virtual/index3.js.map +0 -1
  466. package/dist/_virtual/index4.js.map +0 -1
  467. package/dist/_virtual/index5.js.map +0 -1
  468. package/dist/_virtual/index6.js.map +0 -1
  469. package/dist/_virtual/index7.js.map +0 -1
  470. package/dist/_virtual/index8.js.map +0 -1
  471. package/dist/_virtual/index9.js.map +0 -1
  472. package/dist/_virtual/items.js.map +0 -1
  473. package/dist/_virtual/items2020.js.map +0 -1
  474. package/dist/_virtual/keyword.js.map +0 -1
  475. package/dist/_virtual/limit.js.map +0 -1
  476. package/dist/_virtual/limitItems.js.map +0 -1
  477. package/dist/_virtual/limitLength.js.map +0 -1
  478. package/dist/_virtual/limitNumber.js.map +0 -1
  479. package/dist/_virtual/limitProperties.js.map +0 -1
  480. package/dist/_virtual/metadata.js.map +0 -1
  481. package/dist/_virtual/multipleOf.js.map +0 -1
  482. package/dist/_virtual/names.js.map +0 -1
  483. package/dist/_virtual/not.js.map +0 -1
  484. package/dist/_virtual/oneOf.js.map +0 -1
  485. package/dist/_virtual/pattern.js.map +0 -1
  486. package/dist/_virtual/patternProperties.js.map +0 -1
  487. package/dist/_virtual/prefixItems.js.map +0 -1
  488. package/dist/_virtual/properties.js.map +0 -1
  489. package/dist/_virtual/propertyNames.js.map +0 -1
  490. package/dist/_virtual/ref.js.map +0 -1
  491. package/dist/_virtual/ref_error.js.map +0 -1
  492. package/dist/_virtual/required.js.map +0 -1
  493. package/dist/_virtual/resolve.js.map +0 -1
  494. package/dist/_virtual/rules.js.map +0 -1
  495. package/dist/_virtual/scope.js.map +0 -1
  496. package/dist/_virtual/subschema.js.map +0 -1
  497. package/dist/_virtual/thenElse.js.map +0 -1
  498. package/dist/_virtual/types.js.map +0 -1
  499. package/dist/_virtual/ucs2length.js.map +0 -1
  500. package/dist/_virtual/uniqueItems.js.map +0 -1
  501. package/dist/_virtual/uri.js.map +0 -1
  502. package/dist/_virtual/util.js.map +0 -1
  503. package/dist/_virtual/validation_error.js.map +0 -1
  504. package/dist/instrument.js.map +0 -1
  505. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js.map +0 -1
  506. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/client.js.map +0 -1
  507. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js.map +0 -1
  508. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js.map +0 -1
  509. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js.map +0 -1
  510. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js.map +0 -1
  511. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js.map +0 -1
  512. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +0 -1
  513. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +0 -1
  514. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js.map +0 -1
  515. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +0 -1
  516. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +0 -1
  517. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +0 -1
  518. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js.map +0 -1
  519. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js.map +0 -1
  520. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +0 -1
  521. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.24.3_zod@4.1.13/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +0 -1
  522. package/dist/node_modules/.pnpm/fast-uri@3.0.2/node_modules/fast-uri/index.js.map +0 -1
  523. package/dist/node_modules/.pnpm/fast-uri@3.0.2/node_modules/fast-uri/lib/schemes.js +0 -152
  524. package/dist/node_modules/.pnpm/fast-uri@3.0.2/node_modules/fast-uri/lib/schemes.js.map +0 -1
  525. package/dist/node_modules/.pnpm/fast-uri@3.0.2/node_modules/fast-uri/lib/scopedChars.js +0 -40
  526. package/dist/node_modules/.pnpm/fast-uri@3.0.2/node_modules/fast-uri/lib/scopedChars.js.map +0 -1
  527. package/dist/node_modules/.pnpm/fast-uri@3.0.2/node_modules/fast-uri/lib/utils.js +0 -236
  528. package/dist/node_modules/.pnpm/fast-uri@3.0.2/node_modules/fast-uri/lib/utils.js.map +0 -1
  529. package/dist/run.js.map +0 -1
  530. package/dist/sentry-config.js.map +0 -1
  531. package/dist/server/cli/help.js.map +0 -1
  532. package/dist/server/cli/mcp.js.map +0 -1
  533. package/dist/server/cli/run.js.map +0 -1
  534. package/dist/server/cli/server.js.map +0 -1
  535. package/dist/server/cli/tail.js.map +0 -1
  536. package/dist/server/cli.js.map +0 -1
  537. package/dist/server/constants.js.map +0 -1
  538. package/dist/server/formatters/human/errors.js.map +0 -1
  539. package/dist/server/formatters/human/index.js.map +0 -1
  540. package/dist/server/formatters/human/logs.js.map +0 -1
  541. package/dist/server/formatters/human/traces.js.map +0 -1
  542. package/dist/server/formatters/human/utils.js.map +0 -1
  543. package/dist/server/formatters/index.js.map +0 -1
  544. package/dist/server/formatters/json/errors.js.map +0 -1
  545. package/dist/server/formatters/json/index.js.map +0 -1
  546. package/dist/server/formatters/json/logs.js.map +0 -1
  547. package/dist/server/formatters/json/traces.js.map +0 -1
  548. package/dist/server/formatters/logfmt/errors.js.map +0 -1
  549. package/dist/server/formatters/logfmt/index.js.map +0 -1
  550. package/dist/server/formatters/logfmt/logs.js.map +0 -1
  551. package/dist/server/formatters/logfmt/traces.js.map +0 -1
  552. package/dist/server/formatters/md/errors.js.map +0 -1
  553. package/dist/server/formatters/md/event.js.map +0 -1
  554. package/dist/server/formatters/md/index.js.map +0 -1
  555. package/dist/server/formatters/md/logs.js.map +0 -1
  556. package/dist/server/formatters/md/traces.js.map +0 -1
  557. package/dist/server/formatters/shared/data-builders.js.map +0 -1
  558. package/dist/server/formatters/types.js.map +0 -1
  559. package/dist/server/formatters/utils.js.map +0 -1
  560. package/dist/server/handlers/fileToServe.js.map +0 -1
  561. package/dist/server/logger.js.map +0 -1
  562. package/dist/server/main.js.map +0 -1
  563. package/dist/server/mcp/constants.js.map +0 -1
  564. package/dist/server/mcp/mcp.js.map +0 -1
  565. package/dist/server/messageBuffer.js.map +0 -1
  566. package/dist/server/parser/helpers.js.map +0 -1
  567. package/dist/server/parser/processEnvelope.js.map +0 -1
  568. package/dist/server/routes/clear.js.map +0 -1
  569. package/dist/server/routes/contextlines/index.js.map +0 -1
  570. package/dist/server/routes/contextlines/utils.js.map +0 -1
  571. package/dist/server/routes/health.js.map +0 -1
  572. package/dist/server/routes/index.js.map +0 -1
  573. package/dist/server/routes/mcp.js.map +0 -1
  574. package/dist/server/routes/open.js.map +0 -1
  575. package/dist/server/routes/stream/debugLogging.js.map +0 -1
  576. package/dist/server/routes/stream/index.js.map +0 -1
  577. package/dist/server/routes/stream/streaming.js.map +0 -1
  578. package/dist/server/routes/stream/userAgent.js.map +0 -1
  579. package/dist/server/sdk.js.map +0 -1
  580. package/dist/server/utils/cors.js.map +0 -1
  581. package/dist/server/utils/docker-compose-parser.js.map +0 -1
  582. package/dist/server/utils/docker-compose.js.map +0 -1
  583. package/dist/server/utils/eventContainer.js.map +0 -1
  584. package/dist/server/utils/extras.js.map +0 -1
  585. package/dist/server/utils/getBuffer.js.map +0 -1
  586. package/dist/shared/constants.js.map +0 -1
  587. package/dist/ui/assets/andromeeda.js.map +0 -1
  588. package/dist/ui/assets/angular-html.js.map +0 -1
  589. package/dist/ui/assets/angular-ts.js.map +0 -1
  590. package/dist/ui/assets/astro.js.map +0 -1
  591. package/dist/ui/assets/aurora-x.js.map +0 -1
  592. package/dist/ui/assets/ayu-dark.js.map +0 -1
  593. package/dist/ui/assets/blade.js.map +0 -1
  594. package/dist/ui/assets/c.js.map +0 -1
  595. package/dist/ui/assets/catppuccin-frappe.js.map +0 -1
  596. package/dist/ui/assets/catppuccin-latte.js.map +0 -1
  597. package/dist/ui/assets/catppuccin-macchiato.js.map +0 -1
  598. package/dist/ui/assets/catppuccin-mocha.js.map +0 -1
  599. package/dist/ui/assets/coffee.js.map +0 -1
  600. package/dist/ui/assets/cpp.js.map +0 -1
  601. package/dist/ui/assets/css.js.map +0 -1
  602. package/dist/ui/assets/dark-plus.js.map +0 -1
  603. package/dist/ui/assets/dracula-soft.js.map +0 -1
  604. package/dist/ui/assets/dracula.js.map +0 -1
  605. package/dist/ui/assets/everforest-dark.js.map +0 -1
  606. package/dist/ui/assets/everforest-light.js.map +0 -1
  607. package/dist/ui/assets/github-dark-default.js.map +0 -1
  608. package/dist/ui/assets/github-dark-dimmed.js.map +0 -1
  609. package/dist/ui/assets/github-dark-high-contrast.js.map +0 -1
  610. package/dist/ui/assets/github-dark.js.map +0 -1
  611. package/dist/ui/assets/github-light-default.js.map +0 -1
  612. package/dist/ui/assets/github-light-high-contrast.js.map +0 -1
  613. package/dist/ui/assets/github-light.js.map +0 -1
  614. package/dist/ui/assets/glsl.js.map +0 -1
  615. package/dist/ui/assets/graphql.js.map +0 -1
  616. package/dist/ui/assets/gruvbox-dark-hard.js.map +0 -1
  617. package/dist/ui/assets/gruvbox-dark-medium.js.map +0 -1
  618. package/dist/ui/assets/gruvbox-dark-soft.js.map +0 -1
  619. package/dist/ui/assets/gruvbox-light-hard.js.map +0 -1
  620. package/dist/ui/assets/gruvbox-light-medium.js.map +0 -1
  621. package/dist/ui/assets/gruvbox-light-soft.js.map +0 -1
  622. package/dist/ui/assets/haml.js.map +0 -1
  623. package/dist/ui/assets/handlebars.js.map +0 -1
  624. package/dist/ui/assets/houston.js.map +0 -1
  625. package/dist/ui/assets/html-derivative.js.map +0 -1
  626. package/dist/ui/assets/html.js.map +0 -1
  627. package/dist/ui/assets/http.js.map +0 -1
  628. package/dist/ui/assets/imba.js.map +0 -1
  629. package/dist/ui/assets/index.js.map +0 -1
  630. package/dist/ui/assets/index2.js.map +0 -1
  631. package/dist/ui/assets/instrumentation.js.map +0 -1
  632. package/dist/ui/assets/java.js.map +0 -1
  633. package/dist/ui/assets/javascript.js.map +0 -1
  634. package/dist/ui/assets/jinja.js.map +0 -1
  635. package/dist/ui/assets/jison.js.map +0 -1
  636. package/dist/ui/assets/json.js.map +0 -1
  637. package/dist/ui/assets/json5.js.map +0 -1
  638. package/dist/ui/assets/jsonc.js.map +0 -1
  639. package/dist/ui/assets/jsonl.js.map +0 -1
  640. package/dist/ui/assets/jsx.js.map +0 -1
  641. package/dist/ui/assets/julia.js.map +0 -1
  642. package/dist/ui/assets/kanagawa-dragon.js.map +0 -1
  643. package/dist/ui/assets/kanagawa-lotus.js.map +0 -1
  644. package/dist/ui/assets/kanagawa-wave.js.map +0 -1
  645. package/dist/ui/assets/laserwave.js.map +0 -1
  646. package/dist/ui/assets/less.js.map +0 -1
  647. package/dist/ui/assets/light-plus.js.map +0 -1
  648. package/dist/ui/assets/main.js.map +0 -1
  649. package/dist/ui/assets/markdown.js.map +0 -1
  650. package/dist/ui/assets/marko.js.map +0 -1
  651. package/dist/ui/assets/material-theme-darker.js.map +0 -1
  652. package/dist/ui/assets/material-theme-lighter.js.map +0 -1
  653. package/dist/ui/assets/material-theme-ocean.js.map +0 -1
  654. package/dist/ui/assets/material-theme-palenight.js.map +0 -1
  655. package/dist/ui/assets/material-theme.js.map +0 -1
  656. package/dist/ui/assets/mdc.js.map +0 -1
  657. package/dist/ui/assets/mdx.js.map +0 -1
  658. package/dist/ui/assets/min-dark.js.map +0 -1
  659. package/dist/ui/assets/min-light.js.map +0 -1
  660. package/dist/ui/assets/monokai.js.map +0 -1
  661. package/dist/ui/assets/night-owl.js.map +0 -1
  662. package/dist/ui/assets/nord.js.map +0 -1
  663. package/dist/ui/assets/one-dark-pro.js.map +0 -1
  664. package/dist/ui/assets/one-light.js.map +0 -1
  665. package/dist/ui/assets/php.js.map +0 -1
  666. package/dist/ui/assets/plastic.js.map +0 -1
  667. package/dist/ui/assets/poimandres.js.map +0 -1
  668. package/dist/ui/assets/postcss.js.map +0 -1
  669. package/dist/ui/assets/pug.js.map +0 -1
  670. package/dist/ui/assets/python.js.map +0 -1
  671. package/dist/ui/assets/r.js.map +0 -1
  672. package/dist/ui/assets/red.js.map +0 -1
  673. package/dist/ui/assets/regexp.js.map +0 -1
  674. package/dist/ui/assets/rose-pine-dawn.js.map +0 -1
  675. package/dist/ui/assets/rose-pine-moon.js.map +0 -1
  676. package/dist/ui/assets/rose-pine.js.map +0 -1
  677. package/dist/ui/assets/sass.js.map +0 -1
  678. package/dist/ui/assets/scss.js.map +0 -1
  679. package/dist/ui/assets/serverTimingMeta.js.map +0 -1
  680. package/dist/ui/assets/shellscript.js.map +0 -1
  681. package/dist/ui/assets/slack-dark.js.map +0 -1
  682. package/dist/ui/assets/slack-ochin.js.map +0 -1
  683. package/dist/ui/assets/snazzy-light.js.map +0 -1
  684. package/dist/ui/assets/solarized-dark.js.map +0 -1
  685. package/dist/ui/assets/solarized-light.js.map +0 -1
  686. package/dist/ui/assets/sql.js.map +0 -1
  687. package/dist/ui/assets/stylus.js.map +0 -1
  688. package/dist/ui/assets/svelte.js.map +0 -1
  689. package/dist/ui/assets/synthwave-84.js.map +0 -1
  690. package/dist/ui/assets/tokyo-night.js.map +0 -1
  691. package/dist/ui/assets/ts-tags.js.map +0 -1
  692. package/dist/ui/assets/tsx.js.map +0 -1
  693. package/dist/ui/assets/typescript.js.map +0 -1
  694. package/dist/ui/assets/vesper.js.map +0 -1
  695. package/dist/ui/assets/vitesse-black.js.map +0 -1
  696. package/dist/ui/assets/vitesse-dark.js.map +0 -1
  697. package/dist/ui/assets/vitesse-light.js.map +0 -1
  698. package/dist/ui/assets/vue-html.js.map +0 -1
  699. package/dist/ui/assets/vue-vine.js.map +0 -1
  700. package/dist/ui/assets/vue.js.map +0 -1
  701. package/dist/ui/assets/wasm.js.map +0 -1
  702. package/dist/ui/assets/wasm2.js.map +0 -1
  703. package/dist/ui/assets/wgsl.js.map +0 -1
  704. package/dist/ui/assets/wit.js.map +0 -1
  705. package/dist/ui/assets/xml.js.map +0 -1
  706. package/dist/ui/assets/yaml.js.map +0 -1
@@ -1,236 +0,0 @@
1
- ;
2
- !function() {
3
- try {
4
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
5
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "776c02c6-6edf-45df-81f9-baef4febe445", e._sentryDebugIdIdentifier = "sentry-dbid-776c02c6-6edf-45df-81f9-baef4febe445");
6
- } catch (e2) {
7
- }
8
- }();
9
- import "../../../../../../_virtual/_sentry-release-injection-file.js";
10
- import { s as scopedChars } from "./scopedChars.js";
11
- const { HEX } = scopedChars;
12
- function normalizeIPv4(host) {
13
- if (findToken(host, ".") < 3) {
14
- return { host, isIPV4: false };
15
- }
16
- const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || [];
17
- const [address] = matches;
18
- if (address) {
19
- return { host: stripLeadingZeros(address, "."), isIPV4: true };
20
- } else {
21
- return { host, isIPV4: false };
22
- }
23
- }
24
- function stringArrayToHexStripped(input, keepZero = false) {
25
- let acc = "";
26
- let strip = true;
27
- for (const c of input) {
28
- if (HEX[c] === void 0) return void 0;
29
- if (c !== "0" && strip === true) strip = false;
30
- if (!strip) acc += c;
31
- }
32
- if (keepZero && acc.length === 0) acc = "0";
33
- return acc;
34
- }
35
- function getIPV6(input) {
36
- let tokenCount = 0;
37
- const output = { error: false, address: "", zone: "" };
38
- const address = [];
39
- const buffer = [];
40
- let isZone = false;
41
- let endipv6Encountered = false;
42
- let endIpv6 = false;
43
- function consume() {
44
- if (buffer.length) {
45
- if (isZone === false) {
46
- const hex = stringArrayToHexStripped(buffer);
47
- if (hex !== void 0) {
48
- address.push(hex);
49
- } else {
50
- output.error = true;
51
- return false;
52
- }
53
- }
54
- buffer.length = 0;
55
- }
56
- return true;
57
- }
58
- for (let i = 0; i < input.length; i++) {
59
- const cursor = input[i];
60
- if (cursor === "[" || cursor === "]") {
61
- continue;
62
- }
63
- if (cursor === ":") {
64
- if (endipv6Encountered === true) {
65
- endIpv6 = true;
66
- }
67
- if (!consume()) {
68
- break;
69
- }
70
- tokenCount++;
71
- address.push(":");
72
- if (tokenCount > 7) {
73
- output.error = true;
74
- break;
75
- }
76
- if (i - 1 >= 0 && input[i - 1] === ":") {
77
- endipv6Encountered = true;
78
- }
79
- continue;
80
- } else if (cursor === "%") {
81
- if (!consume()) {
82
- break;
83
- }
84
- isZone = true;
85
- } else {
86
- buffer.push(cursor);
87
- continue;
88
- }
89
- }
90
- if (buffer.length) {
91
- if (isZone) {
92
- output.zone = buffer.join("");
93
- } else if (endIpv6) {
94
- address.push(buffer.join(""));
95
- } else {
96
- address.push(stringArrayToHexStripped(buffer));
97
- }
98
- }
99
- output.address = address.join("");
100
- return output;
101
- }
102
- function normalizeIPv6(host, opts = {}) {
103
- if (findToken(host, ":") < 2) {
104
- return { host, isIPV6: false };
105
- }
106
- const ipv6 = getIPV6(host);
107
- if (!ipv6.error) {
108
- let newHost = ipv6.address;
109
- let escapedHost = ipv6.address;
110
- if (ipv6.zone) {
111
- newHost += "%" + ipv6.zone;
112
- escapedHost += "%25" + ipv6.zone;
113
- }
114
- return { host: newHost, escapedHost, isIPV6: true };
115
- } else {
116
- return { host, isIPV6: false };
117
- }
118
- }
119
- function stripLeadingZeros(str, token) {
120
- let out = "";
121
- let skip = true;
122
- const l = str.length;
123
- for (let i = 0; i < l; i++) {
124
- const c = str[i];
125
- if (c === "0" && skip) {
126
- if (i + 1 <= l && str[i + 1] === token || i + 1 === l) {
127
- out += c;
128
- skip = false;
129
- }
130
- } else {
131
- if (c === token) {
132
- skip = true;
133
- } else {
134
- skip = false;
135
- }
136
- out += c;
137
- }
138
- }
139
- return out;
140
- }
141
- function findToken(str, token) {
142
- let ind = 0;
143
- for (let i = 0; i < str.length; i++) {
144
- if (str[i] === token) ind++;
145
- }
146
- return ind;
147
- }
148
- const RDS1 = /^\.\.?\//u;
149
- const RDS2 = /^\/\.(?:\/|$)/u;
150
- const RDS3 = /^\/\.\.(?:\/|$)/u;
151
- const RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/u;
152
- function removeDotSegments(input) {
153
- const output = [];
154
- while (input.length) {
155
- if (input.match(RDS1)) {
156
- input = input.replace(RDS1, "");
157
- } else if (input.match(RDS2)) {
158
- input = input.replace(RDS2, "/");
159
- } else if (input.match(RDS3)) {
160
- input = input.replace(RDS3, "/");
161
- output.pop();
162
- } else if (input === "." || input === "..") {
163
- input = "";
164
- } else {
165
- const im = input.match(RDS5);
166
- if (im) {
167
- const s = im[0];
168
- input = input.slice(s.length);
169
- output.push(s);
170
- } else {
171
- throw new Error("Unexpected dot segment condition");
172
- }
173
- }
174
- }
175
- return output.join("");
176
- }
177
- function normalizeComponentEncoding(components, esc) {
178
- const func = esc !== true ? escape : unescape;
179
- if (components.scheme !== void 0) {
180
- components.scheme = func(components.scheme);
181
- }
182
- if (components.userinfo !== void 0) {
183
- components.userinfo = func(components.userinfo);
184
- }
185
- if (components.host !== void 0) {
186
- components.host = func(components.host);
187
- }
188
- if (components.path !== void 0) {
189
- components.path = func(components.path);
190
- }
191
- if (components.query !== void 0) {
192
- components.query = func(components.query);
193
- }
194
- if (components.fragment !== void 0) {
195
- components.fragment = func(components.fragment);
196
- }
197
- return components;
198
- }
199
- function recomposeAuthority(components, options) {
200
- const uriTokens = [];
201
- if (components.userinfo !== void 0) {
202
- uriTokens.push(components.userinfo);
203
- uriTokens.push("@");
204
- }
205
- if (components.host !== void 0) {
206
- let host = unescape(components.host);
207
- const ipV4res = normalizeIPv4(host);
208
- if (ipV4res.isIPV4) {
209
- host = ipV4res.host;
210
- } else {
211
- const ipV6res = normalizeIPv6(ipV4res.host, {});
212
- if (ipV6res.isIPV6 === true) {
213
- host = `[${ipV6res.escapedHost}]`;
214
- } else {
215
- host = components.host;
216
- }
217
- }
218
- uriTokens.push(host);
219
- }
220
- if (typeof components.port === "number" || typeof components.port === "string") {
221
- uriTokens.push(":");
222
- uriTokens.push(String(components.port));
223
- }
224
- return uriTokens.length ? uriTokens.join("") : void 0;
225
- }
226
- var utils = {
227
- recomposeAuthority,
228
- normalizeComponentEncoding,
229
- removeDotSegments,
230
- normalizeIPv4,
231
- normalizeIPv6
232
- };
233
- export {
234
- utils as u
235
- };
236
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../../../../node_modules/.pnpm/fast-uri@3.0.2/node_modules/fast-uri/lib/utils.js"],"sourcesContent":["'use strict'\n\nconst { HEX } = require('./scopedChars')\n\nfunction normalizeIPv4 (host) {\n if (findToken(host, '.') < 3) { return { host, isIPV4: false } }\n const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || []\n const [address] = matches\n if (address) {\n return { host: stripLeadingZeros(address, '.'), isIPV4: true }\n } else {\n return { host, isIPV4: false }\n }\n}\n\n/**\n * @param {string[]} input\n * @param {boolean} [keepZero=false]\n * @returns {string|undefined}\n */\nfunction stringArrayToHexStripped (input, keepZero = false) {\n let acc = ''\n let strip = true\n for (const c of input) {\n if (HEX[c] === undefined) return undefined\n if (c !== '0' && strip === true) strip = false\n if (!strip) acc += c\n }\n if (keepZero && acc.length === 0) acc = '0'\n return acc\n}\n\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n const address = []\n const buffer = []\n let isZone = false\n let endipv6Encountered = false\n let endIpv6 = false\n\n function consume () {\n if (buffer.length) {\n if (isZone === false) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== undefined) {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n }\n buffer.length = 0\n }\n return true\n }\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume()) { break }\n tokenCount++\n address.push(':')\n if (tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i - 1 >= 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n continue\n } else if (cursor === '%') {\n if (!consume()) { break }\n // switch to zone detection\n isZone = true\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (isZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\nfunction normalizeIPv6 (host, opts = {}) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, escapedHost, isIPV6: true }\n } else {\n return { host, isIPV6: false }\n }\n}\n\nfunction stripLeadingZeros (str, token) {\n let out = ''\n let skip = true\n const l = str.length\n for (let i = 0; i < l; i++) {\n const c = str[i]\n if (c === '0' && skip) {\n if ((i + 1 <= l && str[i + 1] === token) || i + 1 === l) {\n out += c\n skip = false\n }\n } else {\n if (c === token) {\n skip = true\n } else {\n skip = false\n }\n out += c\n }\n }\n return out\n}\n\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\nconst RDS1 = /^\\.\\.?\\//u\nconst RDS2 = /^\\/\\.(?:\\/|$)/u\nconst RDS3 = /^\\/\\.\\.(?:\\/|$)/u\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/u\n\nfunction removeDotSegments (input) {\n const output = []\n\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, '')\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, '/')\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, '/')\n output.pop()\n } else if (input === '.' || input === '..') {\n input = ''\n } else {\n const im = input.match(RDS5)\n if (im) {\n const s = im[0]\n input = input.slice(s.length)\n output.push(s)\n } else {\n throw new Error('Unexpected dot segment condition')\n }\n }\n }\n return output.join('')\n}\n\nfunction normalizeComponentEncoding (components, esc) {\n const func = esc !== true ? escape : unescape\n if (components.scheme !== undefined) {\n components.scheme = func(components.scheme)\n }\n if (components.userinfo !== undefined) {\n components.userinfo = func(components.userinfo)\n }\n if (components.host !== undefined) {\n components.host = func(components.host)\n }\n if (components.path !== undefined) {\n components.path = func(components.path)\n }\n if (components.query !== undefined) {\n components.query = func(components.query)\n }\n if (components.fragment !== undefined) {\n components.fragment = func(components.fragment)\n }\n return components\n}\n\nfunction recomposeAuthority (components, options) {\n const uriTokens = []\n\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo)\n uriTokens.push('@')\n }\n\n if (components.host !== undefined) {\n let host = unescape(components.host)\n const ipV4res = normalizeIPv4(host)\n\n if (ipV4res.isIPV4) {\n host = ipV4res.host\n } else {\n const ipV6res = normalizeIPv6(ipV4res.host, { isIPV4: false })\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = components.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof components.port === 'number' || typeof components.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(components.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n normalizeIPv4,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n"],"names":["require$$0"],"mappings":"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","x_google_ignoreList":[0]}
package/dist/run.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sources":["../src/run.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport Module from \"node:module\";\nimport { join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { setContext, startSpan } from \"@sentry/node\";\nimport { main } from \"./server/cli.ts\";\nimport \"./instrument.ts\";\n\nconst require = Module.createRequire(import.meta.url);\nlet sea: any = null;\ntry {\n // This is to maintain compatibility with Node 20.11- as\n // the `node:sea` module is added in Node 20.12+\n sea = require(\"node:sea\");\n} catch {\n sea = { isSea: () => false };\n}\n\nconst homeDir = process.env.HOME || process.env.USERPROFILE;\nsetContext(\"CLI\", {\n sea: sea.isSea(),\n // TODO: Be less naive with path obscuring\n argv: homeDir ? process.argv.map(arg => arg.replace(homeDir, \"~\")) : process.argv,\n});\n\nconst withTracing = <T extends (...args: any[]) => any>(\n fn: T,\n spanArgs = {},\n): ((...args: Parameters<T>) => ReturnType<T>) => {\n return (...args: Parameters<T>): ReturnType<T> =>\n startSpan({ name: fn.name, attributes: { args }, ...spanArgs }, () => fn(...args));\n};\n\nconst readAsset = withTracing(\n sea.isSea()\n ? (name: string) => Buffer.from(sea.getRawAsset(name))\n : (() => {\n const ASSET_DIR = join(fileURLToPath(import.meta.url), \"../../dist/ui/\");\n\n return (name: string) => readFileSync(join(ASSET_DIR, name));\n })(),\n { name: \"readAsset\", op: \"cli.asset.read\" },\n);\n\nstartSpan({ name: \"Spotlight CLI\", op: \"cli\" }, async () => {\n await startSpan({ name: \"Setup Spotlight\", op: \"cli.setup\" }, async () => {\n const MANIFEST_NAME = \"manifest.json\";\n const ENTRY_POINT_NAME = \"index.html\";\n const filesToServe = Object.create(null);\n\n if (process.env.NODE_ENV === \"production\") {\n startSpan({ name: \"Setup Server Assets\", op: \"cli.setup.assets\" }, () => {\n // Following the guide here: https://vite.dev/guide/backend-integration.html\n const manifest = JSON.parse(readAsset(MANIFEST_NAME).toString());\n filesToServe[ENTRY_POINT_NAME] = readAsset(ENTRY_POINT_NAME);\n const entries = Object.values(manifest);\n for (const entry of entries) {\n if (entry && typeof entry === \"object\" && \"file\" in entry && typeof entry.file === \"string\") {\n filesToServe[entry.file] = readAsset(entry.file);\n }\n }\n });\n }\n\n await main({\n basePath: process.cwd(),\n filesToServe,\n });\n });\n});\n"],"names":["require"],"mappings":";;;;;;;;;;;;;;;;AAQA,MAAMA,WAAU,OAAO,cAAc,YAAY,GAAG;AACpD,IAAI,MAAW;AACf,IAAI;AAGF,QAAMA,SAAQ,UAAU;AAC1B,QAAQ;AACN,QAAM,EAAE,OAAO,MAAM,MAAA;AACvB;AAEA,MAAM,UAAU,QAAQ,IAAI,QAAQ,QAAQ,IAAI;AAChD,WAAW,OAAO;AAAA,EAChB,KAAK,IAAI,MAAA;AAAA;AAAA,EAET,MAAM,UAAU,QAAQ,KAAK,IAAI,CAAA,QAAO,IAAI,QAAQ,SAAS,GAAG,CAAC,IAAI,QAAQ;AAC/E,CAAC;AAED,MAAM,cAAc,CAClB,IACA,WAAW,OACqC;AAChD,SAAO,IAAI,SACT,UAAU,EAAE,MAAM,GAAG,MAAM,YAAY,EAAE,KAAA,GAAQ,GAAG,SAAA,GAAY,MAAM,GAAG,GAAG,IAAI,CAAC;AACrF;AAEA,MAAM,YAAY;AAAA,EAChB,IAAI,MAAA,IACA,CAAC,SAAiB,OAAO,KAAK,IAAI,YAAY,IAAI,CAAC,KAClD,MAAM;AACL,UAAM,YAAY,KAAK,cAAc,YAAY,GAAG,GAAG,gBAAgB;AAEvE,WAAO,CAAC,SAAiB,aAAa,KAAK,WAAW,IAAI,CAAC;AAAA,EAC7D,GAAA;AAAA,EACJ,EAAE,MAAM,aAAa,IAAI,iBAAA;AAC3B;AAEA,UAAU,EAAE,MAAM,iBAAiB,IAAI,MAAA,GAAS,YAAY;AAC1D,QAAM,UAAU,EAAE,MAAM,mBAAmB,IAAI,YAAA,GAAe,YAAY;AACxE,UAAM,gBAAgB;AACtB,UAAM,mBAAmB;AACzB,UAAM,eAAe,uBAAO,OAAO,IAAI;AAEI;AACzC,gBAAU,EAAE,MAAM,uBAAuB,IAAI,mBAAA,GAAsB,MAAM;AAEvE,cAAM,WAAW,KAAK,MAAM,UAAU,aAAa,EAAE,UAAU;AAC/D,qBAAa,gBAAgB,IAAI,UAAU,gBAAgB;AAC3D,cAAM,UAAU,OAAO,OAAO,QAAQ;AACtC,mBAAW,SAAS,SAAS;AAC3B,cAAI,SAAS,OAAO,UAAU,YAAY,UAAU,SAAS,OAAO,MAAM,SAAS,UAAU;AAC3F,yBAAa,MAAM,IAAI,IAAI,UAAU,MAAM,IAAI;AAAA,UACjD;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,KAAK;AAAA,MACT,UAAU,QAAQ,IAAA;AAAA,MAClB;AAAA,IAAA,CACD;AAAA,EACH,CAAC;AACH,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sentry-config.js","sources":["../src/sentry-config.ts"],"sourcesContent":["// Detect CI environment at runtime (not replaced by build process)\nconst isCI = process.env.CI === \"true\" || process.env.GITHUB_ACTIONS === \"true\";\n\nexport const sentryBaseConfig = {\n enabled: Boolean(process.env.NODE_ENV) && process.env.NODE_ENV !== \"development\",\n environment: isCI ? \"github-ci\" : process.env.NODE_ENV || \"development\",\n release: `spotlight@${process.env.npm_package_version}`,\n tracesSampleRate: 1,\n enableLogs: true,\n} as const;\n"],"names":[],"mappings":";;;;;;;;;AACA,MAAM,OAAO,QAAQ,IAAI,OAAO,UAAU,QAAQ,IAAI,mBAAmB;AAElE,MAAM,mBAAmB;AAAA,EAC9B,SAAS,QAAQ,YAAoB,KAAK;AAAA,EAC1C,aAAa,OAAO,cAAc;AAAA,EAClC,SAAS,aAAa,OAA+B;AAAA,EACrD,kBAAkB;AAAA,EAClB,YAAY;AACd;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"help.js","sources":["../../../src/server/cli/help.ts"],"sourcesContent":["import { EVERYTHING_MAGIC_WORDS, NAME_TO_TYPE_MAPPING } from \"../cli/tail.ts\";\nimport { AVAILABLE_FORMATTERS } from \"../formatters/types.ts\";\n\nexport default function showHelp() {\n console.log(`\nSpotlight Sidecar - Development proxy server for Spotlight\n\nUsage: spotlight [command] [options]\n\nCommands:\n tail [types...] Tail Sentry events (default: everything)\n Available types: ${[...Object.keys(NAME_TO_TYPE_MAPPING)].join(\", \")}\n Magic words: ${[...EVERYTHING_MAGIC_WORDS].join(\", \")}\n mcp Start in MCP (Model Context Protocol) mode\n help Show this help message\n\nOptions:\n -p, --port <port> Port to listen on (default: 8969, or 0 for random)\n -o, --open Open the Spotlight dashboard in your default browser\n -d, --debug Enable debug logging\n -f, --format <format> Output format for tail command (default: human)\n Available formats: ${[...AVAILABLE_FORMATTERS].join(\", \")}\n -A, --allowed-origin <origin>\n Additional origins to allow for CORS requests.\n Can be specified multiple times or comma-separated.\n Accepts full origins (https://example.com:443) for\n strict matching or plain domains (myapp.local) to\n allow any protocol/port.\n -h, --help Show this help message\n\nExamples:\n spotlight # Start on default port 8969\n spotlight --open # Start and open dashboard in browser\n spotlight tail # Tail all event types (human format)\n spotlight tail errors # Tail only errors\n spotlight tail errors logs # Tail errors and logs\n spotlight tail --format json # Explicitly use json format\n spotlight mcp # Start in MCP mode\n spotlight --port 3000 # Start on port 3000\n spotlight -p 3000 -d # Start on port 3000 with debug logging\n spotlight -A myapp.local # Allow requests from myapp.local\n spotlight -A https://tunnel.ngrok.io -A dev.local # Multiple origins\n`);\n process.exit(0);\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAGA,SAAwB,WAAW;AACjC,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAO4B,CAAC,GAAG,OAAO,KAAK,oBAAoB,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,sCACrD,CAAC,GAAG,sBAAsB,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CAS9B,CAAC,GAAG,oBAAoB,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAqBjF;AACC,UAAQ,KAAK,CAAC;AAChB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.js","sources":["../../../src/server/cli/mcp.ts"],"sourcesContent":["import { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { captureException } from \"@sentry/node\";\nimport { ServerType as ProxyServerType, startStdioServer } from \"mcp-proxy\";\nimport { logger } from \"../logger.ts\";\nimport { setShutdownHandlers, startServer } from \"../main.ts\";\nimport { createMCPInstance } from \"../mcp/mcp.ts\";\nimport type { CLIHandlerOptions } from \"../types/cli.ts\";\nimport type { NormalizedAllowedOrigins } from \"../utils/cors.ts\";\nimport { normalizeAllowedOrigins } from \"../utils/cors.ts\";\nimport { isSidecarRunning } from \"../utils/extras.ts\";\n\nasync function startServerWithStdioMCP(\n port: CLIHandlerOptions[\"port\"],\n basePath: CLIHandlerOptions[\"basePath\"],\n filesToServe: CLIHandlerOptions[\"filesToServe\"],\n normalizedAllowedOrigins: NormalizedAllowedOrigins | undefined,\n) {\n const serverInstance = await startServer({\n port,\n basePath,\n filesToServe,\n normalizedAllowedOrigins,\n });\n setShutdownHandlers(serverInstance);\n\n logger.info(\"Starting MCP over stdio too...\");\n const mcpInstance = createMCPInstance();\n await mcpInstance.connect(new StdioServerTransport());\n\n const shutdownMcp = () => {\n mcpInstance.close();\n };\n\n process.on(\"SIGINT\", shutdownMcp);\n process.on(\"SIGTERM\", shutdownMcp);\n\n return serverInstance;\n}\n\nasync function startMCPStdioHTTPProxy(\n port: CLIHandlerOptions[\"port\"],\n basePath: CLIHandlerOptions[\"basePath\"],\n filesToServe: CLIHandlerOptions[\"filesToServe\"],\n normalizedAllowedOrigins: NormalizedAllowedOrigins | undefined,\n) {\n let intentionalShutdown = false;\n let client: Client | null = null;\n let server: Awaited<ReturnType<typeof startStdioServer>> | null = null;\n\n const shutdown = async () => {\n if (intentionalShutdown) {\n // If we get the signal again, exit immediately\n logger.info(\"Bye.\");\n process.exit(0);\n }\n\n intentionalShutdown = true;\n logger.info(\"Shutting down MCP stdio proxy...\");\n\n if (client) {\n await client.close();\n }\n if (server) {\n await server.close();\n }\n };\n\n // Set up signal handlers for graceful shutdown\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n\n server = await startStdioServer({\n // We need to hook into `initStreamClient` as the returned object from startStdioServer\n // is not a meta proxy object giving access to both the server and the client. It just\n // returns the StdioServerTransport instance without a way to access the client or its errors.\n // TODO: We should probably upstream a fix for this to close the server or bubble the errors\n initStreamClient: () => {\n client = new Client({\n name: \"Spotlight Sidecar (stdio proxy)\",\n version: \"1.0.0\",\n });\n client.onerror = async (err: Error) => {\n if (\n err.message.startsWith(\"Maximum reconnection attempts\") ||\n /disconnected|fetch failed|connection closed/i.test(err.message)\n ) {\n if (client) await client.close();\n if (server) await server.close();\n } else if (!/conflict/i.test(err.message)) {\n captureException(err);\n logger.error(`MCP stdio proxy error: ${err.name}: ${err.message}`);\n }\n };\n return Promise.resolve(client);\n },\n serverType: ProxyServerType.HTTPStream,\n url: `http://localhost:${port}/mcp`,\n });\n server.onclose = async () => {\n // If this is an intentional shutdown, don't restart\n if (intentionalShutdown) {\n logger.info(\"MCP stdio proxy server closed.\");\n return;\n }\n\n logger.info(\"MCP stdio proxy server closed unexpectedly. Attempting to restart...\");\n process.off(\"SIGINT\", shutdown);\n process.off(\"SIGTERM\", shutdown);\n // We need to manually resume stdin as `StdioServerTransport` pauses it on\n // close but does not `resume` it when a new instance is created. Probably\n // a bug in https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/server/stdio.ts\n process.stdin.resume();\n\n try {\n await startMCPStdioHTTPProxy(port, basePath, filesToServe, normalizedAllowedOrigins);\n logger.info(\"Connection restored\");\n } catch (_err) {\n try {\n return await startServerWithStdioMCP(port, basePath, filesToServe, normalizedAllowedOrigins);\n } catch (_err2) {\n logger.error(\"Failed to restart sidecar server after MCP stdio proxy closed.\");\n captureException(_err2);\n await startMCPStdioHTTPProxy(port, basePath, filesToServe, normalizedAllowedOrigins);\n }\n }\n };\n}\n\nexport default async function mcp({ port, basePath, filesToServe, allowedOrigins }: CLIHandlerOptions) {\n // Normalize allowed origins once at startup\n const normalizedAllowedOrigins = allowedOrigins ? normalizeAllowedOrigins(allowedOrigins) : undefined;\n\n if (port > 0 && (await isSidecarRunning(port))) {\n logger.info(\"Connecting to existing MCP instance with stdio proxy...\");\n await startMCPStdioHTTPProxy(port, basePath, filesToServe, normalizedAllowedOrigins);\n logger.info(`Connected to existing MCP instance on port ${port}`);\n } else {\n return await startServerWithStdioMCP(port, basePath, filesToServe, normalizedAllowedOrigins);\n }\n}\n"],"names":["ProxyServerType"],"mappings":";;;;;;;;;;;;;;;;;;AAYA,eAAe,wBACb,MACA,UACA,cACA,0BACA;AACA,QAAM,iBAAiB,MAAM,YAAY;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACD,sBAAoB,cAAc;AAElC,SAAO,KAAK,gCAAgC;AAC5C,QAAM,cAAc,kBAAA;AACpB,QAAM,YAAY,QAAQ,IAAI,sBAAsB;AAEpD,QAAM,cAAc,MAAM;AACxB,gBAAY,MAAA;AAAA,EACd;AAEA,UAAQ,GAAG,UAAU,WAAW;AAChC,UAAQ,GAAG,WAAW,WAAW;AAEjC,SAAO;AACT;AAEA,eAAe,uBACb,MACA,UACA,cACA,0BACA;AACA,MAAI,sBAAsB;AAC1B,MAAI,SAAwB;AAC5B,MAAI,SAA8D;AAElE,QAAM,WAAW,YAAY;AAC3B,QAAI,qBAAqB;AAEvB,aAAO,KAAK,MAAM;AAClB,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,0BAAsB;AACtB,WAAO,KAAK,kCAAkC;AAE9C,QAAI,QAAQ;AACV,YAAM,OAAO,MAAA;AAAA,IACf;AACA,QAAI,QAAQ;AACV,YAAM,OAAO,MAAA;AAAA,IACf;AAAA,EACF;AAGA,UAAQ,GAAG,UAAU,QAAQ;AAC7B,UAAQ,GAAG,WAAW,QAAQ;AAE9B,WAAS,MAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,IAK9B,kBAAkB,MAAM;AACtB,eAAS,IAAI,OAAO;AAAA,QAClB,MAAM;AAAA,QACN,SAAS;AAAA,MAAA,CACV;AACD,aAAO,UAAU,OAAO,QAAe;AACrC,YACE,IAAI,QAAQ,WAAW,+BAA+B,KACtD,+CAA+C,KAAK,IAAI,OAAO,GAC/D;AACA,cAAI,OAAQ,OAAM,OAAO,MAAA;AACzB,cAAI,OAAQ,OAAM,OAAO,MAAA;AAAA,QAC3B,WAAW,CAAC,YAAY,KAAK,IAAI,OAAO,GAAG;AACzC,2BAAiB,GAAG;AACpB,iBAAO,MAAM,0BAA0B,IAAI,IAAI,KAAK,IAAI,OAAO,EAAE;AAAA,QACnE;AAAA,MACF;AACA,aAAO,QAAQ,QAAQ,MAAM;AAAA,IAC/B;AAAA,IACA,YAAYA,WAAgB;AAAA,IAC5B,KAAK,oBAAoB,IAAI;AAAA,EAAA,CAC9B;AACD,SAAO,UAAU,YAAY;AAE3B,QAAI,qBAAqB;AACvB,aAAO,KAAK,gCAAgC;AAC5C;AAAA,IACF;AAEA,WAAO,KAAK,sEAAsE;AAClF,YAAQ,IAAI,UAAU,QAAQ;AAC9B,YAAQ,IAAI,WAAW,QAAQ;AAI/B,YAAQ,MAAM,OAAA;AAEd,QAAI;AACF,YAAM,uBAAuB,MAAM,UAAU,cAAc,wBAAwB;AACnF,aAAO,KAAK,qBAAqB;AAAA,IACnC,SAAS,MAAM;AACb,UAAI;AACF,eAAO,MAAM,wBAAwB,MAAM,UAAU,cAAc,wBAAwB;AAAA,MAC7F,SAAS,OAAO;AACd,eAAO,MAAM,gEAAgE;AAC7E,yBAAiB,KAAK;AACtB,cAAM,uBAAuB,MAAM,UAAU,cAAc,wBAAwB;AAAA,MACrF;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAA8B,IAAI,EAAE,MAAM,UAAU,cAAc,kBAAqC;AAErG,QAAM,2BAA2B,iBAAiB,wBAAwB,cAAc,IAAI;AAE5F,MAAI,OAAO,KAAM,MAAM,iBAAiB,IAAI,GAAI;AAC9C,WAAO,KAAK,yDAAyD;AACrE,UAAM,uBAAuB,MAAM,UAAU,cAAc,wBAAwB;AACnF,WAAO,KAAK,8CAA8C,IAAI,EAAE;AAAA,EAClE,OAAO;AACL,WAAO,MAAM,wBAAwB,MAAM,UAAU,cAAc,wBAAwB;AAAA,EAC7F;AACF;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sources":["../../../src/server/cli/run.ts"],"sourcesContent":["import { spawn } from \"node:child_process\";\nimport { readFileSync } from \"node:fs\";\nimport type { AddressInfo } from \"node:net\";\nimport * as path from \"node:path\";\nimport * as readline from \"node:readline\";\nimport type { SerializedLog } from \"@sentry/core\";\nimport { metrics } from \"@sentry/node\";\nimport { Searcher } from \"fast-fuzzy\";\nimport { uuidv7 } from \"uuidv7\";\nimport { SENTRY_CONTENT_TYPE } from \"../constants.ts\";\nimport { logger } from \"../logger.ts\";\nimport type { SentryLogEvent } from \"../parser/types.ts\";\nimport type { CLIHandlerOptions } from \"../types/cli.ts\";\nimport { detectDockerCompose, parseExplicitDockerCompose, prepareDockerComposeRun } from \"../utils/docker-compose.ts\";\nimport { getSpotlightURL, openInBrowser } from \"../utils/extras.ts\";\nimport { EventContainer, getBuffer } from \"../utils/index.ts\";\nimport tail, { type OnItemCallback } from \"./tail.ts\";\n\nconst SPOTLIGHT_VERSION = process.env.npm_package_version || \"unknown\";\n\n// Environment variable host configurations\nconst LOCALHOST_HOST = \"localhost\";\n\n/**\n * Detect if there's a package.json with runnable scripts\n */\nfunction detectPackageJson(): { scriptName: string; scriptCommand: string } | null {\n try {\n const scripts = JSON.parse(readFileSync(\"./package.json\", \"utf-8\")).scripts;\n const scriptName = [\"dev\", \"develop\", \"serve\", \"start\"].find(name => scripts[name]);\n if (!scriptName || !scripts[scriptName]) {\n return null;\n }\n return { scriptName, scriptCommand: scripts[scriptName] };\n } catch {\n // pass\n }\n return null;\n}\n\n/**\n * Prompt the user to choose between Docker Compose and package.json\n */\nasync function promptUserChoice(): Promise<\"docker\" | \"package\"> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise(resolve => {\n console.log(\"\\n⚠️ Both Docker Compose and package.json detected!\");\n console.log(\"\\nWhich would you like to use?\");\n console.log(\" 1) docker compose\");\n console.log(\" 2) package.json\");\n\n rl.question(\"Enter your choice (1 or 2): \", answer => {\n rl.close();\n const choice = answer.trim();\n const selected = choice === \"2\" ? \"package\" : \"docker\";\n logger.info(`Selected: ${selected === \"docker\" ? \"Docker compose\" : \"package.json\"}`);\n resolve(selected);\n });\n });\n}\n\nfunction createLogEnvelope(level: \"info\" | \"error\", body: string, timestamp: number): Buffer {\n const envelopeHeader = {\n sdk: {\n name: \"sentry.spotlight.stdio\",\n version: SPOTLIGHT_VERSION,\n },\n };\n\n const logItem: SerializedLog = {\n timestamp,\n level,\n body,\n attributes: {},\n };\n\n const logPayload: SentryLogEvent = {\n type: \"log\",\n event_id: uuidv7(),\n timestamp,\n items: [\n {\n ...logItem,\n id: uuidv7(),\n severity_number: level === \"error\" ? 17 : 9, // ERROR=17, INFO=9 per OpenTelemetry spec\n sdk: undefined,\n },\n ],\n };\n\n const payloadJson = JSON.stringify(logPayload);\n const payloadBuffer = Buffer.from(payloadJson, \"utf-8\");\n\n const itemHeader = {\n type: \"log\",\n length: payloadBuffer.length, // Use byte length, not string length\n item_count: 1,\n content_type: \"application/json\",\n };\n\n const parts = [JSON.stringify(envelopeHeader), JSON.stringify(itemHeader), payloadJson];\n\n return Buffer.from(`${parts.join(\"\\n\")}\\n`, \"utf-8\");\n}\n\nexport default async function run({\n port,\n cmdArgs,\n basePath,\n filesToServe,\n format,\n allowedOrigins,\n open,\n}: CLIHandlerOptions) {\n let relayStdioAsLogs = true;\n\n const fuzzySearcher = new Searcher([] as string[], {\n threshold: 0.8,\n ignoreCase: false,\n });\n\n const logChecker: OnItemCallback = (type, item, envelopeHeader) => {\n if (type !== \"log\") return true;\n\n const [, payload] = item;\n const logEvent = payload as SentryLogEvent;\n\n if (logEvent.items && logEvent.items.length > 0) {\n for (const logItem of logEvent.items) {\n // Check if this is a stdio log from Spotlight itself\n if (envelopeHeader.sdk?.name === \"sentry.spotlight.stdio\") {\n continue;\n }\n\n if (!relayStdioAsLogs) continue;\n\n const logBody = typeof logItem.body === \"string\" ? logItem.body : String(logItem.body);\n const trimmedBody = logBody.trim();\n\n if (trimmedBody) {\n const matches = fuzzySearcher.search(trimmedBody);\n if (matches.length > 0) {\n logger.debug(\"Detected Sentry logging in the process, disabling stdio relay\");\n relayStdioAsLogs = false;\n return false;\n }\n }\n }\n }\n\n return true;\n };\n\n const serverInstance = await tail({ port, cmdArgs: [], basePath, filesToServe, format, allowedOrigins }, logChecker);\n if (!serverInstance) {\n logger.error(\"Failed to start Spotlight sidecar server.\");\n logger.error(`The port ${port} might already be in use — most likely by another Spotlight instance.`);\n process.exit(1);\n }\n\n // We *MUST* have an instance address and a port here\n // as not having that indicates either the server did not start\n // or started in a weird manner (like over a unix socket)\n const actualServerPort = (serverInstance.address() as AddressInfo).port;\n const spotlightUrl = getSpotlightURL(actualServerPort, LOCALHOST_HOST);\n\n if (open) {\n openInBrowser(actualServerPort);\n }\n let shell = false;\n let stdin: string | undefined = undefined;\n const env = {\n ...process.env,\n SENTRY_SPOTLIGHT: spotlightUrl,\n // We need the one below for Next.js projects -- they only allow NEXT_PUBLIC_ prefixed env vars\n // on frontend code\n NEXT_PUBLIC_SENTRY_SPOTLIGHT: spotlightUrl,\n // This is not supported in all SDKs but worth adding\n // for the ones that support it\n SENTRY_TRACES_SAMPLE_RATE: \"1\",\n } as {\n PATH: string;\n SENTRY_SPOTLIGHT: string;\n NEXT_PUBLIC_SENTRY_SPOTLIGHT: string;\n SENTRY_TRACES_SAMPLE_RATE: string;\n [key: string]: string;\n };\n if (cmdArgs.length === 0) {\n const dockerCompose = detectDockerCompose();\n const packageJson = detectPackageJson();\n\n // If both Docker Compose and package.json are detected, ask the user which one to use\n if (dockerCompose && packageJson) {\n if (!process.stdin.isTTY) {\n logger.error(\"Both Docker Compose and package.json detected, but cannot prompt in non-interactive mode.\");\n logger.error(\"Please specify a command explicitly or run in an interactive terminal.\");\n process.exit(1);\n }\n const choice = await promptUserChoice();\n metrics.count(\"cli.run.prompt_choice\", 1, { attributes: { choice } });\n\n if (choice === \"docker\") {\n logger.info(\n `Detected Docker Compose project with ${dockerCompose.serviceNames.length} service(s): ${dockerCompose.serviceNames.join(\", \")}`,\n );\n metrics.count(\"cli.run.autodetect\", 1, { attributes: { type: \"docker-compose\" } });\n ({ cmdArgs, stdin } = prepareDockerComposeRun(dockerCompose, actualServerPort, env));\n } else {\n logger.info(`Using package.json script: ${packageJson.scriptName}`);\n metrics.count(\"cli.run.autodetect\", 1, { attributes: { type: \"package-json\" } });\n cmdArgs = [packageJson.scriptCommand];\n shell = true;\n env.PATH = path.resolve(\"./node_modules/.bin\") + path.delimiter + env.PATH;\n }\n } else if (dockerCompose) {\n logger.info(\n `Detected Docker Compose project with ${dockerCompose.serviceNames.length} service(s): ${dockerCompose.serviceNames.join(\", \")}`,\n );\n metrics.count(\"cli.run.autodetect\", 1, { attributes: { type: \"docker-compose\" } });\n ({ cmdArgs, stdin } = prepareDockerComposeRun(dockerCompose, actualServerPort, env));\n } else if (packageJson) {\n logger.info(`Using package.json script: ${packageJson.scriptName}`);\n metrics.count(\"cli.run.autodetect\", 1, { attributes: { type: \"package-json\" } });\n cmdArgs = [packageJson.scriptCommand];\n shell = true;\n env.PATH = path.resolve(\"./node_modules/.bin\") + path.delimiter + env.PATH;\n }\n } else {\n // Handle explicit docker compose commands (e.g., \"spotlight run docker compose up\")\n const explicitDockerConfig = parseExplicitDockerCompose(cmdArgs);\n if (explicitDockerConfig) {\n logger.info(\n `Detected explicit Docker Compose command with ${explicitDockerConfig.serviceNames.length} service(s): ${explicitDockerConfig.serviceNames.join(\", \")}`,\n );\n metrics.count(\"cli.run.docker_compose.explicit\", 1, {\n attributes: {\n services: explicitDockerConfig.serviceNames.length,\n subcommand: explicitDockerConfig.subcommandArgs.join(\" \"),\n },\n });\n ({ cmdArgs, stdin } = prepareDockerComposeRun(explicitDockerConfig, actualServerPort, env));\n }\n }\n if (cmdArgs.length === 0) {\n logger.error(\"Error: No command specified to run and could not infer the command automatically.\");\n process.exit(1);\n }\n const cmdStr = cmdArgs.join(\" \");\n logger.info(`Starting command: ${cmdStr}`);\n // When we have Docker Compose override YAML (for -f -), we need to pipe stdin\n // Otherwise, inherit stdin to relay user input to the downstream process\n const stdinMode: \"pipe\" | \"inherit\" = stdin ? \"pipe\" : \"inherit\";\n const runCmd = spawn(cmdArgs[0], cmdArgs.slice(1), {\n cwd: process.cwd(),\n env,\n shell,\n windowsVerbatimArguments: true,\n windowsHide: true,\n stdio: [stdinMode, \"pipe\", \"pipe\"],\n });\n\n const { stdout, stderr } = runCmd;\n if (!stdout || !stderr) {\n logger.error(\"Failed to create process streams\");\n process.exit(1);\n }\n\n // If our command has a stdin input _and_ we can send to stdin, write and close\n if (stdin) {\n if (!runCmd.stdin) {\n logger.error(\"Failed to pipe Docker Compose override: stdin is not available\");\n process.exit(1);\n }\n runCmd.stdin.write(stdin);\n runCmd.stdin.end();\n }\n\n const processLogLine = (line: string, level: \"info\" | \"error\") => {\n if (!relayStdioAsLogs) return;\n const trimmedLine = line.trim();\n if (!trimmedLine) return;\n\n fuzzySearcher.add(trimmedLine);\n\n const timestamp = Date.now() / 1000;\n const envelopeBuffer = createLogEnvelope(level, trimmedLine, timestamp);\n\n const container = new EventContainer(SENTRY_CONTENT_TYPE, envelopeBuffer);\n // Add to buffer - this will automatically trigger all subscribers\n // including the onEnvelope callback registered in tail()\n getBuffer().put(container);\n };\n\n let stdoutBuffer = \"\";\n let stderrBuffer = \"\";\n\n // Stream stdout as info-level logs\n stdout.on(\"data\", (data: Buffer) => {\n stdoutBuffer += data.toString();\n const lines = stdoutBuffer.split(\"\\n\");\n // Keep the last partial line in the buffer\n stdoutBuffer = lines.pop() || \"\";\n\n for (const line of lines) {\n processLogLine(line, \"info\");\n }\n });\n\n // Stream stderr as error-level logs\n stderr.on(\"data\", (data: Buffer) => {\n stderrBuffer += data.toString();\n const lines = stderrBuffer.split(\"\\n\");\n // Keep the last partial line in the buffer\n stderrBuffer = lines.pop() || \"\";\n\n for (const line of lines) {\n processLogLine(line, \"error\");\n }\n });\n\n runCmd.on(\"error\", err => {\n logger.error(`Failed to run ${cmdStr}:`);\n logger.error(err);\n process.exit(1);\n });\n\n runCmd.on(\"close\", code => {\n // Handle any remaining buffered lines\n if (stdoutBuffer.trim()) {\n processLogLine(stdoutBuffer, \"info\");\n }\n if (stderrBuffer.trim()) {\n processLogLine(stderrBuffer, \"error\");\n }\n\n if (!code) {\n logger.error(`${cmdStr} exited, terminating.`);\n } else {\n logger.error(`${cmdStr} exited with code ${code}.`);\n }\n process.exit(code);\n });\n const killRunCmd = () => {\n if (runCmd.killed) return;\n stdout.destroy();\n stderr.destroy();\n runCmd.kill();\n };\n runCmd.on(\"spawn\", () => {\n runCmd.removeAllListeners(\"spawn\");\n runCmd.removeAllListeners(\"error\");\n process.on(\"SIGINT\", killRunCmd);\n process.on(\"SIGTERM\", killRunCmd);\n process.on(\"beforeExit\", killRunCmd);\n });\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sources":["../../../src/server/cli/server.ts"],"sourcesContent":["import type { AddressInfo } from \"node:net\";\nimport { setupSpotlight } from \"../main.ts\";\nimport type { CLIHandlerOptions } from \"../types/cli.ts\";\nimport { openInBrowser } from \"../utils/extras.ts\";\n\nexport default async function server({ port, basePath, filesToServe, allowedOrigins, open }: CLIHandlerOptions) {\n const serverInstance = await setupSpotlight({\n port,\n basePath,\n filesToServe,\n isStandalone: true,\n allowedOrigins,\n });\n\n if (open) {\n // Use actual port from server instance, or fall back to requested port\n // (when serverInstance is undefined, a server is already running on the requested port)\n const actualPort = serverInstance ? (serverInstance.address() as AddressInfo).port : port;\n openInBrowser(actualPort);\n }\n\n return serverInstance;\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAKA,eAA8B,OAAO,EAAE,MAAM,UAAU,cAAc,gBAAgB,QAA2B;AAC9G,QAAM,iBAAiB,MAAM,eAAe;AAAA,IAC1C;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,EAAA,CACD;AAED,MAAI,MAAM;AAGR,UAAM,aAAa,iBAAkB,eAAe,QAAA,EAA0B,OAAO;AACrF,kBAAc,UAAU;AAAA,EAC1B;AAEA,SAAO;AACT;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tail.js","sources":["../../../src/server/cli/tail.ts"],"sourcesContent":["import type { ServerType } from \"@hono/node-server\";\nimport { captureException } from \"@sentry/core\";\nimport { metrics } from \"@sentry/node\";\nimport { EventSource } from \"eventsource\";\nimport { SENTRY_CONTENT_TYPE } from \"../constants.ts\";\nimport {\n type FormatterRegistry,\n type FormatterType,\n applyFormatter,\n humanFormatters,\n jsonFormatters,\n logfmtFormatters,\n mdFormatters,\n} from \"../formatters/index.ts\";\nimport { logger } from \"../logger.ts\";\nimport { setupSpotlight } from \"../main.ts\";\nimport type { ParsedEnvelope } from \"../parser/index.ts\";\nimport type { CLIHandlerOptions } from \"../types/cli.ts\";\nimport { getSpotlightURL } from \"../utils/extras.ts\";\nimport { getBuffer } from \"../utils/index.ts\";\n\nexport type OnItemCallback = (\n type: string,\n item: ParsedEnvelope[\"envelope\"][1][number],\n envelopeHeader: ParsedEnvelope[\"envelope\"][0],\n) => boolean;\nexport const NAME_TO_TYPE_MAPPING: Record<string, string[]> = Object.freeze({\n traces: [\"transaction\", \"span\"],\n // profiles: [\"profile\"],\n logs: [\"log\"],\n attachments: [\"attachment\"],\n errors: [\"event\"],\n // sessions: [\"session\"],\n // replays: [\"replay_video\"],\n // client_report\n});\n\nconst SUPPORTED_ENVELOPE_TYPES = new Set(Object.values(NAME_TO_TYPE_MAPPING).flat());\nexport const EVERYTHING_MAGIC_WORDS = new Set([\"everything\", \"all\", \"*\"]);\nexport const SUPPORTED_TAIL_ARGS = new Set([...Object.keys(NAME_TO_TYPE_MAPPING), ...EVERYTHING_MAGIC_WORDS]);\n\nconst FORMATTERS: Record<FormatterType, FormatterRegistry> = {\n md: mdFormatters,\n logfmt: logfmtFormatters,\n json: jsonFormatters,\n human: humanFormatters,\n};\n\nconst connectUpstream = async (port: number) =>\n new Promise<EventSource>((resolve, reject) => {\n const client = new EventSource(getSpotlightURL(port));\n client.onerror = reject;\n client.onopen = () => resolve(client);\n });\n\nexport default async function tail(\n { port, cmdArgs, basePath, filesToServe, format = \"logfmt\", allowedOrigins }: CLIHandlerOptions,\n onItem?: OnItemCallback,\n): Promise<ServerType | undefined> {\n const eventTypes = cmdArgs.length > 0 ? cmdArgs.map(arg => arg.toLowerCase()) : [\"everything\"];\n for (const eventType of eventTypes) {\n if (!SUPPORTED_TAIL_ARGS.has(eventType)) {\n logger.error(`Error: Unsupported argument \"${eventType}\".`);\n logger.error(`Supported arguments are: ${[...SUPPORTED_TAIL_ARGS].join(\", \")}`);\n process.exit(1);\n }\n }\n\n // Track which event types users tail\n for (const eventType of eventTypes) {\n metrics.count(\"cli.tail.event_type\", 1, { attributes: { type: eventType } });\n }\n\n const formatter = FORMATTERS[format];\n const types = eventTypes.some(type => EVERYTHING_MAGIC_WORDS.has(type))\n ? SUPPORTED_ENVELOPE_TYPES\n : new Set([...eventTypes.flatMap(type => NAME_TO_TYPE_MAPPING[type] || [])]);\n const onEnvelope: (envelope: ParsedEnvelope[\"envelope\"]) => void = envelope => {\n const [envelopeHeader, items] = envelope;\n const formatted: string[] = [];\n\n for (const item of items) {\n const [{ type }, payload] = item;\n\n if (!type || !types.has(type)) {\n // Skip if not a type we're interested in\n continue;\n }\n\n // Check if this event type is supported by the formatter\n if (!(type in formatter)) {\n continue;\n }\n\n if (onItem && !onItem(type, item, envelopeHeader)) {\n continue;\n }\n\n formatted.push(...applyFormatter(formatter, type as keyof FormatterRegistry, payload, envelopeHeader));\n }\n\n if (formatted.length > 0) {\n console.log(formatted.join(\"\\n\"));\n }\n };\n\n // try to connect to an already existing server first\n try {\n const client = await connectUpstream(port);\n client.addEventListener(SENTRY_CONTENT_TYPE, event => onEnvelope!(JSON.parse(event.data)));\n // Early return - don't start our own server if we can connect to an upstream one\n return undefined;\n } catch (err) {\n // if we fail, fine then we'll start our own\n if (err instanceof Error && !err.message?.includes(port.toString())) {\n captureException(err);\n logger.error(\"Error when trying to connect to upstream sidecar:\");\n logger.error(err);\n process.exit(1);\n }\n }\n\n const serverInstance = await setupSpotlight({ port, filesToServe, basePath, isStandalone: true, allowedOrigins });\n\n // Subscribe the onEnvelope callback to the message buffer\n // This ensures it gets called whenever any envelope is added to the buffer\n getBuffer().subscribe(container => {\n const parsedEnvelope = container.getParsedEnvelope();\n if (parsedEnvelope) {\n onEnvelope(parsedEnvelope.envelope);\n }\n });\n\n return serverInstance;\n}\n"],"names":["mdFormatters","logfmtFormatters","jsonFormatters","humanFormatters"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sources":["../../src/server/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { parseArgs } from \"node:util\";\nimport { metrics } from \"@sentry/node\";\nimport showHelp from \"./cli/help.ts\";\nimport mcp from \"./cli/mcp.ts\";\nimport run from \"./cli/run.ts\";\nimport server from \"./cli/server.ts\";\nimport tail from \"./cli/tail.ts\";\nimport { DEFAULT_PORT } from \"./constants.ts\";\nimport { AVAILABLE_FORMATTERS } from \"./formatters/types.ts\";\nimport type { FormatterType } from \"./formatters/types.ts\";\nimport { enableDebugLogging, logger } from \"./logger.ts\";\nimport type { CLIHandler, CLIHandlerOptions } from \"./types/cli.ts\";\n\n// When port is set to `0` for a server to listen on,\n// it tells the OS to find a random available port.\n// This can then be retrieved after the server starts.\nconst MAGIC_PORT_FOR_DYNAMIC_ASSIGNMENT = 0;\nconst PARSE_ARGS_CONFIG = {\n options: {\n port: {\n type: \"string\",\n short: \"p\",\n default: undefined,\n },\n debug: {\n type: \"boolean\",\n short: \"d\",\n default: false,\n },\n format: {\n type: \"string\",\n short: \"f\",\n default: \"human\",\n },\n \"allowed-origin\": {\n type: \"string\",\n short: \"A\",\n multiple: true,\n default: [] as string[],\n },\n // Deprecated -- use the positional `mcp` argument instead\n \"stdio-mcp\": {\n type: \"boolean\",\n default: false,\n },\n open: {\n type: \"boolean\",\n short: \"o\",\n default: false,\n },\n help: {\n type: \"boolean\",\n short: \"h\",\n default: false,\n },\n },\n allowPositionals: true,\n strict: true,\n} as const;\n\nexport type CLIArgs = {\n port: number;\n debug: boolean;\n help: boolean;\n open: boolean;\n format: FormatterType;\n cmd: string | undefined;\n cmdArgs: string[];\n allowedOrigins: string[];\n};\n\nexport function parseCLIArgs(): CLIArgs {\n const args = Array.from(process.argv).slice(2);\n const preParse = parseArgs({\n ...PARSE_ARGS_CONFIG,\n strict: false,\n tokens: true,\n });\n let cmdArgs: string[] | undefined = undefined;\n const runToken = preParse.tokens.find(token => token.kind === \"positional\" && token.value === \"run\");\n if (runToken) {\n const cutOff = preParse.tokens.find(token => token.index > runToken.index && token.kind === \"positional\");\n cmdArgs = cutOff ? args.splice(cutOff.index) : [];\n }\n const { values, positionals } = parseArgs({\n args,\n ...PARSE_ARGS_CONFIG,\n });\n\n // Handle legacy positional argument for port (backwards compatibility)\n const portInput = positionals.length === 1 && /^\\d{1,5}$/.test(positionals[0]) ? positionals.shift() : values.port;\n\n const port = portInput != null ? Number(portInput) : runToken ? MAGIC_PORT_FOR_DYNAMIC_ASSIGNMENT : DEFAULT_PORT;\n if (Number.isNaN(port)) {\n // Validate port number\n console.error(`Error: Invalid port number '${portInput}'`);\n console.error(\"Port must be a valid number between 1 and 65535\");\n process.exit(1);\n }\n\n if (port < 0 || port > 65535) {\n console.error(`Error: Port ${port} is out of valid range (1-65535 or 0 for automatic assignment)`);\n process.exit(1);\n }\n\n if (values[\"stdio-mcp\"]) {\n positionals.unshift(\"mcp\");\n console.warn(\"Warning: --stdio-mcp is deprecated. Please use the positional argument 'mcp' instead.\");\n }\n\n const format = values.format as string;\n if (!AVAILABLE_FORMATTERS.includes(format as FormatterType)) {\n console.error(`Error: Invalid format '${format}'`);\n console.error(`Valid formats are: ${AVAILABLE_FORMATTERS.join(\", \")}`);\n process.exit(1);\n }\n\n // Parse allowed origins - supports both repeatable flags and comma-separated values\n const allowedOriginInput = values[\"allowed-origin\"] as string[];\n const allowedOrigins = allowedOriginInput.flatMap(origin => origin.split(\",\").map(o => o.trim())).filter(Boolean);\n\n const result: CLIArgs = {\n debug: values.debug as boolean,\n help: values.help as boolean,\n open: values.open as boolean,\n format: format as FormatterType,\n port,\n cmd: positionals[0],\n cmdArgs: cmdArgs ?? positionals.slice(1),\n allowedOrigins,\n };\n\n return result;\n}\nexport const CLI_CMD_MAP = new Map<string | undefined, CLIHandler>([\n [\"help\", showHelp],\n [\"mcp\", mcp],\n [\"tail\", tail],\n [\"run\", run],\n [\"server\", server],\n [undefined, server],\n]);\n\nexport async function main({\n basePath,\n filesToServe,\n}: { basePath?: CLIHandlerOptions[\"basePath\"]; filesToServe?: CLIHandlerOptions[\"filesToServe\"] } = {}) {\n let { cmd, cmdArgs, help, port, debug, format, allowedOrigins, open } = parseCLIArgs();\n if (debug || process.env.SPOTLIGHT_DEBUG) {\n enableDebugLogging(true);\n }\n const spotlightVersion = process.env.npm_package_version || \"{unknown}\";\n logger.info(`Spotlight by Sentry - v${spotlightVersion}`);\n\n metrics.count(\"cli.invocation\", 1, {\n attributes: {\n command: cmd || \"server\",\n format,\n debug: String(debug),\n },\n });\n\n if (help) {\n cmd = \"help\";\n cmdArgs = [];\n }\n\n const handler = CLI_CMD_MAP.get(cmd) || showHelp;\n\n return await handler({ cmd, cmdArgs, port, help, debug, format, basePath, filesToServe, allowedOrigins, open });\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sources":["../../src/server/constants.ts"],"sourcesContent":["// Re-export shared constants\nexport { CONTEXT_LINES_ENDPOINT, RAW_TYPES, SENTRY_CONTENT_TYPE } from \"../shared/constants.ts\";\n\n// Spotlight server constants\nexport const DEFAULT_PORT = 8969;\nexport const SERVER_IDENTIFIER = \"spotlight-by-sentry\";\n"],"names":[],"mappings":";;;;;;;;;AAIO,MAAM,eAAe;AACrB,MAAM,oBAAoB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sources":["../../../../src/server/formatters/human/errors.ts"],"sourcesContent":["import type { Envelope } from \"@sentry/core\";\nimport type { SentryErrorEvent } from \"../../parser/index.ts\";\nimport { formatLogLine, inferEnvelopeSource } from \"./utils.ts\";\n\n/**\n * Format an error event with envelope headers for source inference\n */\nexport function formatError(event: SentryErrorEvent, envelopeHeader: Envelope[0]): string[] {\n const source = inferEnvelopeSource(envelopeHeader, event);\n\n const exception = event.exception?.values?.[0];\n const errorType = exception?.type || \"Error\";\n const errorValue = exception?.value || event.message || \"Unknown error\";\n\n let message = `${errorType}: ${errorValue}`;\n\n const frames = exception?.stacktrace?.frames;\n if (frames?.length) {\n const frame = frames.find((f: any) => f.in_app) || frames[frames.length - 1];\n if (frame) {\n if (frame.filename && frame.lineno) {\n const location = frame.colno\n ? `${frame.filename}:${frame.lineno}:${frame.colno}`\n : `${frame.filename}:${frame.lineno}`;\n message += ` [${location}]`;\n } else if (frame.filename) {\n message += ` [${frame.filename}]`;\n }\n\n if (frame.function && !message.includes(frame.function)) {\n message += ` [${frame.function}]`;\n }\n }\n }\n\n return [formatLogLine(event.timestamp, source, \"error\", message)];\n}\n"],"names":[],"mappings":";;;;;;;;;;AAOO,SAAS,YAAY,OAAyB,gBAAuC;AAC1F,QAAM,SAAS,oBAAoB,gBAAgB,KAAK;AAExD,QAAM,YAAY,MAAM,WAAW,SAAS,CAAC;AAC7C,QAAM,YAAY,WAAW,QAAQ;AACrC,QAAM,aAAa,WAAW,SAAS,MAAM,WAAW;AAExD,MAAI,UAAU,GAAG,SAAS,KAAK,UAAU;AAEzC,QAAM,SAAS,WAAW,YAAY;AACtC,MAAI,QAAQ,QAAQ;AAClB,UAAM,QAAQ,OAAO,KAAK,CAAC,MAAW,EAAE,MAAM,KAAK,OAAO,OAAO,SAAS,CAAC;AAC3E,QAAI,OAAO;AACT,UAAI,MAAM,YAAY,MAAM,QAAQ;AAClC,cAAM,WAAW,MAAM,QACnB,GAAG,MAAM,QAAQ,IAAI,MAAM,MAAM,IAAI,MAAM,KAAK,KAChD,GAAG,MAAM,QAAQ,IAAI,MAAM,MAAM;AACrC,mBAAW,KAAK,QAAQ;AAAA,MAC1B,WAAW,MAAM,UAAU;AACzB,mBAAW,KAAK,MAAM,QAAQ;AAAA,MAChC;AAEA,UAAI,MAAM,YAAY,CAAC,QAAQ,SAAS,MAAM,QAAQ,GAAG;AACvD,mBAAW,KAAK,MAAM,QAAQ;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,CAAC,cAAc,MAAM,WAAW,QAAQ,SAAS,OAAO,CAAC;AAClE;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/server/formatters/human/index.ts"],"sourcesContent":["import { isErrorEvent, isLogEvent, isTraceEvent } from \"../../parser/helpers.ts\";\nimport type { FormatterRegistry } from \"../types.ts\";\nimport { formatError } from \"./errors.ts\";\nimport { formatLog } from \"./logs.ts\";\nimport { formatTrace } from \"./traces.ts\";\n\nexport const formatters: FormatterRegistry = {\n event: { typeGuard: isErrorEvent, format: formatError },\n log: { typeGuard: isLogEvent, format: formatLog },\n transaction: { typeGuard: isTraceEvent, format: formatTrace },\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAMO,MAAM,aAAgC;AAAA,EAC3C,OAAO,EAAE,WAAW,cAAc,QAAQ,YAAA;AAAA,EAC1C,KAAK,EAAE,WAAW,YAAY,QAAQ,UAAA;AAAA,EACtC,aAAa,EAAE,WAAW,cAAc,QAAQ,YAAA;AAClD;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.js","sources":["../../../../src/server/formatters/human/logs.ts"],"sourcesContent":["import type { Envelope, SerializedLog } from \"@sentry/core\";\nimport type { SentryLogEvent } from \"../../parser/index.ts\";\nimport { type SourceType, formatLogLine, inferEnvelopeSource } from \"./utils.ts\";\n\n/**\n * Format a single log entry with source inference\n */\nfunction formatSingleLog(log: SerializedLog, source: SourceType): string {\n const level = log.level || \"log\";\n const message = log.body || \"\";\n\n const attrs: string[] = [];\n if (log.attributes) {\n for (const [key, attr] of Object.entries(log.attributes)) {\n if (!key.startsWith(\"sentry.\") && attr.value !== undefined && attr.value !== null) {\n attrs.push(`[${key}=${attr.value}]`);\n }\n }\n }\n\n const fullMessage = attrs.length > 0 ? `${message} ${attrs.join(\" \")}` : message;\n\n return formatLogLine(log.timestamp, source, level, fullMessage);\n}\n\n/**\n * Format a log event with envelope headers for source inference\n */\nexport function formatLog(event: SentryLogEvent, envelopeHeader: Envelope[0]): string[] {\n const source = inferEnvelopeSource(envelopeHeader, event);\n return event.items.map(log => formatSingleLog(log, source));\n}\n"],"names":[],"mappings":";;;;;;;;;;AAOA,SAAS,gBAAgB,KAAoB,QAA4B;AACvE,QAAM,QAAQ,IAAI,SAAS;AAC3B,QAAM,UAAU,IAAI,QAAQ;AAE5B,QAAM,QAAkB,CAAA;AACxB,MAAI,IAAI,YAAY;AAClB,eAAW,CAAC,KAAK,IAAI,KAAK,OAAO,QAAQ,IAAI,UAAU,GAAG;AACxD,UAAI,CAAC,IAAI,WAAW,SAAS,KAAK,KAAK,UAAU,UAAa,KAAK,UAAU,MAAM;AACjF,cAAM,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,MAAM,SAAS,IAAI,GAAG,OAAO,IAAI,MAAM,KAAK,GAAG,CAAC,KAAK;AAEzE,SAAO,cAAc,IAAI,WAAW,QAAQ,OAAO,WAAW;AAChE;AAKO,SAAS,UAAU,OAAuB,gBAAuC;AACtF,QAAM,SAAS,oBAAoB,gBAAgB,KAAK;AACxD,SAAO,MAAM,MAAM,IAAI,SAAO,gBAAgB,KAAK,MAAM,CAAC;AAC5D;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"traces.js","sources":["../../../../src/server/formatters/human/traces.ts"],"sourcesContent":["import type { Envelope } from \"@sentry/core\";\nimport type { SentryTransactionEvent } from \"../../parser/index.ts\";\nimport { getDuration } from \"../utils.ts\";\nimport { formatLogLine, inferEnvelopeSource } from \"./utils.ts\";\n\n/**\n * Format a trace/transaction event with envelope headers for source inference\n */\nexport function formatTrace(event: SentryTransactionEvent, envelopeHeader: Envelope[0]): string[] {\n const source = inferEnvelopeSource(envelopeHeader, event);\n\n const transaction = event.transaction;\n const trace = event.contexts?.trace;\n\n let message = transaction || trace?.description || \"Transaction\";\n\n const op = trace?.op;\n if (op && op !== \"default\" && op !== \"unknown\") {\n message = `[${op}] ${message}`;\n }\n\n const duration = getDuration(event.timestamp, event.start_timestamp);\n if (duration !== undefined) {\n message += ` [${Math.round(duration)}ms]`;\n }\n\n const status = trace?.status;\n if (status && status !== \"ok\") {\n message += ` [${status}]`;\n }\n\n const spanCount = event.spans?.length;\n if (spanCount && spanCount > 0) {\n message += ` [${spanCount} span${spanCount === 1 ? \"\" : \"s\"}]`;\n }\n\n return [formatLogLine(event.timestamp, source, \"trace\", message)];\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAQO,SAAS,YAAY,OAA+B,gBAAuC;AAChG,QAAM,SAAS,oBAAoB,gBAAgB,KAAK;AAExD,QAAM,cAAc,MAAM;AAC1B,QAAM,QAAQ,MAAM,UAAU;AAE9B,MAAI,UAAU,eAAe,OAAO,eAAe;AAEnD,QAAM,KAAK,OAAO;AAClB,MAAI,MAAM,OAAO,aAAa,OAAO,WAAW;AAC9C,cAAU,IAAI,EAAE,KAAK,OAAO;AAAA,EAC9B;AAEA,QAAM,WAAW,YAAY,MAAM,WAAW,MAAM,eAAe;AACnE,MAAI,aAAa,QAAW;AAC1B,eAAW,KAAK,KAAK,MAAM,QAAQ,CAAC;AAAA,EACtC;AAEA,QAAM,SAAS,OAAO;AACtB,MAAI,UAAU,WAAW,MAAM;AAC7B,eAAW,KAAK,MAAM;AAAA,EACxB;AAEA,QAAM,YAAY,MAAM,OAAO;AAC/B,MAAI,aAAa,YAAY,GAAG;AAC9B,eAAW,KAAK,SAAS,QAAQ,cAAc,IAAI,KAAK,GAAG;AAAA,EAC7D;AAEA,SAAO,CAAC,cAAc,MAAM,WAAW,QAAQ,SAAS,OAAO,CAAC;AAClE;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/server/formatters/human/utils.ts"],"sourcesContent":["import type { Envelope } from \"@sentry/core\";\nimport chalk from \"chalk\";\nimport { parseBrowserFromUserAgent } from \"../../routes/stream/userAgent.ts\";\n\nexport const SOURCE_TYPES = [\"browser\", \"mobile\", \"server\"] as const;\nexport type SourceType = (typeof SOURCE_TYPES)[number];\n\nexport const LOG_LEVELS = [\"error\", \"warning\", \"log\", \"info\", \"trace\", \"debug\"] as const;\nexport type LogLevel = (typeof LOG_LEVELS)[number];\n\n/**\n * Sentinel theme terminal colors\n * Based on https://github.com/getsentry/sentinel\n */\nconst SENTINEL = {\n red: \"#fe4144\",\n green: \"#83da90\",\n yellow: \"#FDB81B\",\n blue: \"#226DFC\",\n magenta: \"#FF45A8\",\n white: \"#f9f8f9\",\n muted: \"#898294\",\n} as const;\n\nexport const SOURCE_COLORS: Record<SourceType, (text: string) => string> = {\n browser: chalk.hex(SENTINEL.yellow),\n mobile: chalk.hex(SENTINEL.blue),\n server: chalk.hex(SENTINEL.magenta),\n};\n\nexport const LOG_LEVEL_COLORS: Record<LogLevel, (text: string) => string> = {\n error: chalk.red.bold,\n warning: chalk.hex(\"#FFA500\"), // Orange\n log: chalk.white,\n info: chalk.cyan,\n trace: chalk.green,\n debug: chalk.dim,\n};\n\n/**\n * Helper to detect if a User-Agent string is from a browser\n */\nfunction isBrowserUserAgent(userAgent: string): boolean {\n const parsed = parseBrowserFromUserAgent(userAgent);\n return (\n parsed !== \"unknown\" &&\n (parsed.includes(\"Chrome\") || parsed.includes(\"Firefox\") || parsed.includes(\"Safari\") || parsed.includes(\"Edge\"))\n );\n}\n\n/**\n * Infer the source of an envelope as browser, mobile, or server using multiple signals\n * Priority order:\n * 1. Sender User-Agent (from HTTP request header)\n * 2. Platform & Runtime tags (from event payload)\n * 3. SDK name (fallback)\n *\n * Rules based on https://release-registry.services.sentry.io/sdks\n */\nexport function inferEnvelopeSource(envelopeHeader: Envelope[0], event?: any): SourceType {\n const sdkName = envelopeHeader?.sdk?.name || \"\";\n\n // 1. Mobile check (unchanged - already reliable from SDK name)\n // Mobile: Native mobile platforms and frameworks\n if (\n sdkName.includes(\"cocoa\") ||\n sdkName.includes(\"android\") ||\n sdkName.includes(\"react-native\") ||\n sdkName.includes(\"flutter\") ||\n sdkName.includes(\"capacitor\") ||\n sdkName.includes(\"cordova\") ||\n sdkName.includes(\"xamarin\") ||\n sdkName.includes(\"maui\") ||\n sdkName.includes(\"unity\") ||\n sdkName.includes(\"kotlin.kmp\")\n ) {\n return \"mobile\";\n }\n\n // 2. Sender User-Agent check\n const senderUserAgent = (envelopeHeader as any).__spotlight_sender_user_agent;\n if (senderUserAgent && typeof senderUserAgent === \"string\") {\n if (isBrowserUserAgent(senderUserAgent)) {\n return \"browser\";\n }\n // Server SDKs send server UAs like \"Node.js/*\", \"Python-urllib/*\", etc.\n // If we have a non-browser UA, we continue to further checks\n }\n\n // 3. Runtime tags check\n if (event?.tags?.runtime === \"browser\") {\n return \"browser\";\n }\n\n // 4. Platform & server-specific signals\n if (event?.contexts?.runtime?.name) {\n // Runtime context (node, CPython, etc.) indicates server\n return \"server\";\n }\n\n if (event?.server_name) {\n // server_name is a server-specific field\n return \"server\";\n }\n\n const platform = event?.platform;\n if (\n platform === \"node\" ||\n platform === \"python\" ||\n platform === \"ruby\" ||\n platform === \"php\" ||\n platform === \"java\" ||\n platform === \"go\" ||\n platform === \"rust\" ||\n platform === \"perl\" ||\n platform === \"elixir\" ||\n platform === \"csharp\" ||\n platform === \"dotnet\"\n ) {\n return \"server\";\n }\n\n // 5. SDK name check (existing logic as fallback)\n // Browser: JavaScript frameworks/libraries (excluding server/native runtimes and meta-frameworks)\n if (\n sdkName.startsWith(\"sentry.javascript.\") &&\n !sdkName.includes(\"node\") &&\n !sdkName.includes(\"bun\") &&\n !sdkName.includes(\"deno\") &&\n !sdkName.includes(\"electron\") &&\n !sdkName.includes(\"serverless\") &&\n !sdkName.includes(\"cloudflare\") &&\n !sdkName.includes(\"vercel-edge\") &&\n !sdkName.includes(\"wasm\") &&\n !sdkName.includes(\"opentelemetry\") &&\n !sdkName.includes(\"nextjs\") &&\n !sdkName.includes(\"remix\") &&\n !sdkName.includes(\"gatsby\") &&\n !sdkName.includes(\"astro\") &&\n !sdkName.includes(\"nuxt\") &&\n !sdkName.includes(\"sveltekit\") &&\n !sdkName.includes(\"solidstart\") &&\n !sdkName.includes(\"nestjs\") &&\n !sdkName.includes(\"tanstackstart\")\n ) {\n return \"browser\";\n }\n\n // Special case: Blazor WebAssembly runs in browser\n if (sdkName.includes(\"blazor.webassembly\")) {\n return \"browser\";\n }\n\n // Server: Everything else (node, python, ruby, go, php, java, dotnet, etc.)\n return \"server\";\n}\n\n/**\n * Format timestamp as local time HH:MM:SS\n */\nexport function formatLocalTime(timestamp?: number | string): string {\n let date: Date;\n\n if (!timestamp) {\n date = new Date();\n } else if (typeof timestamp === \"string\") {\n // Handle ISO string format (e.g., \"2023-11-22T16:23:50.406684Z\")\n date = new Date(timestamp);\n } else {\n // Handle Unix timestamp\n date = new Date(timestamp * 1000);\n }\n\n if (Number.isNaN(date.getTime())) {\n // placeholder with same width as valid timestamp for alignment in the logs\n return \"??:??:??\";\n }\n\n const hours = date.getHours().toString().padStart(2, \"0\");\n const minutes = date.getMinutes().toString().padStart(2, \"0\");\n const seconds = date.getSeconds().toString().padStart(2, \"0\");\n return `${hours}:${minutes}:${seconds}`;\n}\n\n/**\n * Padding helper for vertical alignment\n */\nexport function padLabel(label: string, width: number): string {\n return label.padEnd(width);\n}\n\n// Constants for consistent padding (adding brackets)\nexport const SOURCE_WIDTH = Math.max(...SOURCE_TYPES.map(s => `[${s.toUpperCase()}]`.length));\nexport const TYPE_WIDTH = Math.max(...LOG_LEVELS.map(l => `[${l.toUpperCase()}]`.length));\n\n/**\n * Colorize time with dim gray\n */\nexport function colorizeTime(time: string): string {\n return chalk.gray(time);\n}\n\n/**\n * Colorize source based on envelope source\n */\nexport function colorizeSource(source: string): string {\n const bracketed = `[${source}]`;\n const padded = padLabel(bracketed, SOURCE_WIDTH);\n const colorFn = SOURCE_COLORS[source as SourceType] || chalk.white;\n return colorFn(padded);\n}\n\n/**\n * Colorize event type\n */\nexport function colorizeType(type: string): string {\n const bracketed = `[${type.toUpperCase()}]`;\n const padded = padLabel(bracketed, TYPE_WIDTH);\n const colorFn = LOG_LEVEL_COLORS[type.toLowerCase() as LogLevel] || chalk.white;\n return colorFn(padded);\n}\n\n/**\n * Format a complete log line with proper alignment and colors\n */\nexport function formatLogLine(\n timestamp: number | string | undefined,\n source: SourceType,\n type: string,\n message: string,\n): string {\n const time = colorizeTime(formatLocalTime(timestamp));\n const coloredSource = colorizeSource(source);\n const coloredType = colorizeType(type);\n\n return `${time} ${coloredType} ${coloredSource} ${message}`;\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/server/formatters/index.ts"],"sourcesContent":["import type { Envelope, EnvelopeItem } from \"@sentry/core\";\nimport { logger } from \"../logger.ts\";\nimport type { SentryEvent } from \"../parser/types.ts\";\nimport type { FormatterRegistry } from \"./types.ts\";\n\nexport * from \"./types.ts\";\n\nexport { formatters as mdFormatters } from \"./md/index.ts\";\nexport { formatters as logfmtFormatters } from \"./logfmt/index.ts\";\nexport { formatters as jsonFormatters } from \"./json/index.ts\";\nexport { formatters as humanFormatters } from \"./human/index.ts\";\n\n/**\n * Generic function to get a formatter from registry and apply it\n */\nexport function applyFormatter<K extends keyof FormatterRegistry>(\n registry: FormatterRegistry,\n eventType: K,\n payload: EnvelopeItem[1],\n envelopeHeader: Envelope[0],\n): string[] {\n const entry = registry[eventType];\n const event = payload as SentryEvent;\n if (!entry.typeGuard(event)) {\n logger.warn(`Skipping event: type guard failed for ${eventType} (event.type=${(event as any).type})`);\n return [];\n }\n // Type assertion needed because TypeScript can't narrow the union type properly\n return entry.format(event as any, envelopeHeader);\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAeO,SAAS,eACd,UACA,WACA,SACA,gBACU;AACV,QAAM,QAAQ,SAAS,SAAS;AAChC,QAAM,QAAQ;AACd,MAAI,CAAC,MAAM,UAAU,KAAK,GAAG;AAC3B,WAAO,KAAK,yCAAyC,SAAS,gBAAiB,MAAc,IAAI,GAAG;AACpG,WAAO,CAAA;AAAA,EACT;AAEA,SAAO,MAAM,OAAO,OAAc,cAAc;AAClD;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sources":["../../../../src/server/formatters/json/errors.ts"],"sourcesContent":["import type { Envelope } from \"@sentry/core\";\nimport type { SentryErrorEvent } from \"../../parser/index.ts\";\nimport { buildErrorData } from \"../shared/data-builders.ts\";\n\nexport function formatError(event: SentryErrorEvent, _envelopeHeader: Envelope[0]): string[] {\n return [JSON.stringify(buildErrorData(event))];\n}\n"],"names":[],"mappings":";;;;;;;;;;AAIO,SAAS,YAAY,OAAyB,iBAAwC;AAC3F,SAAO,CAAC,KAAK,UAAU,eAAe,KAAK,CAAC,CAAC;AAC/C;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/server/formatters/json/index.ts"],"sourcesContent":["import { isErrorEvent, isLogEvent, isTraceEvent } from \"../../parser/helpers.ts\";\nimport type { FormatterRegistry } from \"../types.ts\";\nimport { formatError } from \"./errors.ts\";\nimport { formatLog } from \"./logs.ts\";\nimport { formatTrace } from \"./traces.ts\";\n\nexport const formatters: FormatterRegistry = {\n event: { typeGuard: isErrorEvent, format: formatError },\n log: { typeGuard: isLogEvent, format: formatLog },\n transaction: { typeGuard: isTraceEvent, format: formatTrace },\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAMO,MAAM,aAAgC;AAAA,EAC3C,OAAO,EAAE,WAAW,cAAc,QAAQ,YAAA;AAAA,EAC1C,KAAK,EAAE,WAAW,YAAY,QAAQ,UAAA;AAAA,EACtC,aAAa,EAAE,WAAW,cAAc,QAAQ,YAAA;AAClD;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.js","sources":["../../../../src/server/formatters/json/logs.ts"],"sourcesContent":["import type { Envelope, SerializedLog } from \"@sentry/core\";\nimport type { SentryLogEvent } from \"../../parser/index.ts\";\nimport { buildLogData } from \"../shared/data-builders.ts\";\n\nfunction formatSingleLog(log: SerializedLog): string {\n return JSON.stringify(buildLogData(log));\n}\n\nexport function formatLog(event: SentryLogEvent, _envelopeHeader: Envelope[0]): string[] {\n return event.items.map(formatSingleLog);\n}\n"],"names":[],"mappings":";;;;;;;;;;AAIA,SAAS,gBAAgB,KAA4B;AACnD,SAAO,KAAK,UAAU,aAAa,GAAG,CAAC;AACzC;AAEO,SAAS,UAAU,OAAuB,iBAAwC;AACvF,SAAO,MAAM,MAAM,IAAI,eAAe;AACxC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"traces.js","sources":["../../../../src/server/formatters/json/traces.ts"],"sourcesContent":["import type { Envelope } from \"@sentry/core\";\nimport type { SentryTransactionEvent } from \"../../parser/index.ts\";\nimport { buildTraceData } from \"../shared/data-builders.ts\";\n\nexport function formatTrace(event: SentryTransactionEvent, _envelopeHeader: Envelope[0]): string[] {\n return [JSON.stringify(buildTraceData(event))];\n}\n"],"names":[],"mappings":";;;;;;;;;;AAIO,SAAS,YAAY,OAA+B,iBAAwC;AACjG,SAAO,CAAC,KAAK,UAAU,eAAe,KAAK,CAAC,CAAC;AAC/C;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sources":["../../../../src/server/formatters/logfmt/errors.ts"],"sourcesContent":["import type { Envelope } from \"@sentry/core\";\nimport logfmt from \"logfmt\";\nimport type { SentryErrorEvent } from \"../../parser/index.ts\";\nimport { buildErrorData } from \"../shared/data-builders.ts\";\n\nexport function formatError(event: SentryErrorEvent, _envelopeHeader: Envelope[0]): string[] {\n return [logfmt.stringify(buildErrorData(event))];\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAKO,SAAS,YAAY,OAAyB,iBAAwC;AAC3F,SAAO,CAAC,OAAO,UAAU,eAAe,KAAK,CAAC,CAAC;AACjD;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/server/formatters/logfmt/index.ts"],"sourcesContent":["import { isErrorEvent, isLogEvent, isTraceEvent } from \"../../parser/helpers.ts\";\nimport type { FormatterRegistry } from \"../types.ts\";\nimport { formatError } from \"./errors.ts\";\nimport { formatLog } from \"./logs.ts\";\nimport { formatTrace } from \"./traces.ts\";\n\nexport const formatters: FormatterRegistry = {\n event: { typeGuard: isErrorEvent, format: formatError },\n log: { typeGuard: isLogEvent, format: formatLog },\n transaction: { typeGuard: isTraceEvent, format: formatTrace },\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAMO,MAAM,aAAgC;AAAA,EAC3C,OAAO,EAAE,WAAW,cAAc,QAAQ,YAAA;AAAA,EAC1C,KAAK,EAAE,WAAW,YAAY,QAAQ,UAAA;AAAA,EACtC,aAAa,EAAE,WAAW,cAAc,QAAQ,YAAA;AAClD;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.js","sources":["../../../../src/server/formatters/logfmt/logs.ts"],"sourcesContent":["import type { Envelope, SerializedLog } from \"@sentry/core\";\nimport logfmt from \"logfmt\";\nimport type { SentryLogEvent } from \"../../parser/index.ts\";\nimport { formatTimestamp, mapFields } from \"../utils.ts\";\n\nfunction formatSingleLog(log: SerializedLog): string {\n const data: Record<string, any> = {\n timestamp: formatTimestamp(log.timestamp),\n level: log.level,\n type: \"log\",\n };\n\n mapFields(log, data, {\n message: \"body\",\n trace_id: \"trace_id\",\n severity_number: \"severity_number\",\n });\n\n if (log.attributes) {\n for (const [key, attr] of Object.entries(log.attributes)) {\n data[key] = attr.value;\n }\n }\n\n return logfmt.stringify(data);\n}\n\nexport function formatLog(event: SentryLogEvent, _envelopeHeader: Envelope[0]): string[] {\n return event.items.map(formatSingleLog);\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAKA,SAAS,gBAAgB,KAA4B;AACnD,QAAM,OAA4B;AAAA,IAChC,WAAW,gBAAgB,IAAI,SAAS;AAAA,IACxC,OAAO,IAAI;AAAA,IACX,MAAM;AAAA,EAAA;AAGR,YAAU,KAAK,MAAM;AAAA,IACnB,SAAS;AAAA,IACT,UAAU;AAAA,IACV,iBAAiB;AAAA,EAAA,CAClB;AAED,MAAI,IAAI,YAAY;AAClB,eAAW,CAAC,KAAK,IAAI,KAAK,OAAO,QAAQ,IAAI,UAAU,GAAG;AACxD,WAAK,GAAG,IAAI,KAAK;AAAA,IACnB;AAAA,EACF;AAEA,SAAO,OAAO,UAAU,IAAI;AAC9B;AAEO,SAAS,UAAU,OAAuB,iBAAwC;AACvF,SAAO,MAAM,MAAM,IAAI,eAAe;AACxC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"traces.js","sources":["../../../../src/server/formatters/logfmt/traces.ts"],"sourcesContent":["import type { Envelope } from \"@sentry/core\";\nimport logfmt from \"logfmt\";\nimport type { SentryTransactionEvent } from \"../../parser/index.ts\";\nimport { buildTraceData } from \"../shared/data-builders.ts\";\n\nexport function formatTrace(event: SentryTransactionEvent, _envelopeHeader: Envelope[0]): string[] {\n return [logfmt.stringify(buildTraceData(event))];\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAKO,SAAS,YAAY,OAA+B,iBAAwC;AACjG,SAAO,CAAC,OAAO,UAAU,eAAe,KAAK,CAAC,CAAC;AACjD;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sources":["../../../../src/server/formatters/md/errors.ts"],"sourcesContent":["import type { Envelope, EnvelopeItem } from \"@sentry/core\";\nimport type { z } from \"zod/v3\";\nimport { type SentryErrorEvent, type SentryEvent, isErrorEvent } from \"../../parser/index.ts\";\nimport type { EventContainer } from \"../../utils/index.ts\";\nimport type { ErrorEventSchema } from \"../schema.ts\";\nimport { formatTimestamp } from \"../utils.ts\";\nimport { formatEventOutput } from \"./event.ts\";\n\nexport function formatErrorEnvelope(container: EventContainer) {\n const processedEnvelope = container.getParsedEnvelope();\n\n const {\n envelope: [envelopeHeader, items],\n } = processedEnvelope;\n\n const formatted: string[] = [];\n for (const item of items) {\n const [{ type }, payload] = item;\n\n if (type === \"event\" && isErrorEvent(payload as SentryEvent)) {\n formatted.push(...formatError(payload, envelopeHeader));\n }\n }\n\n return formatted;\n}\n\nexport function processErrorEvent(event: any): z.infer<typeof ErrorEventSchema> {\n const entries: z.infer<typeof ErrorEventSchema>[\"entries\"] = [];\n\n if (event.exception) {\n entries.push({\n type: \"exception\",\n data: event.exception,\n });\n }\n\n if (event.request) {\n entries.push({\n type: \"request\",\n data: event.request,\n });\n }\n\n if (event.breadcrumbs) {\n entries.push({\n type: \"breadcrumbs\",\n data: event.breadcrumbs,\n });\n }\n\n if (event.spans) {\n entries.push({\n type: \"spans\",\n data: event.spans,\n });\n }\n\n if (event.threads) {\n entries.push({\n type: \"threads\",\n data: event.threads,\n });\n }\n\n const message = typeof event.message === \"string\" ? event.message : (event.message?.formatted ?? \"\");\n\n return {\n message,\n id: event.event_id ?? \"\",\n type: \"error\" as const,\n culprit: event.culprit ?? null,\n tags: Object.entries(event.tags ?? {}).map(([key, value]) => ({\n key,\n value: String(value),\n })),\n dateCreated: formatTimestamp(event.timestamp),\n title: message,\n entries,\n contexts: event.contexts as any,\n platform: event.platform,\n };\n}\n\n/**\n * Format an error event to markdown string\n */\nexport function formatError(payload: EnvelopeItem[1], _envelopeHeader: Envelope[0]): string[] {\n const event = payload as SentryErrorEvent;\n return [formatEventOutput(processErrorEvent(event))];\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAQO,SAAS,oBAAoB,WAA2B;AAC7D,QAAM,oBAAoB,UAAU,kBAAA;AAEpC,QAAM;AAAA,IACJ,UAAU,CAAC,gBAAgB,KAAK;AAAA,EAAA,IAC9B;AAEJ,QAAM,YAAsB,CAAA;AAC5B,aAAW,QAAQ,OAAO;AACxB,UAAM,CAAC,EAAE,QAAQ,OAAO,IAAI;AAE5B,QAAI,SAAS,WAAW,aAAa,OAAsB,GAAG;AAC5D,gBAAU,KAAK,GAAG,YAAY,OAAuB,CAAC;AAAA,IACxD;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,kBAAkB,OAA8C;AAC9E,QAAM,UAAuD,CAAA;AAE7D,MAAI,MAAM,WAAW;AACnB,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,MAAM,MAAM;AAAA,IAAA,CACb;AAAA,EACH;AAEA,MAAI,MAAM,SAAS;AACjB,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,MAAM,MAAM;AAAA,IAAA,CACb;AAAA,EACH;AAEA,MAAI,MAAM,aAAa;AACrB,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,MAAM,MAAM;AAAA,IAAA,CACb;AAAA,EACH;AAEA,MAAI,MAAM,OAAO;AACf,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,MAAM,MAAM;AAAA,IAAA,CACb;AAAA,EACH;AAEA,MAAI,MAAM,SAAS;AACjB,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,MAAM,MAAM;AAAA,IAAA,CACb;AAAA,EACH;AAEA,QAAM,UAAU,OAAO,MAAM,YAAY,WAAW,MAAM,UAAW,MAAM,SAAS,aAAa;AAEjG,SAAO;AAAA,IACL;AAAA,IACA,IAAI,MAAM,YAAY;AAAA,IACtB,MAAM;AAAA,IACN,SAAS,MAAM,WAAW;AAAA,IAC1B,MAAM,OAAO,QAAQ,MAAM,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;AAAA,MAC5D;AAAA,MACA,OAAO,OAAO,KAAK;AAAA,IAAA,EACnB;AAAA,IACF,aAAa,gBAAgB,MAAM,SAAS;AAAA,IAC5C,OAAO;AAAA,IACP;AAAA,IACA,UAAU,MAAM;AAAA,IAChB,UAAU,MAAM;AAAA,EAAA;AAEpB;AAKO,SAAS,YAAY,SAA0B,iBAAwC;AAC5F,QAAM,QAAQ;AACd,SAAO,CAAC,kBAAkB,kBAAkB,KAAK,CAAC,CAAC;AACrD;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"event.js","sources":["../../../../src/server/formatters/md/event.ts"],"sourcesContent":["/**\n * LLM response formatting utilities for Sentry data.\n *\n * Converts Sentry API responses into structured markdown format optimized\n * for LLM consumption. Handles stacktraces, event details, issue summaries,\n * and contextual information with consistent formatting patterns.\n */\nimport type { z } from \"zod/v3\";\nimport type {\n ErrorEntrySchema,\n EventSchema,\n FrameInterface,\n MessageEntrySchema,\n RequestEntrySchema,\n ThreadsEntrySchema,\n} from \"../schema.ts\";\n\nexport type Event = z.infer<typeof EventSchema>;\n\n// Language detection mappings\nconst LANGUAGE_EXTENSIONS: Record<string, string> = {\n \".java\": \"java\",\n \".py\": \"python\",\n \".js\": \"javascript\",\n \".jsx\": \"javascript\",\n \".ts\": \"javascript\",\n \".tsx\": \"javascript\",\n \".rb\": \"ruby\",\n \".php\": \"php\",\n};\n\nconst LANGUAGE_MODULE_PATTERNS: Array<[RegExp, string]> = [[/^(java\\.|com\\.|org\\.)/, \"java\"]];\n\n/**\n * Detects the programming language of a stack frame based on the file extension.\n * Falls back to the platform parameter if no filename is available or extension is unrecognized.\n *\n * @param frame - The stack frame containing file and location information\n * @param platform - Optional platform hint to use as fallback\n * @returns The detected language or platform fallback or \"unknown\"\n */\nfunction detectLanguage(frame: z.infer<typeof FrameInterface>, platform?: string | null): string {\n // Check filename extensions\n if (frame.filename) {\n const ext = frame.filename.toLowerCase().match(/\\.[^.]+$/)?.[0];\n if (ext && LANGUAGE_EXTENSIONS[ext]) {\n return LANGUAGE_EXTENSIONS[ext];\n }\n }\n\n // Check module patterns\n if (frame.module) {\n for (const [pattern, language] of LANGUAGE_MODULE_PATTERNS) {\n if (pattern.test(frame.module)) {\n return language;\n }\n }\n }\n\n // Fallback to platform or unknown\n return platform || \"unknown\";\n}\n\n/**\n * Formats a stack frame into a language-specific string representation.\n * Different languages have different conventions for displaying stack traces.\n *\n * @param frame - The stack frame to format\n * @param frameIndex - Optional frame index for languages that display frame numbers\n * @param platform - Optional platform hint for language detection fallback\n * @returns Formatted stack frame string\n */\nfunction formatFrameHeader(frame: z.infer<typeof FrameInterface>, frameIndex?: number, platform?: string | null) {\n const language = detectLanguage(frame, platform);\n\n switch (language) {\n case \"java\": {\n // at com.example.ClassName.methodName(FileName.java:123)\n const className = frame.module || \"UnknownClass\";\n const method = frame.function || \"<unknown>\";\n const source = frame.filename || \"Unknown Source\";\n const location = frame.lineNo ? `:${frame.lineNo}` : \"\";\n return `at ${className}.${method}(${source}${location})`;\n }\n\n case \"python\": {\n // File \"/path/to/file.py\", line 42, in function_name\n const file = frame.filename || frame.absPath || frame.module || \"<unknown>\";\n const func = frame.function || \"<module>\";\n const line = frame.lineNo ? `, line ${frame.lineNo}` : \"\";\n return ` File \"${file}\"${line}, in ${func}`;\n }\n\n case \"javascript\": {\n // Original compact format: filename:line:col (function)\n // This preserves backward compatibility\n return `${[frame.filename, frame.lineNo, frame.colNo]\n .filter(i => !!i)\n .join(\":\")}${frame.function ? ` (${frame.function})` : \"\"}`;\n }\n\n case \"ruby\": {\n // from /path/to/file.rb:42:in `method_name'\n const file = frame.filename || frame.module || \"<unknown>\";\n const func = frame.function ? ` \\`${frame.function}\\`` : \"\";\n const line = frame.lineNo ? `:${frame.lineNo}:in` : \"\";\n return ` from ${file}${line}${func}`;\n }\n\n case \"php\": {\n // #0 /path/to/file.php(42): functionName()\n const file = frame.filename || \"<unknown>\";\n const line = frame.lineNo ? `(${frame.lineNo})` : \"\";\n const func = frame.function || \"<unknown>\";\n const prefix = frameIndex !== undefined ? `#${frameIndex} ` : \"\";\n return `${prefix}${file}${line}: ${func}()`;\n }\n\n default: {\n // Generic format for unknown languages\n const func = frame.function || \"<unknown>\";\n const location = frame.filename || frame.module || \"<unknown>\";\n const line = frame.lineNo ? `:${frame.lineNo}` : \"\";\n const col = frame.colNo != null ? `:${frame.colNo}` : \"\";\n return ` at ${func} (${location}${line}${col})`;\n }\n }\n}\n\n/**\n * Formats a Sentry event into a structured markdown output.\n * Includes error messages, stack traces, request info, and contextual data.\n *\n * @param event - The Sentry event to format\n * @returns Formatted markdown string\n */\nexport function formatEventOutput(event: Event) {\n let output = \"\";\n\n // Look for the primary error information\n const messageEntry = event.entries.find(e => e.type === \"message\");\n const exceptionEntry = event.entries.find(e => e.type === \"exception\");\n const threadsEntry = event.entries.find(e => e.type === \"threads\");\n const requestEntry = event.entries.find(e => e.type === \"request\");\n\n // Error message (if present)\n if (messageEntry) {\n output += formatMessageInterfaceOutput(event, messageEntry.data as z.infer<typeof MessageEntrySchema>);\n }\n\n // Stack trace (from exception or threads)\n if (exceptionEntry) {\n output += formatExceptionInterfaceOutput(event, exceptionEntry.data as z.infer<typeof ErrorEntrySchema>);\n } else if (threadsEntry) {\n output += formatThreadsInterfaceOutput(event, threadsEntry.data as z.infer<typeof ThreadsEntrySchema>);\n }\n\n // Request info (if HTTP error)\n if (requestEntry) {\n output += formatRequestInterfaceOutput(event, requestEntry.data as z.infer<typeof RequestEntrySchema>);\n }\n\n output += formatTags(event.tags);\n output += formatContexts(event.contexts);\n return output;\n}\n\n/**\n * Extracts the context line matching the frame's line number for inline display.\n * This is used in the full stacktrace view to show the actual line of code\n * that caused the error inline with the stack frame.\n *\n * @param frame - The stack frame containing context lines\n * @returns The line of code at the frame's line number, or empty string if not available\n */\nfunction renderInlineContext(frame: z.infer<typeof FrameInterface>): string {\n if (!frame.context?.length || !frame.lineNo) {\n return \"\";\n }\n\n const contextLine = frame.context.find(([lineNo]) => lineNo === frame.lineNo);\n return contextLine ? `\\n${contextLine[1]}` : \"\";\n}\n\n/**\n * Renders an enhanced view of a stack frame with context lines and variables.\n * Used for the \"Most Relevant Frame\" section to provide detailed information\n * about the most relevant application frame where the error occurred.\n *\n * @param frame - The stack frame to render with enhanced information\n * @param event - The Sentry event containing platform information for language detection\n * @returns Formatted string with frame header, context lines, and variables table\n */\nfunction renderEnhancedFrame(frame: z.infer<typeof FrameInterface>, event: Event): string {\n const parts: string[] = [];\n\n parts.push(\"**Most Relevant Frame:**\");\n parts.push(\"─────────────────────\");\n parts.push(formatFrameHeader(frame, undefined, event.platform));\n\n // Add context lines if available\n if (frame.context?.length) {\n const contextLines = renderContextLines(frame);\n if (contextLines) {\n parts.push(\"\");\n parts.push(contextLines);\n }\n }\n\n // Add variables table if available\n if (frame.vars && Object.keys(frame.vars).length > 0) {\n parts.push(\"\");\n parts.push(renderVariablesTable(frame.vars));\n }\n\n return parts.join(\"\\n\");\n}\n\nfunction formatExceptionInterfaceOutput(event: Event, data: z.infer<typeof ErrorEntrySchema>) {\n const parts: string[] = [];\n\n // Handle both single exception (value) and chained exceptions (values)\n const exceptions = data.values || (data.value ? [data.value] : []);\n\n if (exceptions.length === 0) {\n return \"\";\n }\n\n // For chained exceptions, they are typically ordered from innermost to outermost\n // We'll render them in reverse order (outermost first) to match how they occurred\n const isChained = exceptions.length > 1;\n\n // Create a copy before reversing to avoid mutating the original array\n [...exceptions].reverse().forEach((exception, index) => {\n if (!exception) return;\n\n // Add language-specific chain indicator for multiple exceptions\n if (isChained && index > 0) {\n parts.push(\"\");\n parts.push(getExceptionChainMessage(event.platform || null, index, exceptions.length));\n parts.push(\"\");\n }\n\n // Use the actual exception type and value as the heading\n const exceptionTitle = `${exception.type}${exception.value ? `: ${exception.value}` : \"\"}`;\n\n parts.push(index === 0 ? \"### Error\" : `### ${exceptionTitle}`);\n parts.push(\"\");\n\n // Add the error details in a code block for the first exception\n // to maintain backward compatibility\n if (index === 0) {\n parts.push(\"```\");\n parts.push(exceptionTitle);\n parts.push(\"```\");\n parts.push(\"\");\n }\n\n if (!exception.stacktrace || !exception.stacktrace.frames) {\n parts.push(\"**Stacktrace:**\");\n parts.push(\"```\");\n parts.push(\"No stacktrace available\");\n parts.push(\"```\");\n return;\n }\n\n const frames = exception.stacktrace.frames;\n\n // Only show enhanced frame for the first (outermost) exception to avoid overwhelming output\n if (index === 0) {\n const firstInAppFrame = findFirstInAppFrame(frames);\n if (firstInAppFrame && (firstInAppFrame.context?.length || firstInAppFrame.vars)) {\n parts.push(renderEnhancedFrame(firstInAppFrame, event));\n parts.push(\"\");\n parts.push(\"**Full Stacktrace:**\");\n parts.push(\"────────────────\");\n } else {\n parts.push(\"**Stacktrace:**\");\n }\n } else {\n parts.push(\"**Stacktrace:**\");\n }\n\n parts.push(\"```\");\n parts.push(\n frames\n .map(frame => {\n const header = formatFrameHeader(frame, undefined, event.platform);\n const context = renderInlineContext(frame);\n return `${header}${context}`;\n })\n .join(\"\\n\"),\n );\n parts.push(\"```\");\n });\n\n parts.push(\"\");\n parts.push(\"\");\n\n return parts.join(\"\\n\");\n}\n\n/**\n * Get the appropriate exception chain message based on the platform\n */\nfunction getExceptionChainMessage(platform: string | null, index: number, _totalExceptions: number): string {\n // Default message for unknown platforms\n const defaultMessage = \"**During handling of the above exception, another exception occurred:**\";\n\n if (!platform) {\n return defaultMessage;\n }\n\n switch (platform.toLowerCase()) {\n case \"python\":\n // Python has two distinct messages, but without additional metadata\n // we default to the implicit chaining message\n return \"**During handling of the above exception, another exception occurred:**\";\n\n case \"java\":\n return \"**Caused by:**\";\n\n case \"csharp\":\n case \"dotnet\":\n return \"**---> Inner Exception:**\";\n\n case \"ruby\":\n return \"**Caused by:**\";\n\n case \"go\":\n return \"**Wrapped error:**\";\n\n case \"rust\":\n return `**Caused by (${index}):**`;\n\n default:\n return defaultMessage;\n }\n}\n\nfunction formatRequestInterfaceOutput(_event: Event, data: z.infer<typeof RequestEntrySchema>) {\n if (!data.method || !data.url) {\n return \"\";\n }\n return `### HTTP Request\\n\\n**Method:** ${data.method}\\n**URL:** ${data.url}\\n\\n`;\n}\n\nfunction formatMessageInterfaceOutput(_event: Event, data: z.infer<typeof MessageEntrySchema>) {\n if (!data.formatted && !data.message) {\n return \"\";\n }\n const message = data.formatted || data.message || \"\";\n return `### Error\\n\\n${\"```\"}\\n${message}\\n${\"```\"}\\n\\n`;\n}\n\nfunction formatThreadsInterfaceOutput(event: Event, data: z.infer<typeof ThreadsEntrySchema>) {\n if (!data.values || data.values.length === 0) {\n return \"\";\n }\n\n // Find the crashed thread only\n const crashedThread = data.values.find(t => t.crashed);\n\n if (!crashedThread?.stacktrace?.frames) {\n return \"\";\n }\n\n const parts: string[] = [];\n\n // Include thread name if available\n if (crashedThread.name) {\n parts.push(`**Thread** (${crashedThread.name})`);\n parts.push(\"\");\n }\n\n const frames = crashedThread.stacktrace.frames;\n\n // Find and format the first in-app frame with enhanced view\n const firstInAppFrame = findFirstInAppFrame(frames);\n if (firstInAppFrame && (firstInAppFrame.context?.length || firstInAppFrame.vars)) {\n parts.push(renderEnhancedFrame(firstInAppFrame, event));\n parts.push(\"\");\n parts.push(\"**Full Stacktrace:**\");\n parts.push(\"────────────────\");\n } else {\n parts.push(\"**Stacktrace:**\");\n }\n\n parts.push(\"```\");\n parts.push(\n frames\n .map(frame => {\n const header = formatFrameHeader(frame, undefined, event.platform);\n const context = renderInlineContext(frame);\n return `${header}${context}`;\n })\n .join(\"\\n\"),\n );\n parts.push(\"```\");\n parts.push(\"\");\n\n return parts.join(\"\\n\");\n}\n\n/**\n * Renders surrounding source code context for a stack frame.\n * Shows a window of code lines around the error line with visual indicators.\n *\n * @param frame - The stack frame containing context lines\n * @param contextSize - Number of lines to show before and after the error line (default: 3)\n * @returns Formatted context lines with line numbers and arrow indicator for the error line\n */\nfunction renderContextLines(frame: z.infer<typeof FrameInterface>, contextSize = 3): string {\n if (!frame.context || frame.context.length === 0 || !frame.lineNo) {\n return \"\";\n }\n\n const lines: string[] = [];\n const errorLine = frame.lineNo;\n const maxLineNoWidth = Math.max(...frame.context.map(([lineNo]) => lineNo.toString().length));\n\n for (const [lineNo, code] of frame.context) {\n const isErrorLine = lineNo === errorLine;\n const lineNoStr = lineNo.toString().padStart(maxLineNoWidth, \" \");\n\n if (Math.abs(lineNo - errorLine) <= contextSize) {\n if (isErrorLine) {\n lines.push(` → ${lineNoStr} │ ${code}`);\n } else {\n lines.push(` ${lineNoStr} │ ${code}`);\n }\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Formats a variable value for display in the variables table.\n * Handles different types appropriately and safely, converting complex objects\n * to readable representations and handling edge cases like circular references.\n *\n * @param value - The variable value to format (can be any type)\n * @param maxLength - Maximum length for stringified objects/arrays (default: 80)\n * @returns markdown string representation of the value\n */\nfunction formatVariableValue(value: unknown, maxLength = 80): string {\n try {\n if (typeof value === \"string\") {\n return `\"${value}\"`;\n }\n if (value === null) {\n return \"null\";\n }\n if (value === undefined) {\n return \"undefined\";\n }\n if (typeof value === \"object\") {\n const stringified = JSON.stringify(value);\n if (stringified.length > maxLength) {\n // Leave room for \", ...]\" or \", ...}\"\n const truncateAt = maxLength - 6;\n let truncated = stringified.substring(0, truncateAt);\n\n // Find the last complete element by looking for the last comma\n const lastComma = truncated.lastIndexOf(\",\");\n if (lastComma > 0) {\n truncated = truncated.substring(0, lastComma);\n }\n\n // Add the appropriate ending\n if (Array.isArray(value)) {\n return `${truncated}, ...]`;\n }\n return `${truncated}, ...}`;\n }\n return stringified;\n }\n return String(value);\n } catch {\n // Handle circular references or other stringify errors\n return `<${typeof value}>`;\n }\n}\n\n/**\n * Renders a table of local variables in a tree-like format.\n * Uses box-drawing characters to create a visual hierarchy of variables\n * and their values at the point where the error occurred.\n *\n * @param vars - Object containing variable names as keys and their values\n * @returns Formatted variables table with tree-style prefix characters\n */\nfunction renderVariablesTable(vars: Record<string, unknown>): string {\n const entries = Object.entries(vars);\n if (entries.length === 0) {\n return \"\";\n }\n\n const lines: string[] = [\"Local Variables:\"];\n const lastIndex = entries.length - 1;\n\n entries.forEach(([key, value], index) => {\n const prefix = index === lastIndex ? \"└─\" : \"├─\";\n const valueStr = formatVariableValue(value);\n lines.push(`${prefix} ${key}: ${valueStr}`);\n });\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Finds the first application frame (in_app) in a stack trace.\n * Searches from the bottom of the stack (oldest frame) to find the first\n * frame that belongs to the user's application code rather than libraries.\n *\n * @param frames - Array of stack frames, typically in reverse chronological order\n * @returns The first in-app frame found, or undefined if none exist\n */\nfunction findFirstInAppFrame(frames: z.infer<typeof FrameInterface>[]): z.infer<typeof FrameInterface> | undefined {\n // Frames are usually in reverse order (most recent first)\n // We want the first in-app frame from the bottom\n for (let i = frames.length - 1; i >= 0; i--) {\n if (frames[i].inApp === true) {\n return frames[i];\n }\n }\n return undefined;\n}\n\nfunction formatTags(tags: z.infer<typeof EventSchema>[\"tags\"]) {\n if (!tags || tags.length === 0) {\n return \"\";\n }\n return `### Tags\\n\\n${tags.map(tag => `**${tag.key}**: ${tag.value}`).join(\"\\n\")}\\n\\n`;\n}\n\nfunction formatContexts(contexts: z.infer<typeof EventSchema>[\"contexts\"]) {\n if (!contexts || Object.keys(contexts).length === 0) {\n return \"\";\n }\n return `### Additional Context\\n\\nThese are additional context provided by the user when they're instrumenting their application.\\n\\n${Object.entries(\n contexts,\n )\n .map(\n ([name, data]) =>\n `**${name}**\\n${Object.entries(data)\n .filter(([key, _]) => key !== \"type\")\n .map(([key, value]) => {\n return `${key}: ${JSON.stringify(value, undefined, 2)}`;\n })\n .join(\"\\n\")}`,\n )\n .join(\"\\n\\n\")}\\n\\n`;\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/server/formatters/md/index.ts"],"sourcesContent":["import { isErrorEvent, isLogEvent, isTraceEvent } from \"../../parser/helpers.ts\";\nimport type { FormatterRegistry } from \"../types.ts\";\nimport { formatError } from \"./errors.ts\";\nimport { formatLog } from \"./logs.ts\";\nimport { formatTrace } from \"./traces.ts\";\n\nexport const formatters: FormatterRegistry = {\n event: { typeGuard: isErrorEvent, format: formatError },\n log: { typeGuard: isLogEvent, format: formatLog },\n transaction: { typeGuard: isTraceEvent, format: formatTrace },\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAMO,MAAM,aAAgC;AAAA,EAC3C,OAAO,EAAE,WAAW,cAAc,QAAQ,YAAA;AAAA,EAC1C,KAAK,EAAE,WAAW,YAAY,QAAQ,UAAA;AAAA,EACtC,aAAa,EAAE,WAAW,cAAc,QAAQ,YAAA;AAClD;"}