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
@@ -0,0 +1,145 @@
1
+ <script setup>
2
+ import { ref, computed } from "vue";
3
+ import { formatRelative } from "../../../shared/utils/format-relative";
4
+ import { useObserveApiKeys } from "../../composables/useObserveApiKeys";
5
+ const props = defineProps({
6
+ serviceId: { type: String, required: true },
7
+ canManage: { type: Boolean, required: true }
8
+ });
9
+ const { data, pending, refresh, mint, rotate, revoke } = useObserveApiKeys(props.serviceId);
10
+ const newLabel = ref("");
11
+ const busy = ref(false);
12
+ const minted = ref(null);
13
+ const revealOpen = ref(false);
14
+ async function onMint() {
15
+ const label = newLabel.value.trim();
16
+ if (!label || busy.value) return;
17
+ busy.value = true;
18
+ try {
19
+ minted.value = await mint(label);
20
+ revealOpen.value = true;
21
+ newLabel.value = "";
22
+ await refresh();
23
+ } finally {
24
+ busy.value = false;
25
+ }
26
+ }
27
+ async function onRotate(key) {
28
+ if (busy.value) return;
29
+ busy.value = true;
30
+ try {
31
+ minted.value = await rotate(key.id, key.label ?? "rotated");
32
+ revealOpen.value = true;
33
+ await refresh();
34
+ } finally {
35
+ busy.value = false;
36
+ }
37
+ }
38
+ async function onRevoke(key) {
39
+ if (busy.value) return;
40
+ busy.value = true;
41
+ try {
42
+ await revoke(key.id);
43
+ await refresh();
44
+ } finally {
45
+ busy.value = false;
46
+ }
47
+ }
48
+ const columns = computed(() => [
49
+ { id: "prefix", accessorKey: "keyPrefix", header: "Key" },
50
+ { id: "label", accessorKey: "label", header: "Label" },
51
+ { id: "created", accessorKey: "createdAt", header: "Created" },
52
+ { id: "lastUsed", accessorKey: "lastUsedAt", header: "Last used" },
53
+ { id: "status", header: "Status" },
54
+ ...props.canManage ? [{ id: "actions", header: "" }] : []
55
+ ]);
56
+ </script>
57
+
58
+ <template>
59
+ <section class="space-y-3">
60
+ <div class="flex items-center justify-between">
61
+ <h3 class="text-sm font-semibold">
62
+ Ingest keys
63
+ </h3>
64
+ </div>
65
+
66
+ <div
67
+ v-if="canManage"
68
+ class="flex items-center gap-2"
69
+ >
70
+ <UInput
71
+ v-model="newLabel"
72
+ placeholder="Key label (e.g. production)"
73
+ class="flex-1"
74
+ @keydown.enter="onMint"
75
+ />
76
+ <UButton
77
+ icon="i-lucide-key-round"
78
+ label="Mint key"
79
+ :loading="busy"
80
+ :disabled="!newLabel.trim()"
81
+ @click="onMint"
82
+ />
83
+ </div>
84
+
85
+ <UCard :ui="{ body: 'p-0 sm:p-0' }">
86
+ <UTable
87
+ :data="data ?? []"
88
+ :columns="columns"
89
+ :loading="pending"
90
+ empty="No keys yet."
91
+ >
92
+ <template #prefix-cell="{ row }">
93
+ <span class="font-mono text-xs">{{ row.original.keyPrefix }}…</span>
94
+ </template>
95
+ <template #label-cell="{ row }">
96
+ {{ row.original.label ?? "\u2014" }}
97
+ </template>
98
+ <template #created-cell="{ row }">
99
+ <span class="text-muted">{{ formatRelative(row.original.createdAt) }}</span>
100
+ </template>
101
+ <template #lastUsed-cell="{ row }">
102
+ <span class="text-muted">{{ row.original.lastUsedAt ? formatRelative(row.original.lastUsedAt) : "never" }}</span>
103
+ </template>
104
+ <template #status-cell="{ row }">
105
+ <UBadge
106
+ :color="row.original.revokedAt ? 'neutral' : 'success'"
107
+ variant="subtle"
108
+ size="sm"
109
+ :label="row.original.revokedAt ? 'Revoked' : 'Active'"
110
+ />
111
+ </template>
112
+ <template #actions-cell="{ row }">
113
+ <div
114
+ v-if="!row.original.revokedAt"
115
+ class="flex justify-end gap-1"
116
+ >
117
+ <UButton
118
+ icon="i-lucide-refresh-cw"
119
+ color="neutral"
120
+ variant="ghost"
121
+ size="xs"
122
+ label="Rotate"
123
+ :disabled="busy"
124
+ @click="onRotate(row.original)"
125
+ />
126
+ <UButton
127
+ icon="i-lucide-ban"
128
+ color="error"
129
+ variant="ghost"
130
+ size="xs"
131
+ label="Revoke"
132
+ :disabled="busy"
133
+ @click="onRevoke(row.original)"
134
+ />
135
+ </div>
136
+ </template>
137
+ </UTable>
138
+ </UCard>
139
+
140
+ <ObserveApiKeyRevealModal
141
+ v-model:open="revealOpen"
142
+ :minted="minted"
143
+ />
144
+ </section>
145
+ </template>
@@ -0,0 +1,8 @@
1
+ /** List + mint/rotate/revoke for one service's ingest keys. Read-only unless canManage. */
2
+ type __VLS_Props = {
3
+ serviceId: string;
4
+ canManage: boolean;
5
+ };
6
+ 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>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
@@ -0,0 +1,19 @@
1
+ import type { MintedKey } from '../../../shared/schema/provisioning.js';
2
+ type __VLS_Props = {
3
+ minted: MintedKey | null;
4
+ };
5
+ type __VLS_ModelProps = {
6
+ /**
7
+ * Shows a freshly minted key's plaintext EXACTLY ONCE. The plaintext is never re-fetched
8
+ * (the server only stores a hash), so this modal is the sole opportunity to copy it.
9
+ */
10
+ 'open': boolean;
11
+ };
12
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
13
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
+ "update:open": (value: boolean) => any;
15
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
16
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
17
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
@@ -0,0 +1,106 @@
1
+ <script setup>
2
+ import { ref } from "vue";
3
+ const open = defineModel("open", { type: Boolean, ...{ required: true } });
4
+ defineProps({
5
+ minted: { type: [Object, null], required: true }
6
+ });
7
+ const copied = ref(null);
8
+ async function copy(what, value) {
9
+ try {
10
+ await navigator.clipboard.writeText(value);
11
+ copied.value = what;
12
+ setTimeout(() => {
13
+ if (copied.value === what) copied.value = null;
14
+ }, 1500);
15
+ } catch {
16
+ }
17
+ }
18
+ </script>
19
+
20
+ <template>
21
+ <UModal
22
+ v-model:open="open"
23
+ title="Ingest key created"
24
+ description="Copy it now — it will not be shown again."
25
+ :dismissible="false"
26
+ >
27
+ <template #body>
28
+ <div
29
+ v-if="minted"
30
+ class="space-y-4"
31
+ >
32
+ <UAlert
33
+ color="warning"
34
+ variant="subtle"
35
+ icon="i-lucide-key-round"
36
+ title="Store this key securely"
37
+ description="Only a hash is kept on the server. If you lose it, rotate to mint a new one."
38
+ />
39
+
40
+ <div class="space-y-1">
41
+ <div class="text-xs font-medium text-muted">
42
+ API key
43
+ </div>
44
+ <div class="flex items-center gap-2">
45
+ <UInput
46
+ :model-value="minted.key"
47
+ readonly
48
+ class="flex-1 font-mono"
49
+ />
50
+ <UButton
51
+ :icon="copied === 'key' ? 'i-lucide-check' : 'i-lucide-copy'"
52
+ color="neutral"
53
+ variant="subtle"
54
+ @click="copy('key', minted.key)"
55
+ />
56
+ </div>
57
+ </div>
58
+
59
+ <div class="space-y-1">
60
+ <div class="text-xs font-medium text-muted">
61
+ Ingest URL
62
+ </div>
63
+ <div class="flex items-center gap-2">
64
+ <UInput
65
+ :model-value="minted.ingestUrl"
66
+ readonly
67
+ class="flex-1 font-mono text-xs"
68
+ />
69
+ <UButton
70
+ :icon="copied === 'url' ? 'i-lucide-check' : 'i-lucide-copy'"
71
+ color="neutral"
72
+ variant="subtle"
73
+ @click="copy('url', minted.ingestUrl)"
74
+ />
75
+ </div>
76
+ </div>
77
+
78
+ <div class="space-y-1">
79
+ <div class="flex items-center justify-between">
80
+ <div class="text-xs font-medium text-muted">
81
+ Server plugin snippet
82
+ </div>
83
+ <UButton
84
+ :icon="copied === 'snippet' ? 'i-lucide-check' : 'i-lucide-copy'"
85
+ color="neutral"
86
+ variant="ghost"
87
+ size="xs"
88
+ :label="copied === 'snippet' ? 'Copied' : 'Copy'"
89
+ @click="copy('snippet', minted.snippet.serverPluginSnippet)"
90
+ />
91
+ </div>
92
+ <pre class="overflow-x-auto rounded-md bg-elevated p-3 text-xs"><code>{{ minted.snippet.serverPluginSnippet }}</code></pre>
93
+ </div>
94
+ </div>
95
+
96
+ <div class="flex justify-end pt-2">
97
+ <UButton
98
+ label="Done"
99
+ @click="() => {
100
+ open = false;
101
+ }"
102
+ />
103
+ </div>
104
+ </template>
105
+ </UModal>
106
+ </template>
@@ -0,0 +1,19 @@
1
+ import type { MintedKey } from '../../../shared/schema/provisioning.js';
2
+ type __VLS_Props = {
3
+ minted: MintedKey | null;
4
+ };
5
+ type __VLS_ModelProps = {
6
+ /**
7
+ * Shows a freshly minted key's plaintext EXACTLY ONCE. The plaintext is never re-fetched
8
+ * (the server only stores a hash), so this modal is the sole opportunity to copy it.
9
+ */
10
+ 'open': boolean;
11
+ };
12
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
13
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
+ "update:open": (value: boolean) => any;
15
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
16
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
17
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Read-only in phase 1: assignment is derived from observe.auth.users, and the config
3
+ * auth provider never reads the runtime assignment tables, so a write here would no-op
4
+ * until CP16 ships the DB provider (CP11 §11 R1). We surface who is assigned and where
5
+ * to change it, rather than offering a control that silently does nothing.
6
+ */
7
+ type __VLS_Props = {
8
+ serviceSlug: string;
9
+ };
10
+ 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>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,67 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ import { useObserveAssignments } from "../../composables/useObserveAssignments";
4
+ const props = defineProps({
5
+ serviceSlug: { type: String, required: true }
6
+ });
7
+ const { assignedTo, pending, writable } = useObserveAssignments();
8
+ const users = computed(() => assignedTo(props.serviceSlug));
9
+ </script>
10
+
11
+ <template>
12
+ <section class="space-y-2">
13
+ <div class="flex items-center justify-between">
14
+ <h3 class="text-sm font-semibold">
15
+ Assigned users
16
+ </h3>
17
+ <UBadge
18
+ v-if="!writable"
19
+ color="neutral"
20
+ variant="subtle"
21
+ size="sm"
22
+ icon="i-lucide-lock"
23
+ label="managed in config"
24
+ />
25
+ </div>
26
+
27
+ <div
28
+ v-if="pending"
29
+ class="text-xs text-muted"
30
+ >
31
+ Loading…
32
+ </div>
33
+ <div
34
+ v-else-if="!users.length"
35
+ class="text-xs text-muted"
36
+ >
37
+ No managers or viewers are assigned to this service. Admins always have access.
38
+ </div>
39
+ <ul
40
+ v-else
41
+ class="space-y-1"
42
+ >
43
+ <li
44
+ v-for="u in users"
45
+ :key="u.id"
46
+ class="flex items-center gap-2 text-sm"
47
+ >
48
+ <UBadge
49
+ color="neutral"
50
+ variant="subtle"
51
+ size="sm"
52
+ :label="u.role"
53
+ />
54
+ <span>{{ u.name }}</span>
55
+ <span
56
+ v-if="u.assignment.services.includes('*')"
57
+ class="text-xs text-muted"
58
+ >(all services)</span>
59
+ </li>
60
+ </ul>
61
+
62
+ <p class="text-xs text-muted">
63
+ Assignment is declared in <code class="font-mono">observe.auth.users</code>.
64
+ Runtime assignment management arrives in a later checkpoint.
65
+ </p>
66
+ </section>
67
+ </template>
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Read-only in phase 1: assignment is derived from observe.auth.users, and the config
3
+ * auth provider never reads the runtime assignment tables, so a write here would no-op
4
+ * until CP16 ships the DB provider (CP11 §11 R1). We surface who is assigned and where
5
+ * to change it, rather than offering a control that silently does nothing.
6
+ */
7
+ type __VLS_Props = {
8
+ serviceSlug: string;
9
+ };
10
+ 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>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,18 @@
1
+ type __VLS_Props = {
2
+ loading?: boolean;
3
+ initialName?: string;
4
+ };
5
+ type __VLS_ModelProps = {
6
+ /** Create or rename a group. `initialName` set => edit mode (title/label change only). */
7
+ 'open': boolean;
8
+ };
9
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
10
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ submit: (name: string) => any;
12
+ "update:open": (value: boolean) => any;
13
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
14
+ onSubmit?: ((name: string) => any) | undefined;
15
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
16
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
@@ -0,0 +1,60 @@
1
+ <script setup>
2
+ import { reactive, watch } from "vue";
3
+ import { groupCreateSchema } from "../../../shared/schema/provisioning";
4
+ const open = defineModel("open", { type: Boolean, ...{ required: true } });
5
+ const props = defineProps({
6
+ loading: { type: Boolean, required: false },
7
+ initialName: { type: String, required: false }
8
+ });
9
+ const emit = defineEmits(["submit"]);
10
+ const state = reactive({ name: props.initialName ?? "" });
11
+ watch(open, (v) => {
12
+ if (v) state.name = props.initialName ?? "";
13
+ });
14
+ function onSubmit(_e) {
15
+ emit("submit", state.name.trim());
16
+ }
17
+ </script>
18
+
19
+ <template>
20
+ <UModal
21
+ v-model:open="open"
22
+ :title="props.initialName ? 'Rename group' : 'New group'"
23
+ >
24
+ <template #body>
25
+ <UForm
26
+ :schema="groupCreateSchema"
27
+ :state="state"
28
+ class="space-y-4"
29
+ @submit="onSubmit"
30
+ >
31
+ <UFormField
32
+ label="Name"
33
+ name="name"
34
+ required
35
+ >
36
+ <UInput
37
+ v-model="state.name"
38
+ placeholder="Frontend"
39
+ autofocus
40
+ />
41
+ </UFormField>
42
+ <div class="flex justify-end gap-2">
43
+ <UButton
44
+ color="neutral"
45
+ variant="ghost"
46
+ label="Cancel"
47
+ @click="() => {
48
+ open = false;
49
+ }"
50
+ />
51
+ <UButton
52
+ type="submit"
53
+ :label="props.initialName ? 'Save' : 'Create group'"
54
+ :loading="props.loading"
55
+ />
56
+ </div>
57
+ </UForm>
58
+ </template>
59
+ </UModal>
60
+ </template>
@@ -0,0 +1,18 @@
1
+ type __VLS_Props = {
2
+ loading?: boolean;
3
+ initialName?: string;
4
+ };
5
+ type __VLS_ModelProps = {
6
+ /** Create or rename a group. `initialName` set => edit mode (title/label change only). */
7
+ 'open': boolean;
8
+ };
9
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
10
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ submit: (name: string) => any;
12
+ "update:open": (value: boolean) => any;
13
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
14
+ onSubmit?: ((name: string) => any) | undefined;
15
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
16
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
@@ -0,0 +1,20 @@
1
+ import type { ServiceListItem } from '../../../shared/schema/provisioning.js';
2
+ /**
3
+ * Multi-select of which services belong to a group. Membership is the direct
4
+ * services.group_id FK (a service belongs to at most one group), so selecting a
5
+ * service here detaches it from any other group on save.
6
+ */
7
+ type __VLS_Props = {
8
+ services: ServiceListItem[];
9
+ };
10
+ type __VLS_ModelProps = {
11
+ modelValue: string[];
12
+ };
13
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
14
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
+ "update:modelValue": (value: string[]) => any;
16
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
17
+ "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
18
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
@@ -0,0 +1,21 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ const props = defineProps({
4
+ services: { type: Array, required: true }
5
+ });
6
+ const model = defineModel({ type: Array, ...{ required: true } });
7
+ const items = computed(
8
+ () => props.services.filter((s) => !s.deletedAt).map((s) => ({ value: s.id, label: s.name }))
9
+ );
10
+ </script>
11
+
12
+ <template>
13
+ <USelectMenu
14
+ v-model="model"
15
+ :items="items"
16
+ value-key="value"
17
+ multiple
18
+ placeholder="Select services…"
19
+ class="w-full"
20
+ />
21
+ </template>
@@ -0,0 +1,20 @@
1
+ import type { ServiceListItem } from '../../../shared/schema/provisioning.js';
2
+ /**
3
+ * Multi-select of which services belong to a group. Membership is the direct
4
+ * services.group_id FK (a service belongs to at most one group), so selecting a
5
+ * service here detaches it from any other group on save.
6
+ */
7
+ type __VLS_Props = {
8
+ services: ServiceListItem[];
9
+ };
10
+ type __VLS_ModelProps = {
11
+ modelValue: string[];
12
+ };
13
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
14
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
+ "update:modelValue": (value: string[]) => any;
16
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
17
+ "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
18
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
@@ -0,0 +1,15 @@
1
+ type __VLS_ModelProps = {
2
+ /**
3
+ * Repeatable browser-origin rows. The API key authorises ingest; this allowlist ONLY
4
+ * governs browser cross-origin (CORS) calls and never blocks server-side clients. `*`
5
+ * is accepted but flagged as not recommended.
6
+ */
7
+ modelValue: string[];
8
+ };
9
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
+ "update:modelValue": (value: string[]) => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
12
+ "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;
@@ -0,0 +1,63 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ const model = defineModel({ type: Array, ...{ required: true } });
4
+ function add() {
5
+ model.value = [...model.value, ""];
6
+ }
7
+ function update(index, value) {
8
+ const next = [...model.value];
9
+ next[index] = value;
10
+ model.value = next;
11
+ }
12
+ function remove(index) {
13
+ model.value = model.value.filter((_, i) => i !== index);
14
+ }
15
+ const hasWildcard = computed(() => model.value.includes("*"));
16
+ </script>
17
+
18
+ <template>
19
+ <div class="space-y-2">
20
+ <div class="text-xs text-muted">
21
+ The API key authorises ingest; this allowlist only governs browser cross-origin
22
+ calls and never blocks server-side clients.
23
+ </div>
24
+
25
+ <div
26
+ v-for="(origin, i) in model"
27
+ :key="i"
28
+ class="flex items-center gap-2"
29
+ >
30
+ <UInput
31
+ :model-value="origin"
32
+ placeholder="https://app.example.com"
33
+ class="flex-1"
34
+ @update:model-value="update(i, String($event))"
35
+ />
36
+ <UButton
37
+ icon="i-lucide-x"
38
+ color="neutral"
39
+ variant="ghost"
40
+ aria-label="Remove origin"
41
+ @click="remove(i)"
42
+ />
43
+ </div>
44
+
45
+ <UButton
46
+ icon="i-lucide-plus"
47
+ color="neutral"
48
+ variant="subtle"
49
+ size="sm"
50
+ label="Add origin"
51
+ @click="add"
52
+ />
53
+
54
+ <UAlert
55
+ v-if="hasWildcard"
56
+ color="warning"
57
+ variant="subtle"
58
+ icon="i-lucide-triangle-alert"
59
+ title="Wildcard origin"
60
+ description="'*' allows any browser origin to POST logs with this key. Not recommended; prefer explicit origins."
61
+ />
62
+ </div>
63
+ </template>
@@ -0,0 +1,15 @@
1
+ type __VLS_ModelProps = {
2
+ /**
3
+ * Repeatable browser-origin rows. The API key authorises ingest; this allowlist ONLY
4
+ * governs browser cross-origin (CORS) calls and never blocks server-side clients. `*`
5
+ * is accepted but flagged as not recommended.
6
+ */
7
+ modelValue: string[];
8
+ };
9
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
+ "update:modelValue": (value: string[]) => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
12
+ "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;