nuxt-observe 0.0.2

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 (435) hide show
  1. package/README.md +92 -0
  2. package/dist/module.d.mts +7 -0
  3. package/dist/module.json +9 -0
  4. package/dist/module.mjs +393 -0
  5. package/dist/runtime/app/assets/css/main.css +1 -0
  6. package/dist/runtime/app/components/ObserveActivityFeed.d.vue.ts +13 -0
  7. package/dist/runtime/app/components/ObserveActivityFeed.vue +77 -0
  8. package/dist/runtime/app/components/ObserveActivityFeed.vue.d.ts +13 -0
  9. package/dist/runtime/app/components/ObserveActivityTable.d.vue.ts +30 -0
  10. package/dist/runtime/app/components/ObserveActivityTable.vue +187 -0
  11. package/dist/runtime/app/components/ObserveActivityTable.vue.d.ts +30 -0
  12. package/dist/runtime/app/components/ObserveCan.d.vue.ts +27 -0
  13. package/dist/runtime/app/components/ObserveCan.vue +16 -0
  14. package/dist/runtime/app/components/ObserveCan.vue.d.ts +27 -0
  15. package/dist/runtime/app/components/ObserveErrorsTable.d.vue.ts +19 -0
  16. package/dist/runtime/app/components/ObserveErrorsTable.vue +105 -0
  17. package/dist/runtime/app/components/ObserveErrorsTable.vue.d.ts +19 -0
  18. package/dist/runtime/app/components/ObserveHealthHero.d.vue.ts +16 -0
  19. package/dist/runtime/app/components/ObserveHealthHero.vue +114 -0
  20. package/dist/runtime/app/components/ObserveHealthHero.vue.d.ts +16 -0
  21. package/dist/runtime/app/components/ObserveJourneySearch.d.vue.ts +13 -0
  22. package/dist/runtime/app/components/ObserveJourneySearch.vue +55 -0
  23. package/dist/runtime/app/components/ObserveJourneySearch.vue.d.ts +13 -0
  24. package/dist/runtime/app/components/ObserveJourneyTimeline.d.vue.ts +14 -0
  25. package/dist/runtime/app/components/ObserveJourneyTimeline.vue +119 -0
  26. package/dist/runtime/app/components/ObserveJourneyTimeline.vue.d.ts +14 -0
  27. package/dist/runtime/app/components/ObserveLogDetail.d.vue.ts +12 -0
  28. package/dist/runtime/app/components/ObserveLogDetail.vue +187 -0
  29. package/dist/runtime/app/components/ObserveLogDetail.vue.d.ts +12 -0
  30. package/dist/runtime/app/components/ObserveLogLevelBadge.d.vue.ts +10 -0
  31. package/dist/runtime/app/components/ObserveLogLevelBadge.vue +29 -0
  32. package/dist/runtime/app/components/ObserveLogLevelBadge.vue.d.ts +10 -0
  33. package/dist/runtime/app/components/ObserveLogsFilterBar.d.vue.ts +20 -0
  34. package/dist/runtime/app/components/ObserveLogsFilterBar.vue +134 -0
  35. package/dist/runtime/app/components/ObserveLogsFilterBar.vue.d.ts +20 -0
  36. package/dist/runtime/app/components/ObserveLogsTable.d.vue.ts +20 -0
  37. package/dist/runtime/app/components/ObserveLogsTable.vue +92 -0
  38. package/dist/runtime/app/components/ObserveLogsTable.vue.d.ts +20 -0
  39. package/dist/runtime/app/components/ObservePeriodSelector.d.vue.ts +3 -0
  40. package/dist/runtime/app/components/ObservePeriodSelector.vue +22 -0
  41. package/dist/runtime/app/components/ObservePeriodSelector.vue.d.ts +3 -0
  42. package/dist/runtime/app/components/ObserveRegressionAlert.d.vue.ts +12 -0
  43. package/dist/runtime/app/components/ObserveRegressionAlert.vue +27 -0
  44. package/dist/runtime/app/components/ObserveRegressionAlert.vue.d.ts +12 -0
  45. package/dist/runtime/app/components/ObserveServiceSwitcher.d.vue.ts +3 -0
  46. package/dist/runtime/app/components/ObserveServiceSwitcher.vue +49 -0
  47. package/dist/runtime/app/components/ObserveServiceSwitcher.vue.d.ts +3 -0
  48. package/dist/runtime/app/components/ObserveServicesTable.d.vue.ts +15 -0
  49. package/dist/runtime/app/components/ObserveServicesTable.vue +109 -0
  50. package/dist/runtime/app/components/ObserveServicesTable.vue.d.ts +15 -0
  51. package/dist/runtime/app/components/ObserveStatCard.d.vue.ts +14 -0
  52. package/dist/runtime/app/components/ObserveStatCard.vue +34 -0
  53. package/dist/runtime/app/components/ObserveStatCard.vue.d.ts +14 -0
  54. package/dist/runtime/app/components/charts/ObserveErrorRateChart.client.d.vue.ts +15 -0
  55. package/dist/runtime/app/components/charts/ObserveErrorRateChart.client.vue +170 -0
  56. package/dist/runtime/app/components/charts/ObserveErrorRateChart.client.vue.d.ts +15 -0
  57. package/dist/runtime/app/components/charts/ObserveServiceBreakdownChart.client.d.vue.ts +17 -0
  58. package/dist/runtime/app/components/charts/ObserveServiceBreakdownChart.client.vue +208 -0
  59. package/dist/runtime/app/components/charts/ObserveServiceBreakdownChart.client.vue.d.ts +17 -0
  60. package/dist/runtime/app/components/charts/ObserveVersionAdoptionChart.client.d.vue.ts +14 -0
  61. package/dist/runtime/app/components/charts/ObserveVersionAdoptionChart.client.vue +208 -0
  62. package/dist/runtime/app/components/charts/ObserveVersionAdoptionChart.client.vue.d.ts +14 -0
  63. package/dist/runtime/app/components/charts/ObserveVersionCompareChart.client.d.vue.ts +14 -0
  64. package/dist/runtime/app/components/charts/ObserveVersionCompareChart.client.vue +190 -0
  65. package/dist/runtime/app/components/charts/ObserveVersionCompareChart.client.vue.d.ts +14 -0
  66. package/dist/runtime/app/components/charts/ObserveVolumeChart.client.d.vue.ts +16 -0
  67. package/dist/runtime/app/components/charts/ObserveVolumeChart.client.vue +199 -0
  68. package/dist/runtime/app/components/charts/ObserveVolumeChart.client.vue.d.ts +16 -0
  69. package/dist/runtime/app/components/charts/chart-core.d.ts +64 -0
  70. package/dist/runtime/app/components/charts/chart-core.js +136 -0
  71. package/dist/runtime/app/components/settings/ObserveApiKeyPanel.d.vue.ts +8 -0
  72. package/dist/runtime/app/components/settings/ObserveApiKeyPanel.vue +145 -0
  73. package/dist/runtime/app/components/settings/ObserveApiKeyPanel.vue.d.ts +8 -0
  74. package/dist/runtime/app/components/settings/ObserveApiKeyRevealModal.d.vue.ts +19 -0
  75. package/dist/runtime/app/components/settings/ObserveApiKeyRevealModal.vue +106 -0
  76. package/dist/runtime/app/components/settings/ObserveApiKeyRevealModal.vue.d.ts +19 -0
  77. package/dist/runtime/app/components/settings/ObserveAssignmentEditor.d.vue.ts +12 -0
  78. package/dist/runtime/app/components/settings/ObserveAssignmentEditor.vue +67 -0
  79. package/dist/runtime/app/components/settings/ObserveAssignmentEditor.vue.d.ts +12 -0
  80. package/dist/runtime/app/components/settings/ObserveGroupFormModal.d.vue.ts +18 -0
  81. package/dist/runtime/app/components/settings/ObserveGroupFormModal.vue +60 -0
  82. package/dist/runtime/app/components/settings/ObserveGroupFormModal.vue.d.ts +18 -0
  83. package/dist/runtime/app/components/settings/ObserveGroupMembershipEditor.d.vue.ts +20 -0
  84. package/dist/runtime/app/components/settings/ObserveGroupMembershipEditor.vue +21 -0
  85. package/dist/runtime/app/components/settings/ObserveGroupMembershipEditor.vue.d.ts +20 -0
  86. package/dist/runtime/app/components/settings/ObserveOriginAllowlistEditor.d.vue.ts +15 -0
  87. package/dist/runtime/app/components/settings/ObserveOriginAllowlistEditor.vue +63 -0
  88. package/dist/runtime/app/components/settings/ObserveOriginAllowlistEditor.vue.d.ts +15 -0
  89. package/dist/runtime/app/components/settings/ObserveServiceEditForm.d.vue.ts +38 -0
  90. package/dist/runtime/app/components/settings/ObserveServiceEditForm.vue +216 -0
  91. package/dist/runtime/app/components/settings/ObserveServiceEditForm.vue.d.ts +38 -0
  92. package/dist/runtime/app/components/settings/ObserveServiceFormModal.d.vue.ts +37 -0
  93. package/dist/runtime/app/components/settings/ObserveServiceFormModal.vue +192 -0
  94. package/dist/runtime/app/components/settings/ObserveServiceFormModal.vue.d.ts +37 -0
  95. package/dist/runtime/app/components/settings/ObserveServiceTypeBadge.d.vue.ts +11 -0
  96. package/dist/runtime/app/components/settings/ObserveServiceTypeBadge.vue +18 -0
  97. package/dist/runtime/app/components/settings/ObserveServiceTypeBadge.vue.d.ts +11 -0
  98. package/dist/runtime/app/components/settings/ObserveSettingsServicesTable.d.vue.ts +19 -0
  99. package/dist/runtime/app/components/settings/ObserveSettingsServicesTable.vue +132 -0
  100. package/dist/runtime/app/components/settings/ObserveSettingsServicesTable.vue.d.ts +19 -0
  101. package/dist/runtime/app/components/settings/ObserveUserFormModal.d.vue.ts +27 -0
  102. package/dist/runtime/app/components/settings/ObserveUserFormModal.vue +108 -0
  103. package/dist/runtime/app/components/settings/ObserveUserFormModal.vue.d.ts +27 -0
  104. package/dist/runtime/app/components/settings/ObserveVersionTrackingField.d.vue.ts +17 -0
  105. package/dist/runtime/app/components/settings/ObserveVersionTrackingField.vue +20 -0
  106. package/dist/runtime/app/components/settings/ObserveVersionTrackingField.vue.d.ts +17 -0
  107. package/dist/runtime/app/composables/useObserveAbility.d.ts +15 -0
  108. package/dist/runtime/app/composables/useObserveAbility.js +20 -0
  109. package/dist/runtime/app/composables/useObserveActivity.d.ts +22 -0
  110. package/dist/runtime/app/composables/useObserveActivity.js +44 -0
  111. package/dist/runtime/app/composables/useObserveApiKeys.d.ts +15 -0
  112. package/dist/runtime/app/composables/useObserveApiKeys.js +19 -0
  113. package/dist/runtime/app/composables/useObserveAssignments.d.ts +19 -0
  114. package/dist/runtime/app/composables/useObserveAssignments.js +16 -0
  115. package/dist/runtime/app/composables/useObserveErrors.d.ts +33 -0
  116. package/dist/runtime/app/composables/useObserveErrors.js +85 -0
  117. package/dist/runtime/app/composables/useObserveGroups.d.ts +27 -0
  118. package/dist/runtime/app/composables/useObserveGroups.js +33 -0
  119. package/dist/runtime/app/composables/useObserveJourney.d.ts +19 -0
  120. package/dist/runtime/app/composables/useObserveJourney.js +19 -0
  121. package/dist/runtime/app/composables/useObserveLogFacets.d.ts +11 -0
  122. package/dist/runtime/app/composables/useObserveLogFacets.js +21 -0
  123. package/dist/runtime/app/composables/useObserveLogs.d.ts +28 -0
  124. package/dist/runtime/app/composables/useObserveLogs.js +100 -0
  125. package/dist/runtime/app/composables/useObserveMigrations.d.ts +17 -0
  126. package/dist/runtime/app/composables/useObserveMigrations.js +49 -0
  127. package/dist/runtime/app/composables/useObserveOverview.d.ts +14 -0
  128. package/dist/runtime/app/composables/useObserveOverview.js +23 -0
  129. package/dist/runtime/app/composables/useObservePeriod.d.ts +11 -0
  130. package/dist/runtime/app/composables/useObservePeriod.js +18 -0
  131. package/dist/runtime/app/composables/useObserveRollout.d.ts +20 -0
  132. package/dist/runtime/app/composables/useObserveRollout.js +55 -0
  133. package/dist/runtime/app/composables/useObserveScope.d.ts +13 -0
  134. package/dist/runtime/app/composables/useObserveScope.js +17 -0
  135. package/dist/runtime/app/composables/useObserveServices.d.ts +26 -0
  136. package/dist/runtime/app/composables/useObserveServices.js +33 -0
  137. package/dist/runtime/app/composables/useObserveStats.d.ts +14 -0
  138. package/dist/runtime/app/composables/useObserveStats.js +23 -0
  139. package/dist/runtime/app/composables/useObserveUsers.d.ts +29 -0
  140. package/dist/runtime/app/composables/useObserveUsers.js +33 -0
  141. package/dist/runtime/app/layouts/observe.d.vue.ts +13 -0
  142. package/dist/runtime/app/layouts/observe.vue +138 -0
  143. package/dist/runtime/app/layouts/observe.vue.d.ts +13 -0
  144. package/dist/runtime/app/middleware/observe-auth.global.d.ts +9 -0
  145. package/dist/runtime/app/middleware/observe-auth.global.js +8 -0
  146. package/dist/runtime/app/pages/activity.d.vue.ts +3 -0
  147. package/dist/runtime/app/pages/activity.vue +54 -0
  148. package/dist/runtime/app/pages/activity.vue.d.ts +3 -0
  149. package/dist/runtime/app/pages/error-detail.d.vue.ts +3 -0
  150. package/dist/runtime/app/pages/error-detail.vue +190 -0
  151. package/dist/runtime/app/pages/error-detail.vue.d.ts +3 -0
  152. package/dist/runtime/app/pages/errors.d.vue.ts +3 -0
  153. package/dist/runtime/app/pages/errors.vue +47 -0
  154. package/dist/runtime/app/pages/errors.vue.d.ts +3 -0
  155. package/dist/runtime/app/pages/journey.d.vue.ts +3 -0
  156. package/dist/runtime/app/pages/journey.vue +96 -0
  157. package/dist/runtime/app/pages/journey.vue.d.ts +3 -0
  158. package/dist/runtime/app/pages/log-detail.d.vue.ts +3 -0
  159. package/dist/runtime/app/pages/log-detail.vue +35 -0
  160. package/dist/runtime/app/pages/log-detail.vue.d.ts +3 -0
  161. package/dist/runtime/app/pages/login.d.vue.ts +3 -0
  162. package/dist/runtime/app/pages/login.vue +69 -0
  163. package/dist/runtime/app/pages/login.vue.d.ts +3 -0
  164. package/dist/runtime/app/pages/logs.d.vue.ts +3 -0
  165. package/dist/runtime/app/pages/logs.vue +36 -0
  166. package/dist/runtime/app/pages/logs.vue.d.ts +3 -0
  167. package/dist/runtime/app/pages/metrics.d.vue.ts +3 -0
  168. package/dist/runtime/app/pages/metrics.vue +68 -0
  169. package/dist/runtime/app/pages/metrics.vue.d.ts +3 -0
  170. package/dist/runtime/app/pages/overview.d.vue.ts +3 -0
  171. package/dist/runtime/app/pages/overview.vue +65 -0
  172. package/dist/runtime/app/pages/overview.vue.d.ts +3 -0
  173. package/dist/runtime/app/pages/rollout.d.vue.ts +3 -0
  174. package/dist/runtime/app/pages/rollout.vue +188 -0
  175. package/dist/runtime/app/pages/rollout.vue.d.ts +3 -0
  176. package/dist/runtime/app/pages/settings/group-detail.d.vue.ts +3 -0
  177. package/dist/runtime/app/pages/settings/group-detail.vue +149 -0
  178. package/dist/runtime/app/pages/settings/group-detail.vue.d.ts +3 -0
  179. package/dist/runtime/app/pages/settings/groups.d.vue.ts +3 -0
  180. package/dist/runtime/app/pages/settings/groups.vue +107 -0
  181. package/dist/runtime/app/pages/settings/groups.vue.d.ts +3 -0
  182. package/dist/runtime/app/pages/settings/index.d.vue.ts +3 -0
  183. package/dist/runtime/app/pages/settings/index.vue +47 -0
  184. package/dist/runtime/app/pages/settings/index.vue.d.ts +3 -0
  185. package/dist/runtime/app/pages/settings/migrations.d.vue.ts +3 -0
  186. package/dist/runtime/app/pages/settings/migrations.vue +275 -0
  187. package/dist/runtime/app/pages/settings/migrations.vue.d.ts +3 -0
  188. package/dist/runtime/app/pages/settings/service-detail.d.vue.ts +3 -0
  189. package/dist/runtime/app/pages/settings/service-detail.vue +133 -0
  190. package/dist/runtime/app/pages/settings/service-detail.vue.d.ts +3 -0
  191. package/dist/runtime/app/pages/settings/services.d.vue.ts +3 -0
  192. package/dist/runtime/app/pages/settings/services.vue +66 -0
  193. package/dist/runtime/app/pages/settings/services.vue.d.ts +3 -0
  194. package/dist/runtime/app/pages/settings/users/[id].d.vue.ts +3 -0
  195. package/dist/runtime/app/pages/settings/users/[id].vue +243 -0
  196. package/dist/runtime/app/pages/settings/users/[id].vue.d.ts +3 -0
  197. package/dist/runtime/app/pages/settings/users/index.d.vue.ts +3 -0
  198. package/dist/runtime/app/pages/settings/users/index.vue +129 -0
  199. package/dist/runtime/app/pages/settings/users/index.vue.d.ts +3 -0
  200. package/dist/runtime/options.d.ts +1 -0
  201. package/dist/runtime/options.js +1 -0
  202. package/dist/runtime/server/api/observe/activity.get.d.ts +3 -0
  203. package/dist/runtime/server/api/observe/activity.get.js +30 -0
  204. package/dist/runtime/server/api/observe/auth/login.post.d.ts +4 -0
  205. package/dist/runtime/server/api/observe/auth/login.post.js +13 -0
  206. package/dist/runtime/server/api/observe/auth/logout.post.d.ts +4 -0
  207. package/dist/runtime/server/api/observe/auth/logout.post.js +6 -0
  208. package/dist/runtime/server/api/observe/auth/me.get.d.ts +2 -0
  209. package/dist/runtime/server/api/observe/auth/me.get.js +3 -0
  210. package/dist/runtime/server/api/observe/errors/[fingerprint].get.d.ts +3 -0
  211. package/dist/runtime/server/api/observe/errors/[fingerprint].get.js +56 -0
  212. package/dist/runtime/server/api/observe/errors/index.get.d.ts +3 -0
  213. package/dist/runtime/server/api/observe/errors/index.get.js +41 -0
  214. package/dist/runtime/server/api/observe/facets.get.d.ts +8 -0
  215. package/dist/runtime/server/api/observe/facets.get.js +12 -0
  216. package/dist/runtime/server/api/observe/groups/[id]/assignments.put.d.ts +3 -0
  217. package/dist/runtime/server/api/observe/groups/[id]/assignments.put.js +12 -0
  218. package/dist/runtime/server/api/observe/groups/[id]/services.put.d.ts +5 -0
  219. package/dist/runtime/server/api/observe/groups/[id]/services.put.js +13 -0
  220. package/dist/runtime/server/api/observe/groups/[id].delete.d.ts +5 -0
  221. package/dist/runtime/server/api/observe/groups/[id].delete.js +11 -0
  222. package/dist/runtime/server/api/observe/groups/[id].get.d.ts +6 -0
  223. package/dist/runtime/server/api/observe/groups/[id].get.js +14 -0
  224. package/dist/runtime/server/api/observe/groups/[id].patch.d.ts +3 -0
  225. package/dist/runtime/server/api/observe/groups/[id].patch.js +12 -0
  226. package/dist/runtime/server/api/observe/groups/index.get.d.ts +3 -0
  227. package/dist/runtime/server/api/observe/groups/index.get.js +7 -0
  228. package/dist/runtime/server/api/observe/groups/index.post.d.ts +3 -0
  229. package/dist/runtime/server/api/observe/groups/index.post.js +11 -0
  230. package/dist/runtime/server/api/observe/health.get.d.ts +6 -0
  231. package/dist/runtime/server/api/observe/health.get.js +10 -0
  232. package/dist/runtime/server/api/observe/ingest/frogger.d.ts +5 -0
  233. package/dist/runtime/server/api/observe/ingest/frogger.js +42 -0
  234. package/dist/runtime/server/api/observe/ingest.d.ts +5 -0
  235. package/dist/runtime/server/api/observe/ingest.js +38 -0
  236. package/dist/runtime/server/api/observe/journey.get.d.ts +9 -0
  237. package/dist/runtime/server/api/observe/journey.get.js +31 -0
  238. package/dist/runtime/server/api/observe/logs/[id].get.d.ts +3 -0
  239. package/dist/runtime/server/api/observe/logs/[id].get.js +19 -0
  240. package/dist/runtime/server/api/observe/logs.get.d.ts +3 -0
  241. package/dist/runtime/server/api/observe/logs.get.js +54 -0
  242. package/dist/runtime/server/api/observe/migrations/index.get.d.ts +9 -0
  243. package/dist/runtime/server/api/observe/migrations/index.get.js +14 -0
  244. package/dist/runtime/server/api/observe/migrations/run.post.d.ts +13 -0
  245. package/dist/runtime/server/api/observe/migrations/run.post.js +35 -0
  246. package/dist/runtime/server/api/observe/overview.get.d.ts +3 -0
  247. package/dist/runtime/server/api/observe/overview.get.js +19 -0
  248. package/dist/runtime/server/api/observe/rollout/compare.get.d.ts +3 -0
  249. package/dist/runtime/server/api/observe/rollout/compare.get.js +24 -0
  250. package/dist/runtime/server/api/observe/rollout/regressions.get.d.ts +3 -0
  251. package/dist/runtime/server/api/observe/rollout/regressions.get.js +31 -0
  252. package/dist/runtime/server/api/observe/rollout/versions.get.d.ts +3 -0
  253. package/dist/runtime/server/api/observe/rollout/versions.get.js +20 -0
  254. package/dist/runtime/server/api/observe/services/[id]/assignments.put.d.ts +7 -0
  255. package/dist/runtime/server/api/observe/services/[id]/assignments.put.js +12 -0
  256. package/dist/runtime/server/api/observe/services/[id]/keys/[keyId]/rotate.post.d.ts +4 -0
  257. package/dist/runtime/server/api/observe/services/[id]/keys/[keyId]/rotate.post.js +14 -0
  258. package/dist/runtime/server/api/observe/services/[id]/keys/[keyId].delete.d.ts +4 -0
  259. package/dist/runtime/server/api/observe/services/[id]/keys/[keyId].delete.js +14 -0
  260. package/dist/runtime/server/api/observe/services/[id]/keys/index.get.d.ts +3 -0
  261. package/dist/runtime/server/api/observe/services/[id]/keys/index.get.js +10 -0
  262. package/dist/runtime/server/api/observe/services/[id]/keys/index.post.d.ts +3 -0
  263. package/dist/runtime/server/api/observe/services/[id]/keys/index.post.js +11 -0
  264. package/dist/runtime/server/api/observe/services/[id]/restore.post.d.ts +4 -0
  265. package/dist/runtime/server/api/observe/services/[id]/restore.post.js +11 -0
  266. package/dist/runtime/server/api/observe/services/[id].delete.d.ts +11 -0
  267. package/dist/runtime/server/api/observe/services/[id].delete.js +11 -0
  268. package/dist/runtime/server/api/observe/services/[id].get.d.ts +3 -0
  269. package/dist/runtime/server/api/observe/services/[id].get.js +12 -0
  270. package/dist/runtime/server/api/observe/services/[id].patch.d.ts +3 -0
  271. package/dist/runtime/server/api/observe/services/[id].patch.js +13 -0
  272. package/dist/runtime/server/api/observe/services/index.get.d.ts +3 -0
  273. package/dist/runtime/server/api/observe/services/index.get.js +7 -0
  274. package/dist/runtime/server/api/observe/services/index.post.d.ts +3 -0
  275. package/dist/runtime/server/api/observe/services/index.post.js +16 -0
  276. package/dist/runtime/server/api/observe/stats.get.d.ts +3 -0
  277. package/dist/runtime/server/api/observe/stats.get.js +28 -0
  278. package/dist/runtime/server/api/observe/users/[id]/assignments.put.d.ts +3 -0
  279. package/dist/runtime/server/api/observe/users/[id]/assignments.put.js +14 -0
  280. package/dist/runtime/server/api/observe/users/[id].delete.d.ts +4 -0
  281. package/dist/runtime/server/api/observe/users/[id].delete.js +15 -0
  282. package/dist/runtime/server/api/observe/users/[id].get.d.ts +3 -0
  283. package/dist/runtime/server/api/observe/users/[id].get.js +11 -0
  284. package/dist/runtime/server/api/observe/users/[id].patch.d.ts +3 -0
  285. package/dist/runtime/server/api/observe/users/[id].patch.js +25 -0
  286. package/dist/runtime/server/api/observe/users/index.get.d.ts +8 -0
  287. package/dist/runtime/server/api/observe/users/index.get.js +7 -0
  288. package/dist/runtime/server/api/observe/users/index.post.d.ts +3 -0
  289. package/dist/runtime/server/api/observe/users/index.post.js +29 -0
  290. package/dist/runtime/server/auth/authorization.d.ts +7 -0
  291. package/dist/runtime/server/auth/authorization.js +5 -0
  292. package/dist/runtime/server/auth/provider.d.ts +17 -0
  293. package/dist/runtime/server/auth/provider.js +44 -0
  294. package/dist/runtime/server/auth/providers/config-provider.d.ts +18 -0
  295. package/dist/runtime/server/auth/providers/config-provider.js +54 -0
  296. package/dist/runtime/server/auth/providers/db-provider.d.ts +16 -0
  297. package/dist/runtime/server/auth/providers/db-provider.js +42 -0
  298. package/dist/runtime/server/auth/providers/jwt-provider.d.ts +24 -0
  299. package/dist/runtime/server/auth/providers/jwt-provider.js +72 -0
  300. package/dist/runtime/server/migrations/0001-services-kind.d.ts +8 -0
  301. package/dist/runtime/server/migrations/0001-services-kind.js +14 -0
  302. package/dist/runtime/server/migrations/0002-services-type.d.ts +7 -0
  303. package/dist/runtime/server/migrations/0002-services-type.js +14 -0
  304. package/dist/runtime/server/migrations/0003-services-deleted-at.d.ts +6 -0
  305. package/dist/runtime/server/migrations/0003-services-deleted-at.js +14 -0
  306. package/dist/runtime/server/migrations/0004-logs-error-fingerprint.d.ts +11 -0
  307. package/dist/runtime/server/migrations/0004-logs-error-fingerprint.js +15 -0
  308. package/dist/runtime/server/migrations/0005-users-columns.d.ts +9 -0
  309. package/dist/runtime/server/migrations/0005-users-columns.js +25 -0
  310. package/dist/runtime/server/migrations/index.d.ts +13 -0
  311. package/dist/runtime/server/migrations/index.js +13 -0
  312. package/dist/runtime/server/migrations/types.d.ts +15 -0
  313. package/dist/runtime/server/migrations/types.js +0 -0
  314. package/dist/runtime/server/plugins/observe-migrate.server.d.ts +2 -0
  315. package/dist/runtime/server/plugins/observe-migrate.server.js +18 -0
  316. package/dist/runtime/server/tasks/backfill-fingerprints.d.ts +11 -0
  317. package/dist/runtime/server/tasks/backfill-fingerprints.js +41 -0
  318. package/dist/runtime/server/tasks/purge.d.ts +5 -0
  319. package/dist/runtime/server/tasks/purge.js +12 -0
  320. package/dist/runtime/server/tsconfig.json +3 -0
  321. package/dist/runtime/server/utils/activity-query.d.ts +28 -0
  322. package/dist/runtime/server/utils/activity-query.js +70 -0
  323. package/dist/runtime/server/utils/api-keys.d.ts +48 -0
  324. package/dist/runtime/server/utils/api-keys.js +67 -0
  325. package/dist/runtime/server/utils/authz.d.ts +50 -0
  326. package/dist/runtime/server/utils/authz.js +60 -0
  327. package/dist/runtime/server/utils/db/users.d.ts +91 -0
  328. package/dist/runtime/server/utils/db/users.js +128 -0
  329. package/dist/runtime/server/utils/db.d.ts +10 -0
  330. package/dist/runtime/server/utils/db.js +5 -0
  331. package/dist/runtime/server/utils/frogger-adapter.d.ts +40 -0
  332. package/dist/runtime/server/utils/frogger-adapter.js +97 -0
  333. package/dist/runtime/server/utils/groups.d.ts +35 -0
  334. package/dist/runtime/server/utils/groups.js +59 -0
  335. package/dist/runtime/server/utils/ingest-cors.d.ts +23 -0
  336. package/dist/runtime/server/utils/ingest-cors.js +27 -0
  337. package/dist/runtime/server/utils/journey.d.ts +20 -0
  338. package/dist/runtime/server/utils/journey.js +44 -0
  339. package/dist/runtime/server/utils/logs.d.ts +50 -0
  340. package/dist/runtime/server/utils/logs.js +154 -0
  341. package/dist/runtime/server/utils/loop-guard.d.ts +11 -0
  342. package/dist/runtime/server/utils/loop-guard.js +11 -0
  343. package/dist/runtime/server/utils/migrate.d.ts +21 -0
  344. package/dist/runtime/server/utils/migrate.js +144 -0
  345. package/dist/runtime/server/utils/migration-runner.d.ts +42 -0
  346. package/dist/runtime/server/utils/migration-runner.js +129 -0
  347. package/dist/runtime/server/utils/observe-errors.d.ts +58 -0
  348. package/dist/runtime/server/utils/observe-errors.js +206 -0
  349. package/dist/runtime/server/utils/overview.d.ts +20 -0
  350. package/dist/runtime/server/utils/overview.js +119 -0
  351. package/dist/runtime/server/utils/provisioning.d.ts +62 -0
  352. package/dist/runtime/server/utils/provisioning.js +299 -0
  353. package/dist/runtime/server/utils/rate-limit.d.ts +11 -0
  354. package/dist/runtime/server/utils/rate-limit.js +22 -0
  355. package/dist/runtime/server/utils/require-observe-session.d.ts +15 -0
  356. package/dist/runtime/server/utils/require-observe-session.js +25 -0
  357. package/dist/runtime/server/utils/rollout.d.ts +19 -0
  358. package/dist/runtime/server/utils/rollout.js +56 -0
  359. package/dist/runtime/server/utils/scope.d.ts +14 -0
  360. package/dist/runtime/server/utils/scope.js +28 -0
  361. package/dist/runtime/server/utils/seed.d.ts +18 -0
  362. package/dist/runtime/server/utils/seed.js +70 -0
  363. package/dist/runtime/server/utils/services.d.ts +91 -0
  364. package/dist/runtime/server/utils/services.js +142 -0
  365. package/dist/runtime/server/utils/stats-query.d.ts +40 -0
  366. package/dist/runtime/server/utils/stats-query.js +104 -0
  367. package/dist/runtime/shared/auth/roles.d.ts +34 -0
  368. package/dist/runtime/shared/auth/roles.js +6 -0
  369. package/dist/runtime/shared/auth/schema.d.ts +85 -0
  370. package/dist/runtime/shared/auth/schema.js +41 -0
  371. package/dist/runtime/shared/auth/types.d.ts +68 -0
  372. package/dist/runtime/shared/auth/types.js +0 -0
  373. package/dist/runtime/shared/rbac/capabilities.d.ts +46 -0
  374. package/dist/runtime/shared/rbac/capabilities.js +48 -0
  375. package/dist/runtime/shared/schema/activity.d.ts +77 -0
  376. package/dist/runtime/shared/schema/activity.js +22 -0
  377. package/dist/runtime/shared/schema/adapters/frogger.d.ts +52 -0
  378. package/dist/runtime/shared/schema/adapters/frogger.js +17 -0
  379. package/dist/runtime/shared/schema/batch.d.ts +33 -0
  380. package/dist/runtime/shared/schema/batch.js +9 -0
  381. package/dist/runtime/shared/schema/error-fingerprint.d.ts +53 -0
  382. package/dist/runtime/shared/schema/error-fingerprint.js +47 -0
  383. package/dist/runtime/shared/schema/errors-query.d.ts +136 -0
  384. package/dist/runtime/shared/schema/errors-query.js +47 -0
  385. package/dist/runtime/shared/schema/event.d.ts +48 -0
  386. package/dist/runtime/shared/schema/event.js +41 -0
  387. package/dist/runtime/shared/schema/frogger-map.d.ts +62 -0
  388. package/dist/runtime/shared/schema/frogger-map.js +30 -0
  389. package/dist/runtime/shared/schema/index.d.ts +17 -0
  390. package/dist/runtime/shared/schema/index.js +17 -0
  391. package/dist/runtime/shared/schema/journey.d.ts +99 -0
  392. package/dist/runtime/shared/schema/journey.js +96 -0
  393. package/dist/runtime/shared/schema/levels.d.ts +37 -0
  394. package/dist/runtime/shared/schema/levels.js +72 -0
  395. package/dist/runtime/shared/schema/log-row.d.ts +31 -0
  396. package/dist/runtime/shared/schema/log-row.js +0 -0
  397. package/dist/runtime/shared/schema/logs-query.d.ts +91 -0
  398. package/dist/runtime/shared/schema/logs-query.js +72 -0
  399. package/dist/runtime/shared/schema/migrations.d.ts +34 -0
  400. package/dist/runtime/shared/schema/migrations.js +0 -0
  401. package/dist/runtime/shared/schema/overview.d.ts +78 -0
  402. package/dist/runtime/shared/schema/overview.js +9 -0
  403. package/dist/runtime/shared/schema/provisioning.d.ts +230 -0
  404. package/dist/runtime/shared/schema/provisioning.js +52 -0
  405. package/dist/runtime/shared/schema/registry.d.ts +115 -0
  406. package/dist/runtime/shared/schema/registry.js +27 -0
  407. package/dist/runtime/shared/schema/rollout.d.ts +103 -0
  408. package/dist/runtime/shared/schema/rollout.js +66 -0
  409. package/dist/runtime/shared/schema/stats.d.ts +64 -0
  410. package/dist/runtime/shared/schema/stats.js +15 -0
  411. package/dist/runtime/shared/schema/tiers.d.ts +5 -0
  412. package/dist/runtime/shared/schema/tiers.js +9 -0
  413. package/dist/runtime/shared/types/module-options.d.ts +119 -0
  414. package/dist/runtime/shared/types/module-options.js +13 -0
  415. package/dist/runtime/shared/types/storage.d.ts +31 -0
  416. package/dist/runtime/shared/types/storage.js +0 -0
  417. package/dist/runtime/shared/utils/format-relative.d.ts +7 -0
  418. package/dist/runtime/shared/utils/format-relative.js +11 -0
  419. package/dist/runtime/shared/utils/frogger-snippet.d.ts +19 -0
  420. package/dist/runtime/shared/utils/frogger-snippet.js +33 -0
  421. package/dist/runtime/shared/utils/observe-config.d.ts +9 -0
  422. package/dist/runtime/shared/utils/observe-config.js +17 -0
  423. package/dist/runtime/shared/utils/period.d.ts +13 -0
  424. package/dist/runtime/shared/utils/period.js +15 -0
  425. package/dist/runtime/shared/utils/slug.d.ts +1 -0
  426. package/dist/runtime/shared/utils/slug.js +5 -0
  427. package/dist/runtime/shared/utils/uuid.d.ts +187 -0
  428. package/dist/runtime/shared/utils/uuid.js +345 -0
  429. package/dist/runtime/types/nuxt-auth-utils-imports.d.ts +25 -0
  430. package/dist/runtime/types/observe-app-imports.d.ts +20 -0
  431. package/dist/runtime/types/session.d.ts +17 -0
  432. package/dist/schema.d.mts +1318 -0
  433. package/dist/schema.mjs +629 -0
  434. package/dist/types.d.mts +3 -0
  435. package/package.json +93 -0
