railwatch 0.1.3 → 0.2.0.pre1

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 (303) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +231 -0
  3. data/README.md +10 -0
  4. data/app/channels/railwatch/environment_channel.rb +28 -0
  5. data/app/controllers/concerns/railwatch/telemetry_identity.rb +25 -0
  6. data/app/controllers/railwatch/alerts_controller.rb +48 -0
  7. data/app/controllers/railwatch/anomaly_rules_controller.rb +31 -0
  8. data/app/controllers/railwatch/attachments_controller.rb +22 -0
  9. data/app/controllers/railwatch/beacon_controller.rb +67 -7
  10. data/app/controllers/railwatch/broadcasts_controller.rb +15 -0
  11. data/app/controllers/railwatch/cache_events_controller.rb +30 -0
  12. data/app/controllers/railwatch/commands_controller.rb +16 -0
  13. data/app/controllers/railwatch/comments_controller.rb +11 -0
  14. data/app/controllers/railwatch/dashboard_controller.rb +69 -0
  15. data/app/controllers/railwatch/deploys_controller.rb +34 -0
  16. data/app/controllers/railwatch/deprecations_controller.rb +54 -0
  17. data/app/controllers/railwatch/environment_scoped.rb +99 -0
  18. data/app/controllers/railwatch/exceptions_controller.rb +53 -0
  19. data/app/controllers/railwatch/executions_controller.rb +13 -0
  20. data/app/controllers/railwatch/issues_controller.rb +258 -0
  21. data/app/controllers/railwatch/jobs_controller.rb +63 -0
  22. data/app/controllers/railwatch/llm_calls_controller.rb +124 -0
  23. data/app/controllers/railwatch/logs_controller.rb +40 -0
  24. data/app/controllers/railwatch/mails_controller.rb +19 -0
  25. data/app/controllers/railwatch/notifications_controller.rb +11 -0
  26. data/app/controllers/railwatch/outgoing_requests_controller.rb +19 -0
  27. data/app/controllers/railwatch/overview_controller.rb +38 -0
  28. data/app/controllers/railwatch/people_controller.rb +25 -0
  29. data/app/controllers/railwatch/processes_controller.rb +33 -0
  30. data/app/controllers/railwatch/profiles_controller.rb +50 -0
  31. data/app/controllers/railwatch/queries_controller.rb +59 -0
  32. data/app/controllers/railwatch/releases_controller.rb +75 -0
  33. data/app/controllers/railwatch/requests_controller.rb +55 -0
  34. data/app/controllers/railwatch/saved_views_controller.rb +53 -0
  35. data/app/controllers/railwatch/scheduled_tasks_controller.rb +45 -0
  36. data/app/controllers/railwatch/spans_controller.rb +47 -0
  37. data/app/controllers/railwatch/storage_ops_controller.rb +15 -0
  38. data/app/controllers/railwatch/tenants_controller.rb +44 -0
  39. data/app/controllers/railwatch/thresholds_controller.rb +40 -0
  40. data/app/controllers/railwatch/traces_controller.rb +72 -0
  41. data/app/controllers/railwatch/transactions_controller.rb +21 -0
  42. data/app/controllers/railwatch/view_renders_controller.rb +28 -0
  43. data/app/controllers/railwatch/visits_controller.rb +53 -0
  44. data/app/helpers/railwatch/assets_helper.rb +52 -0
  45. data/app/jobs/railwatch/anomaly_scan_job.rb +11 -0
  46. data/app/jobs/railwatch/application_job.rb +7 -0
  47. data/app/jobs/railwatch/auto_resolve_issues_job.rb +19 -0
  48. data/app/jobs/railwatch/check_scheduled_tasks_job.rb +113 -0
  49. data/app/jobs/railwatch/detect_anomalies_job.rb +171 -0
  50. data/app/jobs/railwatch/detect_performance_issues_job.rb +85 -0
  51. data/app/jobs/railwatch/group_exceptions_job.rb +91 -0
  52. data/app/jobs/railwatch/optimize_telemetry_job.rb +23 -0
  53. data/app/jobs/railwatch/performance_scan_job.rb +11 -0
  54. data/app/jobs/railwatch/prune_telemetry_job.rb +110 -0
  55. data/app/jobs/railwatch/release_health_rollup_job.rb +64 -0
  56. data/app/jobs/railwatch/rollup_catchup_job.rb +21 -0
  57. data/app/jobs/railwatch/rollup_job.rb +130 -0
  58. data/app/jobs/railwatch/scheduled_task_scan_job.rb +11 -0
  59. data/app/models/concerns/railwatch/detection_snapshotting.rb +20 -0
  60. data/app/models/railwatch/alert.rb +229 -0
  61. data/app/models/railwatch/alert_rule.rb +121 -0
  62. data/app/models/railwatch/anomaly_rule.rb +33 -0
  63. data/app/models/railwatch/application.rb +44 -0
  64. data/app/models/railwatch/application_record.rb +33 -0
  65. data/app/models/railwatch/comment.rb +36 -0
  66. data/app/models/railwatch/deploy.rb +67 -0
  67. data/app/models/railwatch/environment.rb +54 -0
  68. data/app/models/railwatch/execution_presenter.rb +185 -0
  69. data/app/models/railwatch/filter_query.rb +143 -0
  70. data/app/models/railwatch/followup_receipt.rb +27 -0
  71. data/app/models/railwatch/ingest/batch.rb +305 -0
  72. data/app/models/railwatch/ingest/mapper.rb +575 -0
  73. data/app/models/railwatch/ingest/payload.rb +96 -0
  74. data/app/models/railwatch/ingest/rollup_absorber.rb +170 -0
  75. data/app/models/railwatch/ingest/writer.rb +137 -0
  76. data/app/models/railwatch/issue.rb +277 -0
  77. data/app/models/railwatch/issue_activity.rb +23 -0
  78. data/app/models/railwatch/issue_detection_presenter.rb +309 -0
  79. data/app/models/railwatch/issue_detection_snapshot.rb +77 -0
  80. data/app/models/railwatch/maintenance_task.rb +53 -0
  81. data/app/models/railwatch/saved_view.rb +63 -0
  82. data/app/models/railwatch/telemetry/aggregations.rb +116 -0
  83. data/app/models/railwatch/telemetry/attachment.rb +31 -0
  84. data/app/models/railwatch/telemetry/bounded_gzip.rb +101 -0
  85. data/app/models/railwatch/telemetry/broadcast.rb +13 -0
  86. data/app/models/railwatch/telemetry/cache_event.rb +16 -0
  87. data/app/models/railwatch/telemetry/child.rb +53 -0
  88. data/app/models/railwatch/telemetry/cursor_page.rb +99 -0
  89. data/app/models/railwatch/telemetry/deprecation.rb +13 -0
  90. data/app/models/railwatch/telemetry/enqueued_job.rb +13 -0
  91. data/app/models/railwatch/telemetry/exception.rb +21 -0
  92. data/app/models/railwatch/telemetry/execution.rb +71 -0
  93. data/app/models/railwatch/telemetry/health_sample.rb +72 -0
  94. data/app/models/railwatch/telemetry/ingest_batch.rb +31 -0
  95. data/app/models/railwatch/telemetry/llm_call.rb +37 -0
  96. data/app/models/railwatch/telemetry/log.rb +85 -0
  97. data/app/models/railwatch/telemetry/mail.rb +13 -0
  98. data/app/models/railwatch/telemetry/n_plus_one.rb +92 -0
  99. data/app/models/railwatch/telemetry/notification.rb +13 -0
  100. data/app/models/railwatch/telemetry/outgoing_request.rb +13 -0
  101. data/app/models/railwatch/telemetry/person.rb +50 -0
  102. data/app/models/railwatch/telemetry/process.rb +10 -0
  103. data/app/models/railwatch/telemetry/profile.rb +37 -0
  104. data/app/models/railwatch/telemetry/query.rb +50 -0
  105. data/app/models/railwatch/telemetry/query_shape.rb +45 -0
  106. data/app/models/railwatch/telemetry/release_health.rb +63 -0
  107. data/app/models/railwatch/telemetry/rollup.rb +78 -0
  108. data/app/models/railwatch/telemetry/session.rb +24 -0
  109. data/app/models/railwatch/telemetry/span.rb +19 -0
  110. data/app/models/railwatch/telemetry/storage_op.rb +13 -0
  111. data/app/models/railwatch/telemetry/tenant.rb +221 -0
  112. data/app/models/railwatch/telemetry/transaction.rb +13 -0
  113. data/app/models/railwatch/telemetry/view_render.rb +13 -0
  114. data/app/models/railwatch/telemetry/visit.rb +24 -0
  115. data/app/models/railwatch/telemetry_record.rb +57 -0
  116. data/app/models/railwatch/threshold.rb +29 -0
  117. data/app/models/railwatch/user.rb +47 -0
  118. data/app/models/railwatch/viewer.rb +13 -0
  119. data/app/views/layouts/railwatch/dashboard.html.erb +25 -0
  120. data/config/routes.rb +59 -0
  121. data/db/railwatch_migrate/20260916000000_create_railwatch_tables.rb +151 -0
  122. data/db/railwatch_migrate/20260917000000_create_railwatch_maintenance_tasks.rb +18 -0
  123. data/db/railwatch_migrate/20260917120000_create_railwatch_followup_receipts.rb +20 -0
  124. data/db/railwatch_telemetry_migrate/20260903000001_create_telemetry.rb +481 -0
  125. data/db/railwatch_telemetry_migrate/20260903000002_rename_tenant_to_app_tenant.rb +14 -0
  126. data/db/railwatch_telemetry_migrate/20260903000003_add_statement_count_to_transactions.rb +9 -0
  127. data/db/railwatch_telemetry_migrate/20260903000004_add_role_and_channel.rb +10 -0
  128. data/db/railwatch_telemetry_migrate/20260903000005_add_locals_to_exceptions.rb +9 -0
  129. data/db/railwatch_telemetry_migrate/20260903000006_add_spans_health_vitals_and_fts.rb +82 -0
  130. data/db/railwatch_telemetry_migrate/20260903000007_rename_span_attributes_to_payload.rb +10 -0
  131. data/db/railwatch_telemetry_migrate/20260903000008_add_profiles_and_attachments.rb +60 -0
  132. data/db/railwatch_telemetry_migrate/20260903000009_add_truncated_to_attachments.rb +9 -0
  133. data/db/railwatch_telemetry_migrate/20260903000010_create_sessions_and_release_health.rb +51 -0
  134. data/db/railwatch_telemetry_migrate/20260903000011_add_fingerprint_to_exceptions.rb +11 -0
  135. data/db/railwatch_telemetry_migrate/20260904000012_add_failed_to_broadcasts.rb +10 -0
  136. data/db/railwatch_telemetry_migrate/20260904010000_add_filter_cursor_indexes.rb +37 -0
  137. data/db/railwatch_telemetry_migrate/20260904020000_add_n_plus_ones_execution_id_index.rb +11 -0
  138. data/db/railwatch_telemetry_migrate/20260904120000_create_query_shapes.rb +15 -0
  139. data/db/railwatch_telemetry_migrate/20260906120000_add_backpressure_factor_to_ingest_batches.rb +9 -0
  140. data/db/railwatch_telemetry_migrate/20260907000000_rename_lantern_version_on_processes.rb +10 -0
  141. data/db/railwatch_telemetry_migrate/20260913000000_rename_nightrail_version_on_processes.rb +9 -0
  142. data/db/railwatch_telemetry_migrate/20260914000000_drop_orphan_durable_ingest_tables.rb +18 -0
  143. data/db/railwatch_telemetry_migrate/20260914010000_drop_orphan_durable_ingest_columns.rb +25 -0
  144. data/db/railwatch_telemetry_migrate/20260915000000_create_llm_calls.rb +55 -0
  145. data/db/railwatch_telemetry_migrate/20260915120000_add_detail_to_llm_calls.rb +21 -0
  146. data/db/railwatch_telemetry_migrate/20260915200000_add_explained_index_to_queries.rb +16 -0
  147. data/db/railwatch_telemetry_migrate/20260915210000_add_slowest_index_to_queries.rb +18 -0
  148. data/db/railwatch_telemetry_migrate/20260917010000_add_batch_ledger_to_ingest_batches.rb +16 -0
  149. data/docs/configuration.md +26 -0
  150. data/docs/embedded.md +342 -0
  151. data/docs/getting-started.md +5 -0
  152. data/docs/records.md +16 -1
  153. data/lib/generators/railwatch/install/install_generator.rb +222 -1
  154. data/lib/generators/railwatch/install/templates/{initializer.rb → initializer.rb.tt} +39 -0
  155. data/lib/generators/railwatch/install/templates/post-deploy +8 -0
  156. data/lib/puma/plugin/railwatch.rb +170 -0
  157. data/lib/railwatch/authentication.rb +83 -0
  158. data/lib/railwatch/configuration.rb +134 -3
  159. data/lib/railwatch/dashboard_assets.rb +45 -0
  160. data/lib/railwatch/embedded.rb +51 -0
  161. data/lib/railwatch/engine.rb +89 -1
  162. data/lib/railwatch/ingest_request_body_limit.rb +10 -0
  163. data/lib/railwatch/json_compat.rb +60 -0
  164. data/lib/railwatch/maintenance.rb +183 -0
  165. data/lib/railwatch/patches/runner_command.rb +21 -1
  166. data/lib/railwatch/record.rb +33 -8
  167. data/lib/railwatch/reporter.rb +16 -0
  168. data/lib/railwatch/subscribers/llm.rb +149 -4
  169. data/lib/railwatch/subscribers/process_info.rb +2 -1
  170. data/lib/railwatch/transport/local.rb +78 -0
  171. data/lib/railwatch/transport/socket.rb +183 -0
  172. data/lib/railwatch/version.rb +1 -1
  173. data/lib/railwatch/writer.rb +370 -0
  174. data/lib/railwatch.rb +38 -1
  175. data/lib/tasks/railwatch_tasks.rake +128 -0
  176. data/public/railwatch/assets/CommitMono-Bold-D6h61ieg.woff2 +0 -0
  177. data/public/railwatch/assets/CommitMono-Regular-zr8w7Obm.woff2 +0 -0
  178. data/public/railwatch/assets/Roboto-Black-auA4GeOK.woff2 +0 -0
  179. data/public/railwatch/assets/Roboto-Bold-CJLnO8j1.woff2 +0 -0
  180. data/public/railwatch/assets/Roboto-Medium-Cm2bwKpj.woff2 +0 -0
  181. data/public/railwatch/assets/Roboto-Regular-Chaq1-PV.woff2 +0 -0
  182. data/public/railwatch/assets/app-layout-yh-sPWgK.js +1 -0
  183. data/public/railwatch/assets/app-wordmark-nbjkzxwQ.js +1 -0
  184. data/public/railwatch/assets/appearance-CDuRvQTB.js +1 -0
  185. data/public/railwatch/assets/application-C_kpBdnf.css +1 -0
  186. data/public/railwatch/assets/arrow-up-DVtOGdVA.js +1 -0
  187. data/public/railwatch/assets/auth-layout-TCwPpS1K.js +1 -0
  188. data/public/railwatch/assets/badge-Daw4Hvr8.js +1 -0
  189. data/public/railwatch/assets/braces-DhFbHPsz.js +1 -0
  190. data/public/railwatch/assets/card-BX_3HXcJ.js +1 -0
  191. data/public/railwatch/assets/chart-B14-N9g7.js +39 -0
  192. data/public/railwatch/assets/chart-hover-Vy52H4uD.js +1 -0
  193. data/public/railwatch/assets/chart-panel-Cb4S_ej_.js +1 -0
  194. data/public/railwatch/assets/checkbox-D3aRSsBj.js +1 -0
  195. data/public/railwatch/assets/code-KvW8k7Jr.js +1 -0
  196. data/public/railwatch/assets/copy-DaQMJWoT.js +1 -0
  197. data/public/railwatch/assets/copy-block-BKFGd11J.js +1 -0
  198. data/public/railwatch/assets/copy-id-Djks1fXB.js +1 -0
  199. data/public/railwatch/assets/cursor-load-more-BXV0f1D_.js +1 -0
  200. data/public/railwatch/assets/data-table-iv1bdF6u.js +1 -0
  201. data/public/railwatch/assets/edit-BZc_Iawe.js +1 -0
  202. data/public/railwatch/assets/edit-DMKUF8Zi.js +8 -0
  203. data/public/railwatch/assets/edit-__9yJlO3.js +1 -0
  204. data/public/railwatch/assets/empty-state-6j_0AaQQ.js +1 -0
  205. data/public/railwatch/assets/env-layout-DrT8rO6P.js +1 -0
  206. data/public/railwatch/assets/execution-path-CzgBUi5e.js +1 -0
  207. data/public/railwatch/assets/filter-bar-9SU5NrzX.js +1 -0
  208. data/public/railwatch/assets/flamegraph-qcekju8V.js +2 -0
  209. data/public/railwatch/assets/format-B9SDkrWj.js +1 -0
  210. data/public/railwatch/assets/frames-Cyu7KMxZ.js +1 -0
  211. data/public/railwatch/assets/google-sign-in-button-DsTSfmzY.js +1 -0
  212. data/public/railwatch/assets/index-1ol1-QWI.js +1 -0
  213. data/public/railwatch/assets/index-5jI4aFzC.js +1 -0
  214. data/public/railwatch/assets/index-9KTrVnrc.js +1 -0
  215. data/public/railwatch/assets/index-B0-8lcTp.js +1 -0
  216. data/public/railwatch/assets/index-B7jjfNfO.js +1 -0
  217. data/public/railwatch/assets/index-BBchRy0M.js +1 -0
  218. data/public/railwatch/assets/index-BRiq3SNR.js +1 -0
  219. data/public/railwatch/assets/index-BgKj9xhr.js +1 -0
  220. data/public/railwatch/assets/index-BkTZqqOu.js +1 -0
  221. data/public/railwatch/assets/index-BprKx8QO.js +1 -0
  222. data/public/railwatch/assets/index-C3jzvPs3.js +1 -0
  223. data/public/railwatch/assets/index-Cbs6gGyQ.js +1 -0
  224. data/public/railwatch/assets/index-CdRZ6AWF.js +1 -0
  225. data/public/railwatch/assets/index-CeYKnapu.js +1 -0
  226. data/public/railwatch/assets/index-Cmlwy1-V.js +1 -0
  227. data/public/railwatch/assets/index-Cwx6058d.js +1 -0
  228. data/public/railwatch/assets/index-D4CSdbHv.js +1 -0
  229. data/public/railwatch/assets/index-DEFMSkdG.js +1 -0
  230. data/public/railwatch/assets/index-DFiHEBSh.js +1 -0
  231. data/public/railwatch/assets/index-DL4vWdWJ.js +1 -0
  232. data/public/railwatch/assets/index-DU9F5b5d.js +1 -0
  233. data/public/railwatch/assets/index-DaXgPcGL.js +1 -0
  234. data/public/railwatch/assets/index-DbtaU-EE.js +1 -0
  235. data/public/railwatch/assets/index-DeOe83F4.js +1 -0
  236. data/public/railwatch/assets/index-DiucHN4B.js +1 -0
  237. data/public/railwatch/assets/index-DlnR_l9o.js +1 -0
  238. data/public/railwatch/assets/index-DlumCsWY.js +2 -0
  239. data/public/railwatch/assets/index-DmRd7aIG.js +1 -0
  240. data/public/railwatch/assets/index-DxSh2UpM.js +1 -0
  241. data/public/railwatch/assets/index-MIMGuFNt.js +1 -0
  242. data/public/railwatch/assets/index-OqI59zPb.js +1 -0
  243. data/public/railwatch/assets/index-P4rC7IlX.js +1 -0
  244. data/public/railwatch/assets/index-gpPOcFWq.js +1 -0
  245. data/public/railwatch/assets/index-oVkururr.js +1 -0
  246. data/public/railwatch/assets/index-p9puqVge.js +1 -0
  247. data/public/railwatch/assets/inertia-TViv6kNv.js +97 -0
  248. data/public/railwatch/assets/input-error-LxImUkxv.js +1 -0
  249. data/public/railwatch/assets/json-viewer-Ar4cjPDW.js +1 -0
  250. data/public/railwatch/assets/klass-CJ-J4INB.js +1 -0
  251. data/public/railwatch/assets/label-COUKWqE_.js +1 -0
  252. data/public/railwatch/assets/layout-DNSLAkw_.js +1 -0
  253. data/public/railwatch/assets/live-dot-ChfUtY3p.js +41 -0
  254. data/public/railwatch/assets/nav-CNnDqPlm.js +1 -0
  255. data/public/railwatch/assets/new-84S8ZJq9.js +1 -0
  256. data/public/railwatch/assets/new-Be55nmt9.js +1 -0
  257. data/public/railwatch/assets/new-Bi_xQiIb.js +1 -0
  258. data/public/railwatch/assets/new-BvCT8TMg.js +1 -0
  259. data/public/railwatch/assets/new-D05SajFR.js +1 -0
  260. data/public/railwatch/assets/new-D4uewYC8.js +1 -0
  261. data/public/railwatch/assets/onboarding-CYZi5Cqc.js +1 -0
  262. data/public/railwatch/assets/origin-identity-6q1-CBts.js +1 -0
  263. data/public/railwatch/assets/percentile-picker-gFZCXtdb.js +1 -0
  264. data/public/railwatch/assets/relative-time-IOOgl5n2.js +1 -0
  265. data/public/railwatch/assets/release-health-DC8oc7uw.js +1 -0
  266. data/public/railwatch/assets/route-Dv6LAWvT.js +1 -0
  267. data/public/railwatch/assets/segmented-h1VdDTqE.js +1 -0
  268. data/public/railwatch/assets/select-_AJsUa7X.js +1 -0
  269. data/public/railwatch/assets/separator-BwwTYtCF.js +1 -0
  270. data/public/railwatch/assets/series-chart-DaFPefku.js +1 -0
  271. data/public/railwatch/assets/show-B7NCgkEo.js +1 -0
  272. data/public/railwatch/assets/show-BKqyKjBK.js +1 -0
  273. data/public/railwatch/assets/show-BM6X2Mpo.js +1 -0
  274. data/public/railwatch/assets/show-BNw4tN5q.js +1 -0
  275. data/public/railwatch/assets/show-BO3bnG5h.js +1 -0
  276. data/public/railwatch/assets/show-BhrAVAEA.js +1 -0
  277. data/public/railwatch/assets/show-C4Ltf5i9.js +2 -0
  278. data/public/railwatch/assets/show-C8sHalnw.js +1 -0
  279. data/public/railwatch/assets/show-CeTL4B37.js +2 -0
  280. data/public/railwatch/assets/show-CpfgV1jP.js +1 -0
  281. data/public/railwatch/assets/show-DACku6AD.js +3 -0
  282. data/public/railwatch/assets/show-DIOSGcXV.js +6 -0
  283. data/public/railwatch/assets/show-DQp_1n-B.js +1 -0
  284. data/public/railwatch/assets/show-DVNz46RI.js +1 -0
  285. data/public/railwatch/assets/show-DYteoYWW.js +1 -0
  286. data/public/railwatch/assets/show-DgSIoRvA.js +1 -0
  287. data/public/railwatch/assets/show-JxFtB4eK.js +2 -0
  288. data/public/railwatch/assets/sort-header-DpFzXblu.js +1 -0
  289. data/public/railwatch/assets/source-link-B2183i2-.js +1 -0
  290. data/public/railwatch/assets/sparkline-cell-C3-5vFkP.js +1 -0
  291. data/public/railwatch/assets/stat-s4RpOS9w.js +1 -0
  292. data/public/railwatch/assets/status-badge-8jVV-LA4.js +1 -0
  293. data/public/railwatch/assets/tenant-path-G-6u9A-o.js +1 -0
  294. data/public/railwatch/assets/text-link-DfsiaCcP.js +1 -0
  295. data/public/railwatch/assets/textarea-Dye72uP7.js +1 -0
  296. data/public/railwatch/assets/timeline-CD7WHnbo.js +1 -0
  297. data/public/railwatch/assets/transition-B_AW8rMK.js +5 -0
  298. data/public/railwatch/assets/use-clipboard-ColgLyQ2.js +1 -0
  299. data/public/railwatch/icon.png +0 -0
  300. data/public/railwatch/icon.svg +5 -0
  301. data/public/railwatch/manifest.json +2171 -0
  302. data/public/railwatch/rails-vite.json +1 -0
  303. metadata +313 -4