package/README.md ADDED
@@ -0,0 +1,92 @@
1
+ # nuxt-observe
2
+
3
+ [![npm version][npm-version-src]][npm-version-href]
4
+ [![npm downloads][npm-downloads-src]][npm-downloads-href]
5
+ [![License][license-src]][license-href]
6
+ [![Nuxt][nuxt-src]][nuxt-href]
7
+
8
+ Self-hosted observability + service-registry dashboard module for Nuxt.
9
+
10
+ - [✨  Release Notes](/CHANGELOG.md)
11
+
12
+ ## Features
13
+
14
+ - 📊  Self-hosted observability dashboard, mounted at a configurable prefix
15
+ - 🩺  Health endpoint under `/api/observe`
16
+ - 🧩  Zero-config: works out of the box, tune via the `observe` key or `nuxt-observe.config.ts`
17
+
18
+ ## Quick Setup
19
+
20
+ Install the module in your Nuxt application:
21
+
22
+ ```bash
23
+ npx nuxt module add nuxt-observe
24
+ ```
25
+
26
+ Then open the dashboard at `/observe` (change the mount path via `observe.prefix`).
27
+
28
+ ## Documentation
29
+
30
+ Full documentation lives in [`docs/`](./docs) and is built with VitePress:
31
+
32
+ ```bash
33
+ # Start the docs dev server
34
+ pnpm docs:dev
35
+
36
+ # Build the static docs site
37
+ pnpm docs:build
38
+
39
+ # Preview the built site
40
+ pnpm docs:preview
41
+ ```
42
+
43
+ ## Contribution
44
+
45
+ <details>
46
+ <summary>Local development</summary>
47
+
48
+ ```bash
49
+ # Install dependencies
50
+ pnpm install
51
+
52
+ # Generate type stubs
53
+ pnpm dev:prepare
54
+
55
+ # Develop with the playground
56
+ pnpm dev
57
+
58
+ # Build the playground
59
+ pnpm dev:build
60
+
61
+ # Run ESLint
62
+ pnpm lint
63
+
64
+ # Run the fast unit suite (Vitest, node env)
65
+ pnpm test
66
+ pnpm test:watch
67
+
68
+ # Run the Nuxt integration suite (boots the fixture app, exercises the endpoints)
69
+ pnpm test:nuxt
70
+
71
+ # Run the Playwright dashboard e2e suite (needs `npx playwright install chromium` once)
72
+ pnpm test:e2e
73
+
74
+ # Release new version
75
+ pnpm release
76
+ ```
77
+
78
+ </details>
79
+
80
+
81
+ <!-- Badges -->
82
+ [npm-version-src]: https://img.shields.io/npm/v/nuxt-observe/latest.svg?style=flat&colorA=020420&colorB=00DC82
83
+ [npm-version-href]: https://npmjs.com/package/nuxt-observe
84
+
85
+ [npm-downloads-src]: https://img.shields.io/npm/dm/nuxt-observe.svg?style=flat&colorA=020420&colorB=00DC82
86
+ [npm-downloads-href]: https://npm.chart.dev/nuxt-observe
87
+
88
+ [license-src]: https://img.shields.io/npm/l/nuxt-observe.svg?style=flat&colorA=020420&colorB=00DC82
89
+ [license-href]: https://npmjs.com/package/nuxt-observe
90
+
91
+ [nuxt-src]: https://img.shields.io/badge/Nuxt-020420?logo=nuxt
92
+ [nuxt-href]: https://nuxt.com
@@ -0,0 +1,7 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+ import { ModuleOptions } from '../dist/runtime/shared/types/module-options.js';
3
+ export { ModuleOptions } from '../dist/runtime/shared/types/module-options.js';
4
+
5
+ declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
6
+
7
+ export { _default as default };
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "nuxt-observe",
3
+ "configKey": "observe",
4
+ "version": "0.0.2",
5
+ "builder": {
6
+ "@nuxt/module-builder": "1.0.2",
7
+ "unbuild": "3.6.1"
8
+ }
9
+ }
@@ -0,0 +1,393 @@
1
+ import { defineNuxtModule, createResolver, updateRuntimeConfig, addServerImports, addComponentsDir, addImportsDir, addLayout, addServerHandler, addServerPlugin, extendPages, addRouteMiddleware, addTypeTemplate } from '@nuxt/kit';
2
+ import { readFileSync } from 'node:fs';
3
+ import { defu } from 'defu';
4
+ import { DEFAULT_OPTIONS, OBSERVE_API_BASE } from '../dist/runtime/shared/types/module-options.js';
5
+ import { loadObserveConfig } from '../dist/runtime/shared/utils/observe-config.js';
6
+ import { zObserveSeedConfig } from '../dist/runtime/shared/schema/registry.js';
7
+ import { observeUserSchema } from '../dist/runtime/shared/auth/schema.js';
8
+
9
+ const module$1 = defineNuxtModule({
10
+ meta: {
11
+ name: "nuxt-observe",
12
+ configKey: "observe"
13
+ },
14
+ // Declare @nuxt/ui as a module dependency rather than installing it imperatively
15
+ // with installModule(). @nuxt/ui@4 pulls in @nuxt/icon (+ fonts/color-mode) via
16
+ // its own `moduleDependencies`, and Nuxt only recurses into those when @nuxt/ui
17
+ // is itself resolved as a dependency. A bare installModule('@nuxt/ui') skips that
18
+ // recursion, so @nuxt/icon never registers its `#build/nuxt-icon-client-bundle`
19
+ // template and every @nuxt/ui page 500s on the missing virtual module.
20
+ moduleDependencies: {
21
+ "@nuxt/ui": {},
22
+ // nuxt-auth-utils: cookie sessions + scrypt hashPassword/verifyPassword, exposed
23
+ // as Nitro server auto-imports (it has no importable subpath). Registered here for
24
+ // consistency with the @nuxt/ui pattern above.
25
+ "nuxt-auth-utils": {}
26
+ },
27
+ // Defaults live in DEFAULT_OPTIONS and are merged in setup() with defu, so we
28
+ // can still tell a user-set key from a default in later checkpoints.
29
+ defaults: {},
30
+ async setup(_options, nuxt) {
31
+ const resolver = createResolver(import.meta.url);
32
+ nuxt.options.alias = nuxt.options.alias || {};
33
+ nuxt.options.alias["#observe/config"] = resolver.resolve("./runtime/options");
34
+ nuxt.options.alias["#observe/schema"] = resolver.resolve("./runtime/shared/schema/index");
35
+ nuxt.options.alias["#observe/server"] = resolver.resolve("./runtime/server");
36
+ nuxt.options.alias["#observe/app"] = resolver.resolve("./runtime/app");
37
+ const fileConfig = await loadObserveConfig(nuxt.options.rootDir);
38
+ const options = defu(fileConfig ?? {}, _options, DEFAULT_OPTIONS);
39
+ const prefix = options.prefix;
40
+ const pkg = JSON.parse(readFileSync(resolver.resolve("../package.json"), "utf-8"));
41
+ const version = pkg.version ?? "0.0.0";
42
+ const seed = zObserveSeedConfig.parse({
43
+ services: options.services,
44
+ groups: options.groups
45
+ });
46
+ const validatedAuthUsers = (options.auth?.users ?? []).map((u, i) => {
47
+ const r = observeUserSchema.safeParse(u);
48
+ if (!r.success) {
49
+ const who = u?.name ?? "?";
50
+ throw new Error(`[observe] invalid auth user #${i} (${who}): ${r.error.issues[0]?.message}`);
51
+ }
52
+ return r.data;
53
+ });
54
+ const dbPath = options.database.path;
55
+ const jwtOpt = options.auth?.jwt;
56
+ const jwtConfig = jwtOpt ? {
57
+ enabled: jwtOpt.enabled ?? false,
58
+ algorithms: jwtOpt.algorithms ?? ["HS256"],
59
+ secret: jwtOpt.secret ?? "",
60
+ publicKey: jwtOpt.publicKey ?? "",
61
+ jwksUri: jwtOpt.jwksUri ?? "",
62
+ issuer: jwtOpt.issuer ?? "",
63
+ audience: jwtOpt.audience ?? "",
64
+ clockTolerance: jwtOpt.clockTolerance ?? "",
65
+ roleClaim: jwtOpt.roleClaim ?? "observe_role",
66
+ subjectClaim: jwtOpt.subjectClaim ?? "sub",
67
+ assignmentsClaim: jwtOpt.assignmentsClaim ?? "observe_assignment",
68
+ roleMap: jwtOpt.roleMap ?? {},
69
+ claimsSource: jwtOpt.claimsSource ?? "token"
70
+ } : void 0;
71
+ updateRuntimeConfig({
72
+ observe: {
73
+ version,
74
+ retentionDays: options.retentionDays,
75
+ database: { path: dbPath },
76
+ ingest: options.ingest,
77
+ // CP13 rollout regression thresholds (server-only, nothing secret). Read in the
78
+ // regressions handler via useRuntimeConfig(event).observe.rollout.regression.
79
+ rollout: {
80
+ regression: { minEvents: 50, errorRateDelta: 0.05, errorRateMultiplier: 1.5, baselineWindowMs: 864e5 }
81
+ },
82
+ // CP14 error-grouping regression heuristic thresholds (server-only). Read in the
83
+ // errors handlers via useRuntimeConfig(event).observe.errors.
84
+ errors: { activeWindowMs: 864e5, regressionGapMs: 2592e5 },
85
+ services: seed.services ?? [],
86
+ groups: seed.groups ?? [],
87
+ // Server-only auth block: provider selection + the validated user seed
88
+ // (passwordHash / passwordEnv only). No plaintext, no public exposure.
89
+ auth: {
90
+ provider: options.auth?.provider ?? "config",
91
+ users: validatedAuthUsers,
92
+ ...jwtConfig ? { jwt: jwtConfig } : {}
93
+ }
94
+ },
95
+ public: {
96
+ observe: {
97
+ prefix,
98
+ apiBase: OBSERVE_API_BASE,
99
+ // What the login page + global middleware need; provider/users stay server-side.
100
+ loginPath: `${prefix}/login`,
101
+ // Optional override for the copy-paste ingest snippet on reverse-proxied installs.
102
+ ingestBaseUrl: options.ingest?.ingestBaseUrl ?? ""
103
+ }
104
+ }
105
+ });
106
+ nuxt.hook("nitro:config", (nitroConfig) => {
107
+ nitroConfig.experimental = defu(nitroConfig.experimental, { database: true, tasks: true });
108
+ nitroConfig.database = defu(nitroConfig.database, {
109
+ observe: { connector: "better-sqlite3", options: { path: dbPath } }
110
+ });
111
+ nitroConfig.tasks = defu(nitroConfig.tasks, {
112
+ "observe:purge": {
113
+ handler: resolver.resolve("./runtime/server/tasks/purge"),
114
+ description: "Delete observe logs older than retentionDays"
115
+ },
116
+ // Manual/one-shot backfill (NOT scheduled): recompute error fingerprints for rows
117
+ // with a NULL or non-v1 fingerprint, run on demand or after an algorithm bump.
118
+ "observe:backfill-fingerprints": {
119
+ handler: resolver.resolve("./runtime/server/tasks/backfill-fingerprints"),
120
+ description: "Recompute error fingerprints for rows with NULL or non-v1 fingerprint"
121
+ }
122
+ });
123
+ nitroConfig.scheduledTasks = defu(nitroConfig.scheduledTasks, {
124
+ "0 * * * *": ["observe:purge"]
125
+ });
126
+ });
127
+ addServerImports([
128
+ { name: "getApiKeyFromEvent", from: resolver.resolve("./runtime/server/utils/api-keys") },
129
+ { name: "resolveServiceIdByKey", from: resolver.resolve("./runtime/server/utils/api-keys") },
130
+ { name: "requireObserveSession", from: resolver.resolve("./runtime/server/utils/require-observe-session") },
131
+ { name: "getAuthProvider", from: resolver.resolve("./runtime/server/auth/provider") },
132
+ // CP6 RBAC: the choke point + scope helpers host-app routes (and CP7-CP11) compose.
133
+ { name: "requireCapability", from: resolver.resolve("./runtime/server/utils/authz") },
134
+ { name: "serviceScopeFilter", from: resolver.resolve("./runtime/server/utils/authz") },
135
+ { name: "assertServiceInScope", from: resolver.resolve("./runtime/server/utils/authz") },
136
+ { name: "getAllowedServiceIds", from: resolver.resolve("./runtime/server/utils/authz") }
137
+ ]);
138
+ nuxt.options.css = nuxt.options.css || [];
139
+ nuxt.options.css.push(resolver.resolve("./runtime/app/assets/css/main.css"));
140
+ addComponentsDir({
141
+ path: resolver.resolve("./runtime/app/components"),
142
+ pathPrefix: false,
143
+ global: true
144
+ });
145
+ addImportsDir(resolver.resolve("./runtime/app/composables"));
146
+ addLayout({
147
+ src: resolver.resolve("./runtime/app/layouts/observe.vue"),
148
+ filename: "observe-layout.vue"
149
+ }, "observe");
150
+ addServerHandler({
151
+ route: `${OBSERVE_API_BASE}/health`,
152
+ handler: resolver.resolve("./runtime/server/api/observe/health.get")
153
+ });
154
+ addServerHandler({
155
+ route: `${OBSERVE_API_BASE}/ingest`,
156
+ handler: resolver.resolve("./runtime/server/api/observe/ingest")
157
+ });
158
+ addServerHandler({
159
+ route: `${OBSERVE_API_BASE}/ingest/frogger`,
160
+ handler: resolver.resolve("./runtime/server/api/observe/ingest/frogger")
161
+ });
162
+ addServerHandler({
163
+ route: `${OBSERVE_API_BASE}/auth/login`,
164
+ handler: resolver.resolve("./runtime/server/api/observe/auth/login.post")
165
+ });
166
+ addServerHandler({
167
+ route: `${OBSERVE_API_BASE}/auth/logout`,
168
+ handler: resolver.resolve("./runtime/server/api/observe/auth/logout.post")
169
+ });
170
+ addServerHandler({
171
+ route: `${OBSERVE_API_BASE}/auth/me`,
172
+ handler: resolver.resolve("./runtime/server/api/observe/auth/me.get")
173
+ });
174
+ addServerHandler({
175
+ route: `${OBSERVE_API_BASE}/overview`,
176
+ method: "get",
177
+ handler: resolver.resolve("./runtime/server/api/observe/overview.get")
178
+ });
179
+ addServerHandler({
180
+ route: `${OBSERVE_API_BASE}/stats`,
181
+ method: "get",
182
+ handler: resolver.resolve("./runtime/server/api/observe/stats.get")
183
+ });
184
+ addServerHandler({
185
+ route: `${OBSERVE_API_BASE}/activity`,
186
+ method: "get",
187
+ handler: resolver.resolve("./runtime/server/api/observe/activity.get")
188
+ });
189
+ addServerHandler({
190
+ route: `${OBSERVE_API_BASE}/logs`,
191
+ method: "get",
192
+ handler: resolver.resolve("./runtime/server/api/observe/logs.get")
193
+ });
194
+ addServerHandler({
195
+ route: `${OBSERVE_API_BASE}/logs/:id`,
196
+ method: "get",
197
+ handler: resolver.resolve("./runtime/server/api/observe/logs/[id].get")
198
+ });
199
+ addServerHandler({
200
+ route: `${OBSERVE_API_BASE}/facets`,
201
+ method: "get",
202
+ handler: resolver.resolve("./runtime/server/api/observe/facets.get")
203
+ });
204
+ addServerHandler({
205
+ route: `${OBSERVE_API_BASE}/journey`,
206
+ method: "get",
207
+ handler: resolver.resolve("./runtime/server/api/observe/journey.get")
208
+ });
209
+ addServerHandler({
210
+ route: `${OBSERVE_API_BASE}/errors`,
211
+ method: "get",
212
+ handler: resolver.resolve("./runtime/server/api/observe/errors/index.get")
213
+ });
214
+ addServerHandler({
215
+ route: `${OBSERVE_API_BASE}/errors/:fingerprint`,
216
+ method: "get",
217
+ handler: resolver.resolve("./runtime/server/api/observe/errors/[fingerprint].get")
218
+ });
219
+ addServerHandler({ route: `${OBSERVE_API_BASE}/rollout/versions`, method: "get", handler: resolver.resolve("./runtime/server/api/observe/rollout/versions.get") });
220
+ addServerHandler({ route: `${OBSERVE_API_BASE}/rollout/compare`, method: "get", handler: resolver.resolve("./runtime/server/api/observe/rollout/compare.get") });
221
+ addServerHandler({ route: `${OBSERVE_API_BASE}/rollout/regressions`, method: "get", handler: resolver.resolve("./runtime/server/api/observe/rollout/regressions.get") });
222
+ const provisioningRoutes = [
223
+ { route: `${OBSERVE_API_BASE}/services`, method: "get", handler: "./runtime/server/api/observe/services/index.get" },
224
+ { route: `${OBSERVE_API_BASE}/services`, method: "post", handler: "./runtime/server/api/observe/services/index.post" },
225
+ { route: `${OBSERVE_API_BASE}/services/:id`, method: "get", handler: "./runtime/server/api/observe/services/[id].get" },
226
+ { route: `${OBSERVE_API_BASE}/services/:id`, method: "patch", handler: "./runtime/server/api/observe/services/[id].patch" },
227
+ { route: `${OBSERVE_API_BASE}/services/:id`, method: "delete", handler: "./runtime/server/api/observe/services/[id].delete" },
228
+ { route: `${OBSERVE_API_BASE}/services/:id/restore`, method: "post", handler: "./runtime/server/api/observe/services/[id]/restore.post" },
229
+ { route: `${OBSERVE_API_BASE}/services/:id/keys`, method: "get", handler: "./runtime/server/api/observe/services/[id]/keys/index.get" },
230
+ { route: `${OBSERVE_API_BASE}/services/:id/keys`, method: "post", handler: "./runtime/server/api/observe/services/[id]/keys/index.post" },
231
+ { route: `${OBSERVE_API_BASE}/services/:id/keys/:keyId`, method: "delete", handler: "./runtime/server/api/observe/services/[id]/keys/[keyId].delete" },
232
+ { route: `${OBSERVE_API_BASE}/services/:id/keys/:keyId/rotate`, method: "post", handler: "./runtime/server/api/observe/services/[id]/keys/[keyId]/rotate.post" },
233
+ { route: `${OBSERVE_API_BASE}/services/:id/assignments`, method: "put", handler: "./runtime/server/api/observe/services/[id]/assignments.put" },
234
+ { route: `${OBSERVE_API_BASE}/groups`, method: "get", handler: "./runtime/server/api/observe/groups/index.get" },
235
+ { route: `${OBSERVE_API_BASE}/groups`, method: "post", handler: "./runtime/server/api/observe/groups/index.post" },
236
+ { route: `${OBSERVE_API_BASE}/groups/:id`, method: "get", handler: "./runtime/server/api/observe/groups/[id].get" },
237
+ { route: `${OBSERVE_API_BASE}/groups/:id`, method: "patch", handler: "./runtime/server/api/observe/groups/[id].patch" },
238
+ { route: `${OBSERVE_API_BASE}/groups/:id`, method: "delete", handler: "./runtime/server/api/observe/groups/[id].delete" },
239
+ { route: `${OBSERVE_API_BASE}/groups/:id/services`, method: "put", handler: "./runtime/server/api/observe/groups/[id]/services.put" },
240
+ { route: `${OBSERVE_API_BASE}/groups/:id/assignments`, method: "put", handler: "./runtime/server/api/observe/groups/[id]/assignments.put" },
241
+ { route: `${OBSERVE_API_BASE}/users`, method: "get", handler: "./runtime/server/api/observe/users/index.get" },
242
+ { route: `${OBSERVE_API_BASE}/users`, method: "post", handler: "./runtime/server/api/observe/users/index.post" },
243
+ { route: `${OBSERVE_API_BASE}/users/:id`, method: "get", handler: "./runtime/server/api/observe/users/[id].get" },
244
+ { route: `${OBSERVE_API_BASE}/users/:id`, method: "patch", handler: "./runtime/server/api/observe/users/[id].patch" },
245
+ { route: `${OBSERVE_API_BASE}/users/:id`, method: "delete", handler: "./runtime/server/api/observe/users/[id].delete" },
246
+ { route: `${OBSERVE_API_BASE}/users/:id/assignments`, method: "put", handler: "./runtime/server/api/observe/users/[id]/assignments.put" }
247
+ ];
248
+ for (const r of provisioningRoutes) {
249
+ addServerHandler({ route: r.route, method: r.method, handler: resolver.resolve(r.handler) });
250
+ }
251
+ addServerHandler({
252
+ route: `${OBSERVE_API_BASE}/migrations`,
253
+ method: "get",
254
+ handler: resolver.resolve("./runtime/server/api/observe/migrations/index.get")
255
+ });
256
+ addServerHandler({
257
+ route: `${OBSERVE_API_BASE}/migrations/run`,
258
+ method: "post",
259
+ handler: resolver.resolve("./runtime/server/api/observe/migrations/run.post")
260
+ });
261
+ addServerPlugin(resolver.resolve("./runtime/server/plugins/observe-migrate.server"));
262
+ nuxt.options.pages = true;
263
+ extendPages((pages) => {
264
+ pages.unshift({
265
+ name: "observe-overview",
266
+ path: prefix,
267
+ file: resolver.resolve("./runtime/app/pages/overview.vue"),
268
+ meta: { layout: "observe" }
269
+ });
270
+ pages.push({
271
+ name: "observe-metrics",
272
+ path: `${prefix}/metrics`,
273
+ file: resolver.resolve("./runtime/app/pages/metrics.vue"),
274
+ meta: { layout: "observe" }
275
+ });
276
+ pages.push({
277
+ name: "observe-activity",
278
+ path: `${prefix}/activity`,
279
+ file: resolver.resolve("./runtime/app/pages/activity.vue"),
280
+ meta: { layout: "observe" }
281
+ });
282
+ pages.push({
283
+ name: "observe-logs",
284
+ path: `${prefix}/logs`,
285
+ file: resolver.resolve("./runtime/app/pages/logs.vue"),
286
+ meta: { layout: "observe" }
287
+ });
288
+ pages.push({
289
+ name: "observe-log-detail",
290
+ path: `${prefix}/logs/:id`,
291
+ file: resolver.resolve("./runtime/app/pages/log-detail.vue"),
292
+ meta: { layout: "observe" }
293
+ });
294
+ pages.push({
295
+ name: "observe-journey",
296
+ path: `${prefix}/journey`,
297
+ file: resolver.resolve("./runtime/app/pages/journey.vue"),
298
+ meta: { layout: "observe" }
299
+ });
300
+ pages.push({
301
+ name: "observe-errors",
302
+ path: `${prefix}/errors`,
303
+ file: resolver.resolve("./runtime/app/pages/errors.vue"),
304
+ meta: { layout: "observe" }
305
+ });
306
+ pages.push({
307
+ name: "observe-error-detail",
308
+ path: `${prefix}/errors/:fingerprint`,
309
+ file: resolver.resolve("./runtime/app/pages/error-detail.vue"),
310
+ meta: { layout: "observe" }
311
+ });
312
+ pages.push({
313
+ name: "observe-rollout",
314
+ path: `${prefix}/rollout`,
315
+ file: resolver.resolve("./runtime/app/pages/rollout.vue"),
316
+ meta: { layout: "observe" }
317
+ });
318
+ pages.push({
319
+ name: "observe-settings",
320
+ path: `${prefix}/settings`,
321
+ file: resolver.resolve("./runtime/app/pages/settings/index.vue"),
322
+ meta: { layout: "observe" }
323
+ });
324
+ pages.push({
325
+ name: "observe-settings-services",
326
+ path: `${prefix}/settings/services`,
327
+ file: resolver.resolve("./runtime/app/pages/settings/services.vue"),
328
+ meta: { layout: "observe" }
329
+ });
330
+ pages.push({
331
+ name: "observe-settings-service-detail",
332
+ path: `${prefix}/settings/services/:id`,
333
+ file: resolver.resolve("./runtime/app/pages/settings/service-detail.vue"),
334
+ meta: { layout: "observe" }
335
+ });
336
+ pages.push({
337
+ name: "observe-settings-groups",
338
+ path: `${prefix}/settings/groups`,
339
+ file: resolver.resolve("./runtime/app/pages/settings/groups.vue"),
340
+ meta: { layout: "observe" }
341
+ });
342
+ pages.push({
343
+ name: "observe-settings-group-detail",
344
+ path: `${prefix}/settings/groups/:id`,
345
+ file: resolver.resolve("./runtime/app/pages/settings/group-detail.vue"),
346
+ meta: { layout: "observe" }
347
+ });
348
+ pages.push({
349
+ name: "observe-settings-migrations",
350
+ path: `${prefix}/settings/migrations`,
351
+ file: resolver.resolve("./runtime/app/pages/settings/migrations.vue"),
352
+ meta: { layout: "observe" }
353
+ });
354
+ pages.push({
355
+ name: "observe-settings-users",
356
+ path: `${prefix}/settings/users`,
357
+ file: resolver.resolve("./runtime/app/pages/settings/users/index.vue"),
358
+ meta: { layout: "observe" }
359
+ });
360
+ pages.push({
361
+ name: "observe-settings-user-detail",
362
+ path: `${prefix}/settings/users/:id`,
363
+ file: resolver.resolve("./runtime/app/pages/settings/users/[id].vue"),
364
+ meta: { layout: "observe" }
365
+ });
366
+ pages.push({
367
+ name: "observe-login",
368
+ path: `${prefix}/login`,
369
+ file: resolver.resolve("./runtime/app/pages/login.vue")
370
+ });
371
+ });
372
+ addRouteMiddleware({
373
+ name: "observe-auth",
374
+ path: resolver.resolve("./runtime/app/middleware/observe-auth.global"),
375
+ global: true
376
+ });
377
+ const principalTypePath = resolver.resolve("./runtime/shared/auth/types");
378
+ addTypeTemplate({
379
+ filename: "types/observe-session.d.ts",
380
+ getContents: () => [
381
+ `import type { Principal } from '${principalTypePath}'`,
382
+ `declare module '#auth-utils' {`,
383
+ ` interface User extends Principal {}`,
384
+ ` interface UserSession { user: User, loggedInAt: number }`,
385
+ `}`,
386
+ `export {}`,
387
+ ``
388
+ ].join("\n")
389
+ }, { nuxt: true, nitro: true });
390
+ }
391
+ });
392
+
393
+ export { module$1 as default };
@@ -0,0 +1 @@
1
+ @import "tailwindcss";@import "@nuxt/ui";@source "../../";:root{--observe-viz-1:#2a78d6;--observe-viz-2:#1baf7a;--observe-viz-3:#eda100;--observe-viz-4:#008300;--observe-viz-5:#4a3aa7;--observe-viz-6:#e34948;--observe-viz-7:#e87ba4;--observe-viz-8:#eb6834;--observe-viz-muted:var(--ui-color-neutral-300)}.dark{--observe-viz-1:#3987e5;--observe-viz-2:#199e70;--observe-viz-3:#c98500;--observe-viz-4:#008300;--observe-viz-5:#9085e9;--observe-viz-6:#e66767;--observe-viz-7:#d55181;--observe-viz-8:#d95926;--observe-viz-muted:var(--ui-color-neutral-600)}.observe-chart text{fill:var(--ui-text-muted);font-size:11px}.observe-chart .domain{stroke:var(--ui-border-accented)}.observe-chart .tick line{stroke:none}.observe-chart .observe-grid line{shape-rendering:crispedges;stroke:var(--ui-border)}.observe-chart .observe-crosshair{shape-rendering:crispedges;stroke:var(--ui-border-accented)}.observe-chart-tooltip{background:var(--ui-bg-elevated);border-radius:var(--ui-radius);box-shadow:0 0 0 1px var(--ui-border),0 4px 12px rgba(0,0,0,.12);font-size:.75rem;line-height:1.4;max-width:16rem;padding:.5rem .625rem;pointer-events:none;position:absolute;z-index:10}.observe-chart-tooltip-title{color:var(--ui-text-muted);margin-bottom:.25rem}.observe-chart-tooltip-row{align-items:center;display:flex;gap:.375rem;white-space:nowrap}.observe-chart-tooltip-key{border-radius:1.5px;flex:none;height:3px;width:10px}.observe-chart-tooltip-value{color:var(--ui-text-highlighted);font-variant-numeric:tabular-nums;font-weight:600}.observe-chart-tooltip-label{color:var(--ui-text-muted)}
@@ -0,0 +1,13 @@
1
+ import type { OverviewActivityItem } from '../../shared/schema/overview.js';
2
+ /**
3
+ * Compact live feed for the overview's narrow column: one line per event (level dot,
4
+ * message, age) with an internal scroll so the page stays short. Errors get a second
5
+ * meta line; everything else keeps its detail in the row tooltip. Alarm colours are
6
+ * reserved for error/warn so the column stays quiet next to the services table.
7
+ */
8
+ type __VLS_Props = {
9
+ items: OverviewActivityItem[];
10
+ };
11
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
@@ -0,0 +1,77 @@
1
+ <script setup>
2
+ import { levelName } from "../../shared/schema/levels";
3
+ import { formatRelative } from "../../shared/utils/format-relative";
4
+ defineProps({
5
+ items: { type: Array, required: true }
6
+ });
7
+ const LEVEL_DOTS = {
8
+ 0: "bg-error",
9
+ 1: "bg-warning",
10
+ 3: "bg-info"
11
+ };
12
+ function rowTitle(item) {
13
+ const parts = [levelName(item.level), item.service];
14
+ if (item.route) parts.push(item.route);
15
+ const who = item.user ?? item.session;
16
+ if (who) parts.push(who);
17
+ if (item.traceId) parts.push(`trace ${item.traceId}`);
18
+ return parts.join(" \xB7 ");
19
+ }
20
+ </script>
21
+
22
+ <template>
23
+ <section>
24
+ <div class="flex items-baseline justify-between mb-2">
25
+ <h2 class="text-xs font-semibold uppercase tracking-wider text-muted">
26
+ Activity
27
+ </h2>
28
+ <span
29
+ v-if="items.length"
30
+ class="text-xs text-muted"
31
+ >latest {{ items.length }}</span>
32
+ </div>
33
+
34
+ <UCard :ui="{ body: 'p-0 sm:p-0' }">
35
+ <p
36
+ v-if="items.length === 0"
37
+ class="text-sm text-muted p-4"
38
+ >
39
+ No events in this window.
40
+ </p>
41
+
42
+ <ul
43
+ v-else
44
+ class="divide-y divide-default max-h-[32rem] overflow-y-auto"
45
+ >
46
+ <li
47
+ v-for="(item, i) in items"
48
+ :key="i"
49
+ class="px-4 py-2 flex items-start gap-2.5"
50
+ :title="rowTitle(item)"
51
+ >
52
+ <span
53
+ class="size-2 rounded-full shrink-0 mt-1.5"
54
+ :class="LEVEL_DOTS[item.level] ?? 'bg-accented'"
55
+ />
56
+ <div class="min-w-0 flex-1">
57
+ <p class="text-sm truncate">
58
+ <span
59
+ v-if="item.errorName"
60
+ class="font-medium"
61
+ >{{ item.errorName }}: </span>{{ item.message }}
62
+ </p>
63
+ <p
64
+ v-if="item.level === 0"
65
+ class="text-xs text-muted mt-0.5 truncate"
66
+ >
67
+ {{ item.service }}<span v-if="item.route"> · {{ item.route }}</span><span v-if="item.user || item.session"> · {{ item.user ?? item.session }}</span>
68
+ </p>
69
+ </div>
70
+ <span class="text-xs text-muted shrink-0 tabular-nums mt-0.5">
71
+ {{ formatRelative(item.time) }}
72
+ </span>
73
+ </li>
74
+ </ul>
75
+ </UCard>
76
+ </section>
77
+ </template>
@@ -0,0 +1,13 @@
1
+ import type { OverviewActivityItem } from '../../shared/schema/overview.js';
2
+ /**
3
+ * Compact live feed for the overview's narrow column: one line per event (level dot,
4
+ * message, age) with an internal scroll so the page stays short. Errors get a second
5
+ * meta line; everything else keeps its detail in the row tooltip. Alarm colours are
6
+ * reserved for error/warn so the column stays quiet next to the services table.
7
+ */
8
+ type __VLS_Props = {
9
+ items: OverviewActivityItem[];
10
+ };
11
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
@@ -0,0 +1,30 @@
1
+ import type { ActivityItem, ActivitySort } from '../../shared/schema/activity.js';
2
+ /**
3
+ * The ranked top-hits list (CP10), styled to sit alongside ObserveServicesTable /
4
+ * ObserveLogsTable. Sort round-trips to the server (client-sorting a truncated top-N would
5
+ * be wrong), so the header buttons just set the sort model. Each key drills through to the
6
+ * logs explorer, gated on the route existing so the component is inert if CP9 is ever absent.
7
+ * Two empty-states: `degraded` (events exist but carry no route/feature, the CP15 emit gap)
8
+ * and the plain no-activity state.
9
+ */
10
+ type __VLS_Props = {
11
+ items: ActivityItem[];
12
+ total: number;
13
+ degraded: boolean;
14
+ pending?: boolean;
15
+ compact?: boolean;
16
+ };
17
+ type __VLS_ModelProps = {
18
+ 'sort': ActivitySort;
19
+ 'q'?: string;
20
+ };
21
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
22
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
23
+ "update:sort": (value: "count" | "errors" | "errorRate" | "lastSeen") => any;
24
+ "update:q": (value: string) => any;
25
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
26
+ "onUpdate:sort"?: ((value: "count" | "errors" | "errorRate" | "lastSeen") => any) | undefined;
27
+ "onUpdate:q"?: ((value: string) => any) | undefined;
28
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
29
+ declare const _default: typeof __VLS_export;
30
+ export default _default;