@@ -0,0 +1 @@
1
+ {"sourceDir":"app/frontend","entrypointsDir":"entrypoints"}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railwatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cole Robertson
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-09-15 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails
@@ -43,6 +43,34 @@ dependencies:
43
43
  - - "~>"
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0.2'
46
+ - !ruby/object:Gem::Dependency
47
+ name: inertia_rails
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '3.21'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '3.21'
60
+ - !ruby/object:Gem::Dependency
61
+ name: tdigest
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '0.2'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '0.2'
46
74
  description: Railwatch instruments a Rails app end to end (requests, jobs, queries,
47
75
  exceptions, cache, mail, broadcasts, outgoing HTTP, logs) and ships linked events
48
76
  to Railwatch Cloud.
@@ -56,10 +84,154 @@ files:
56
84
  - CHANGELOG.md
57
85
  - MIT-LICENSE
58
86
  - README.md
87
+ - app/channels/railwatch/environment_channel.rb
88
+ - app/controllers/concerns/railwatch/telemetry_identity.rb
89
+ - app/controllers/railwatch/alerts_controller.rb
90
+ - app/controllers/railwatch/anomaly_rules_controller.rb
91
+ - app/controllers/railwatch/attachments_controller.rb
59
92
  - app/controllers/railwatch/beacon_controller.rb
93
+ - app/controllers/railwatch/broadcasts_controller.rb
94
+ - app/controllers/railwatch/cache_events_controller.rb
95
+ - app/controllers/railwatch/commands_controller.rb
96
+ - app/controllers/railwatch/comments_controller.rb
97
+ - app/controllers/railwatch/dashboard_controller.rb
98
+ - app/controllers/railwatch/deploys_controller.rb
99
+ - app/controllers/railwatch/deprecations_controller.rb
100
+ - app/controllers/railwatch/environment_scoped.rb
101
+ - app/controllers/railwatch/exceptions_controller.rb
102
+ - app/controllers/railwatch/executions_controller.rb
103
+ - app/controllers/railwatch/issues_controller.rb
104
+ - app/controllers/railwatch/jobs_controller.rb
105
+ - app/controllers/railwatch/llm_calls_controller.rb
106
+ - app/controllers/railwatch/logs_controller.rb
107
+ - app/controllers/railwatch/mails_controller.rb
108
+ - app/controllers/railwatch/notifications_controller.rb
109
+ - app/controllers/railwatch/outgoing_requests_controller.rb
110
+ - app/controllers/railwatch/overview_controller.rb
111
+ - app/controllers/railwatch/people_controller.rb
112
+ - app/controllers/railwatch/processes_controller.rb
113
+ - app/controllers/railwatch/profiles_controller.rb
114
+ - app/controllers/railwatch/queries_controller.rb
115
+ - app/controllers/railwatch/releases_controller.rb
116
+ - app/controllers/railwatch/requests_controller.rb
117
+ - app/controllers/railwatch/saved_views_controller.rb
118
+ - app/controllers/railwatch/scheduled_tasks_controller.rb
119
+ - app/controllers/railwatch/spans_controller.rb
120
+ - app/controllers/railwatch/storage_ops_controller.rb
121
+ - app/controllers/railwatch/tenants_controller.rb
122
+ - app/controllers/railwatch/thresholds_controller.rb
123
+ - app/controllers/railwatch/traces_controller.rb
124
+ - app/controllers/railwatch/transactions_controller.rb
125
+ - app/controllers/railwatch/view_renders_controller.rb
126
+ - app/controllers/railwatch/visits_controller.rb
127
+ - app/helpers/railwatch/assets_helper.rb
128
+ - app/jobs/railwatch/anomaly_scan_job.rb
129
+ - app/jobs/railwatch/application_job.rb
130
+ - app/jobs/railwatch/auto_resolve_issues_job.rb
131
+ - app/jobs/railwatch/check_scheduled_tasks_job.rb
132
+ - app/jobs/railwatch/detect_anomalies_job.rb
133
+ - app/jobs/railwatch/detect_performance_issues_job.rb
134
+ - app/jobs/railwatch/group_exceptions_job.rb
135
+ - app/jobs/railwatch/optimize_telemetry_job.rb
136
+ - app/jobs/railwatch/performance_scan_job.rb
137
+ - app/jobs/railwatch/prune_telemetry_job.rb
138
+ - app/jobs/railwatch/release_health_rollup_job.rb
139
+ - app/jobs/railwatch/rollup_catchup_job.rb
140
+ - app/jobs/railwatch/rollup_job.rb
141
+ - app/jobs/railwatch/scheduled_task_scan_job.rb
142
+ - app/models/concerns/railwatch/detection_snapshotting.rb
143
+ - app/models/railwatch/alert.rb
144
+ - app/models/railwatch/alert_rule.rb
145
+ - app/models/railwatch/anomaly_rule.rb
146
+ - app/models/railwatch/application.rb
147
+ - app/models/railwatch/application_record.rb
148
+ - app/models/railwatch/comment.rb
149
+ - app/models/railwatch/deploy.rb
150
+ - app/models/railwatch/environment.rb
151
+ - app/models/railwatch/execution_presenter.rb
152
+ - app/models/railwatch/filter_query.rb
153
+ - app/models/railwatch/followup_receipt.rb
154
+ - app/models/railwatch/ingest/batch.rb
155
+ - app/models/railwatch/ingest/mapper.rb
156
+ - app/models/railwatch/ingest/payload.rb
157
+ - app/models/railwatch/ingest/rollup_absorber.rb
158
+ - app/models/railwatch/ingest/writer.rb
159
+ - app/models/railwatch/issue.rb
160
+ - app/models/railwatch/issue_activity.rb
161
+ - app/models/railwatch/issue_detection_presenter.rb
162
+ - app/models/railwatch/issue_detection_snapshot.rb
163
+ - app/models/railwatch/maintenance_task.rb
164
+ - app/models/railwatch/saved_view.rb
165
+ - app/models/railwatch/telemetry/aggregations.rb
166
+ - app/models/railwatch/telemetry/attachment.rb
167
+ - app/models/railwatch/telemetry/bounded_gzip.rb
168
+ - app/models/railwatch/telemetry/broadcast.rb
169
+ - app/models/railwatch/telemetry/cache_event.rb
170
+ - app/models/railwatch/telemetry/child.rb
171
+ - app/models/railwatch/telemetry/cursor_page.rb
172
+ - app/models/railwatch/telemetry/deprecation.rb
173
+ - app/models/railwatch/telemetry/enqueued_job.rb
174
+ - app/models/railwatch/telemetry/exception.rb
175
+ - app/models/railwatch/telemetry/execution.rb
176
+ - app/models/railwatch/telemetry/health_sample.rb
177
+ - app/models/railwatch/telemetry/ingest_batch.rb
178
+ - app/models/railwatch/telemetry/llm_call.rb
179
+ - app/models/railwatch/telemetry/log.rb
180
+ - app/models/railwatch/telemetry/mail.rb
181
+ - app/models/railwatch/telemetry/n_plus_one.rb
182
+ - app/models/railwatch/telemetry/notification.rb
183
+ - app/models/railwatch/telemetry/outgoing_request.rb
184
+ - app/models/railwatch/telemetry/person.rb
185
+ - app/models/railwatch/telemetry/process.rb
186
+ - app/models/railwatch/telemetry/profile.rb
187
+ - app/models/railwatch/telemetry/query.rb
188
+ - app/models/railwatch/telemetry/query_shape.rb
189
+ - app/models/railwatch/telemetry/release_health.rb
190
+ - app/models/railwatch/telemetry/rollup.rb
191
+ - app/models/railwatch/telemetry/session.rb
192
+ - app/models/railwatch/telemetry/span.rb
193
+ - app/models/railwatch/telemetry/storage_op.rb
194
+ - app/models/railwatch/telemetry/tenant.rb
195
+ - app/models/railwatch/telemetry/transaction.rb
196
+ - app/models/railwatch/telemetry/view_render.rb
197
+ - app/models/railwatch/telemetry/visit.rb
198
+ - app/models/railwatch/telemetry_record.rb
199
+ - app/models/railwatch/threshold.rb
200
+ - app/models/railwatch/user.rb
201
+ - app/models/railwatch/viewer.rb
202
+ - app/views/layouts/railwatch/dashboard.html.erb
60
203
  - config/routes.rb
204
+ - db/railwatch_migrate/20260916000000_create_railwatch_tables.rb
205
+ - db/railwatch_migrate/20260917000000_create_railwatch_maintenance_tasks.rb
206
+ - db/railwatch_migrate/20260917120000_create_railwatch_followup_receipts.rb
207
+ - db/railwatch_telemetry_migrate/20260903000001_create_telemetry.rb
208
+ - db/railwatch_telemetry_migrate/20260903000002_rename_tenant_to_app_tenant.rb
209
+ - db/railwatch_telemetry_migrate/20260903000003_add_statement_count_to_transactions.rb
210
+ - db/railwatch_telemetry_migrate/20260903000004_add_role_and_channel.rb
211
+ - db/railwatch_telemetry_migrate/20260903000005_add_locals_to_exceptions.rb
212
+ - db/railwatch_telemetry_migrate/20260903000006_add_spans_health_vitals_and_fts.rb
213
+ - db/railwatch_telemetry_migrate/20260903000007_rename_span_attributes_to_payload.rb
214
+ - db/railwatch_telemetry_migrate/20260903000008_add_profiles_and_attachments.rb
215
+ - db/railwatch_telemetry_migrate/20260903000009_add_truncated_to_attachments.rb
216
+ - db/railwatch_telemetry_migrate/20260903000010_create_sessions_and_release_health.rb
217
+ - db/railwatch_telemetry_migrate/20260903000011_add_fingerprint_to_exceptions.rb
218
+ - db/railwatch_telemetry_migrate/20260904000012_add_failed_to_broadcasts.rb
219
+ - db/railwatch_telemetry_migrate/20260904010000_add_filter_cursor_indexes.rb
220
+ - db/railwatch_telemetry_migrate/20260904020000_add_n_plus_ones_execution_id_index.rb
221
+ - db/railwatch_telemetry_migrate/20260904120000_create_query_shapes.rb
222
+ - db/railwatch_telemetry_migrate/20260906120000_add_backpressure_factor_to_ingest_batches.rb
223
+ - db/railwatch_telemetry_migrate/20260907000000_rename_lantern_version_on_processes.rb
224
+ - db/railwatch_telemetry_migrate/20260913000000_rename_nightrail_version_on_processes.rb
225
+ - db/railwatch_telemetry_migrate/20260914000000_drop_orphan_durable_ingest_tables.rb
226
+ - db/railwatch_telemetry_migrate/20260914010000_drop_orphan_durable_ingest_columns.rb
227
+ - db/railwatch_telemetry_migrate/20260915000000_create_llm_calls.rb
228
+ - db/railwatch_telemetry_migrate/20260915120000_add_detail_to_llm_calls.rb
229
+ - db/railwatch_telemetry_migrate/20260915200000_add_explained_index_to_queries.rb
230
+ - db/railwatch_telemetry_migrate/20260915210000_add_slowest_index_to_queries.rb
231
+ - db/railwatch_telemetry_migrate/20260917010000_add_batch_ledger_to_ingest_batches.rb
61
232
  - docs/ai-and-mcp.md
62
233
  - docs/configuration.md
234
+ - docs/embedded.md
63
235
  - docs/faq.md
64
236
  - docs/getting-started.md
65
237
  - docs/records.md
@@ -71,11 +243,13 @@ files:
71
243
  - docs/testing.md
72
244
  - docs/troubleshooting.md
73
245
  - lib/generators/railwatch/install/install_generator.rb
74
- - lib/generators/railwatch/install/templates/initializer.rb
246
+ - lib/generators/railwatch/install/templates/initializer.rb.tt
75
247
  - lib/generators/railwatch/install/templates/post-deploy
76
248
  - lib/generators/railwatch/install/templates/railwatch.ts
249
+ - lib/puma/plugin/railwatch.rb
77
250
  - lib/railwatch.rb
78
251
  - lib/railwatch/attachments.rb
252
+ - lib/railwatch/authentication.rb
79
253
  - lib/railwatch/backtrace.rb
80
254
  - lib/railwatch/buffer.rb
81
255
  - lib/railwatch/clock.rb
@@ -84,11 +258,16 @@ files:
84
258
  - lib/railwatch/context.rb
85
259
  - lib/railwatch/controller_helpers.rb
86
260
  - lib/railwatch/current.rb
261
+ - lib/railwatch/dashboard_assets.rb
262
+ - lib/railwatch/embedded.rb
87
263
  - lib/railwatch/engine.rb
88
264
  - lib/railwatch/execution.rb
89
265
  - lib/railwatch/faraday.rb
90
266
  - lib/railwatch/health.rb
267
+ - lib/railwatch/ingest_request_body_limit.rb
91
268
  - lib/railwatch/job_tracing.rb
269
+ - lib/railwatch/json_compat.rb
270
+ - lib/railwatch/maintenance.rb
92
271
  - lib/railwatch/middleware/request.rb
93
272
  - lib/railwatch/minitest.rb
94
273
  - lib/railwatch/patches.rb
@@ -126,9 +305,139 @@ files:
126
305
  - lib/railwatch/subscribers/users.rb
127
306
  - lib/railwatch/subscribers/views.rb
128
307
  - lib/railwatch/transport/http.rb
308
+ - lib/railwatch/transport/local.rb
309
+ - lib/railwatch/transport/socket.rb
129
310
  - lib/railwatch/version.rb
311
+ - lib/railwatch/writer.rb
130
312
  - lib/tasks/railwatch_tasks.rake
131
313
  - llms.txt
314
+ - public/railwatch/assets/CommitMono-Bold-D6h61ieg.woff2
315
+ - public/railwatch/assets/CommitMono-Regular-zr8w7Obm.woff2
316
+ - public/railwatch/assets/Roboto-Black-auA4GeOK.woff2
317
+ - public/railwatch/assets/Roboto-Bold-CJLnO8j1.woff2
318
+ - public/railwatch/assets/Roboto-Medium-Cm2bwKpj.woff2
319
+ - public/railwatch/assets/Roboto-Regular-Chaq1-PV.woff2
320
+ - public/railwatch/assets/app-layout-yh-sPWgK.js
321
+ - public/railwatch/assets/app-wordmark-nbjkzxwQ.js
322
+ - public/railwatch/assets/appearance-CDuRvQTB.js
323
+ - public/railwatch/assets/application-C_kpBdnf.css
324
+ - public/railwatch/assets/arrow-up-DVtOGdVA.js
325
+ - public/railwatch/assets/auth-layout-TCwPpS1K.js
326
+ - public/railwatch/assets/badge-Daw4Hvr8.js
327
+ - public/railwatch/assets/braces-DhFbHPsz.js
328
+ - public/railwatch/assets/card-BX_3HXcJ.js
329
+ - public/railwatch/assets/chart-B14-N9g7.js
330
+ - public/railwatch/assets/chart-hover-Vy52H4uD.js
331
+ - public/railwatch/assets/chart-panel-Cb4S_ej_.js
332
+ - public/railwatch/assets/checkbox-D3aRSsBj.js
333
+ - public/railwatch/assets/code-KvW8k7Jr.js
334
+ - public/railwatch/assets/copy-DaQMJWoT.js
335
+ - public/railwatch/assets/copy-block-BKFGd11J.js
336
+ - public/railwatch/assets/copy-id-Djks1fXB.js
337
+ - public/railwatch/assets/cursor-load-more-BXV0f1D_.js
338
+ - public/railwatch/assets/data-table-iv1bdF6u.js
339
+ - public/railwatch/assets/edit-BZc_Iawe.js
340
+ - public/railwatch/assets/edit-DMKUF8Zi.js
341
+ - public/railwatch/assets/edit-__9yJlO3.js
342
+ - public/railwatch/assets/empty-state-6j_0AaQQ.js
343
+ - public/railwatch/assets/env-layout-DrT8rO6P.js
344
+ - public/railwatch/assets/execution-path-CzgBUi5e.js
345
+ - public/railwatch/assets/filter-bar-9SU5NrzX.js
346
+ - public/railwatch/assets/flamegraph-qcekju8V.js
347
+ - public/railwatch/assets/format-B9SDkrWj.js
348
+ - public/railwatch/assets/frames-Cyu7KMxZ.js
349
+ - public/railwatch/assets/google-sign-in-button-DsTSfmzY.js
350
+ - public/railwatch/assets/index-1ol1-QWI.js
351
+ - public/railwatch/assets/index-5jI4aFzC.js
352
+ - public/railwatch/assets/index-9KTrVnrc.js
353
+ - public/railwatch/assets/index-B0-8lcTp.js
354
+ - public/railwatch/assets/index-B7jjfNfO.js
355
+ - public/railwatch/assets/index-BBchRy0M.js
356
+ - public/railwatch/assets/index-BRiq3SNR.js
357
+ - public/railwatch/assets/index-BgKj9xhr.js
358
+ - public/railwatch/assets/index-BkTZqqOu.js
359
+ - public/railwatch/assets/index-BprKx8QO.js
360
+ - public/railwatch/assets/index-C3jzvPs3.js
361
+ - public/railwatch/assets/index-Cbs6gGyQ.js
362
+ - public/railwatch/assets/index-CdRZ6AWF.js
363
+ - public/railwatch/assets/index-CeYKnapu.js
364
+ - public/railwatch/assets/index-Cmlwy1-V.js
365
+ - public/railwatch/assets/index-Cwx6058d.js
366
+ - public/railwatch/assets/index-D4CSdbHv.js
367
+ - public/railwatch/assets/index-DEFMSkdG.js
368
+ - public/railwatch/assets/index-DFiHEBSh.js
369
+ - public/railwatch/assets/index-DL4vWdWJ.js
370
+ - public/railwatch/assets/index-DU9F5b5d.js
371
+ - public/railwatch/assets/index-DaXgPcGL.js
372
+ - public/railwatch/assets/index-DbtaU-EE.js
373
+ - public/railwatch/assets/index-DeOe83F4.js
374
+ - public/railwatch/assets/index-DiucHN4B.js
375
+ - public/railwatch/assets/index-DlnR_l9o.js
376
+ - public/railwatch/assets/index-DlumCsWY.js
377
+ - public/railwatch/assets/index-DmRd7aIG.js
378
+ - public/railwatch/assets/index-DxSh2UpM.js
379
+ - public/railwatch/assets/index-MIMGuFNt.js
380
+ - public/railwatch/assets/index-OqI59zPb.js
381
+ - public/railwatch/assets/index-P4rC7IlX.js
382
+ - public/railwatch/assets/index-gpPOcFWq.js
383
+ - public/railwatch/assets/index-oVkururr.js
384
+ - public/railwatch/assets/index-p9puqVge.js
385
+ - public/railwatch/assets/inertia-TViv6kNv.js
386
+ - public/railwatch/assets/input-error-LxImUkxv.js
387
+ - public/railwatch/assets/json-viewer-Ar4cjPDW.js
388
+ - public/railwatch/assets/klass-CJ-J4INB.js
389
+ - public/railwatch/assets/label-COUKWqE_.js
390
+ - public/railwatch/assets/layout-DNSLAkw_.js
391
+ - public/railwatch/assets/live-dot-ChfUtY3p.js
392
+ - public/railwatch/assets/nav-CNnDqPlm.js
393
+ - public/railwatch/assets/new-84S8ZJq9.js
394
+ - public/railwatch/assets/new-Be55nmt9.js
395
+ - public/railwatch/assets/new-Bi_xQiIb.js
396
+ - public/railwatch/assets/new-BvCT8TMg.js
397
+ - public/railwatch/assets/new-D05SajFR.js
398
+ - public/railwatch/assets/new-D4uewYC8.js
399
+ - public/railwatch/assets/onboarding-CYZi5Cqc.js
400
+ - public/railwatch/assets/origin-identity-6q1-CBts.js
401
+ - public/railwatch/assets/percentile-picker-gFZCXtdb.js
402
+ - public/railwatch/assets/relative-time-IOOgl5n2.js
403
+ - public/railwatch/assets/release-health-DC8oc7uw.js
404
+ - public/railwatch/assets/route-Dv6LAWvT.js
405
+ - public/railwatch/assets/segmented-h1VdDTqE.js
406
+ - public/railwatch/assets/select-_AJsUa7X.js
407
+ - public/railwatch/assets/separator-BwwTYtCF.js
408
+ - public/railwatch/assets/series-chart-DaFPefku.js
409
+ - public/railwatch/assets/show-B7NCgkEo.js
410
+ - public/railwatch/assets/show-BKqyKjBK.js
411
+ - public/railwatch/assets/show-BM6X2Mpo.js
412
+ - public/railwatch/assets/show-BNw4tN5q.js
413
+ - public/railwatch/assets/show-BO3bnG5h.js
414
+ - public/railwatch/assets/show-BhrAVAEA.js
415
+ - public/railwatch/assets/show-C4Ltf5i9.js
416
+ - public/railwatch/assets/show-C8sHalnw.js
417
+ - public/railwatch/assets/show-CeTL4B37.js
418
+ - public/railwatch/assets/show-CpfgV1jP.js
419
+ - public/railwatch/assets/show-DACku6AD.js
420
+ - public/railwatch/assets/show-DIOSGcXV.js
421
+ - public/railwatch/assets/show-DQp_1n-B.js
422
+ - public/railwatch/assets/show-DVNz46RI.js
423
+ - public/railwatch/assets/show-DYteoYWW.js
424
+ - public/railwatch/assets/show-DgSIoRvA.js
425
+ - public/railwatch/assets/show-JxFtB4eK.js
426
+ - public/railwatch/assets/sort-header-DpFzXblu.js
427
+ - public/railwatch/assets/source-link-B2183i2-.js
428
+ - public/railwatch/assets/sparkline-cell-C3-5vFkP.js
429
+ - public/railwatch/assets/stat-s4RpOS9w.js
430
+ - public/railwatch/assets/status-badge-8jVV-LA4.js
431
+ - public/railwatch/assets/tenant-path-G-6u9A-o.js
432
+ - public/railwatch/assets/text-link-DfsiaCcP.js
433
+ - public/railwatch/assets/textarea-Dye72uP7.js
434
+ - public/railwatch/assets/timeline-CD7WHnbo.js
435
+ - public/railwatch/assets/transition-B_AW8rMK.js
436
+ - public/railwatch/assets/use-clipboard-ColgLyQ2.js
437
+ - public/railwatch/icon.png
438
+ - public/railwatch/icon.svg
439
+ - public/railwatch/manifest.json
440
+ - public/railwatch/rails-vite.json
132
441
  homepage: https://railwatch.rebulk.com
133
442
  licenses:
134
443
  - MIT
@@ -152,7 +461,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
461
  - !ruby/object:Gem::Version
153
462
  version: '0'
154
463
  requirements: []
155
- rubygems_version: 3.6.2
464
+ rubygems_version: 3.6.9
156
465
  specification_version: 4
157
466
  summary: First-class monitoring for Rails applications.
158
467
  test_files: []