prismalens 0.3.0 → 0.5.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (612) hide show
  1. package/README.md +21 -347
  2. package/dist/bin/prismalens.js +40 -50
  3. package/dist/chunk-5STPIUCJ.js +150 -0
  4. package/dist/chunk-HPE5CTO4.js +22 -0
  5. package/dist/chunk-JX2QAP6S.js +574 -0
  6. package/dist/chunk-LAYYJBZ5.js +232 -0
  7. package/dist/chunk-PTBCAI34.js +34 -0
  8. package/dist/chunk-TSW5RW5B.js +476 -0
  9. package/dist/chunk-VI32U36Y.js +161 -0
  10. package/dist/src/cli/auth.js +106 -99
  11. package/dist/src/cli/doctor.js +175 -184
  12. package/dist/src/cli/flags.js +6 -32
  13. package/dist/src/cli/grouping.js +10 -227
  14. package/dist/src/cli/init.js +48 -47
  15. package/dist/src/cli/investigate.js +17 -465
  16. package/dist/src/cli/listen.js +471 -286
  17. package/dist/src/cli/report.js +68 -67
  18. package/dist/src/cli/serve.js +262 -30
  19. package/dist/src/cli/status.js +85 -86
  20. package/dist/src/cli/up.js +73 -0
  21. package/node_modules/@prismalens/api/dist/src/app.controller.js +39 -0
  22. package/node_modules/@prismalens/api/dist/src/app.module.js +156 -0
  23. package/node_modules/@prismalens/api/dist/src/core/auth/auth.controller.js +41 -0
  24. package/node_modules/@prismalens/api/dist/src/core/auth/auth.guard.js +57 -0
  25. package/node_modules/@prismalens/api/dist/src/core/auth/auth.module.js +24 -0
  26. package/node_modules/@prismalens/api/dist/src/core/auth/auth.service.js +114 -0
  27. package/node_modules/@prismalens/api/dist/src/core/auth/current-user.decorator.js +10 -0
  28. package/node_modules/@prismalens/api/dist/src/core/auth/index.js +7 -0
  29. package/node_modules/@prismalens/api/dist/src/core/auth/orpc-auth.utils.js +39 -0
  30. package/node_modules/@prismalens/api/dist/src/core/auth/public.decorator.js +4 -0
  31. package/node_modules/@prismalens/api/dist/src/core/auth/session-cookies.js +8 -0
  32. package/node_modules/@prismalens/api/dist/src/core/license/decorators.js +24 -0
  33. package/node_modules/@prismalens/api/dist/src/core/license/license.constants.js +60 -0
  34. package/node_modules/@prismalens/api/dist/src/core/license/license.controller.js +122 -0
  35. package/node_modules/@prismalens/api/dist/src/core/license/license.guard.js +96 -0
  36. package/node_modules/@prismalens/api/dist/src/core/license/license.module.js +37 -0
  37. package/node_modules/@prismalens/api/dist/src/core/license/license.service.js +252 -0
  38. package/node_modules/@prismalens/api/dist/src/core/prisma/prisma.module.js +19 -0
  39. package/node_modules/@prismalens/api/dist/src/core/prisma/prisma.service.js +134 -0
  40. package/node_modules/@prismalens/api/dist/src/core/settings/llm-settings.service.js +438 -0
  41. package/node_modules/@prismalens/api/dist/src/core/settings/settings.controller.js +117 -0
  42. package/node_modules/@prismalens/api/dist/src/core/settings/settings.module.js +24 -0
  43. package/node_modules/@prismalens/api/dist/src/core/settings/settings.service.js +219 -0
  44. package/node_modules/@prismalens/api/dist/src/core/setup/setup.controller.js +134 -0
  45. package/node_modules/@prismalens/api/dist/src/core/setup/setup.module.js +21 -0
  46. package/node_modules/@prismalens/api/dist/src/core/users/dto/create-user.dto.js +30 -0
  47. package/node_modules/@prismalens/api/dist/src/core/users/users.controller.js +14 -0
  48. package/node_modules/@prismalens/api/dist/src/core/users/users.module.js +22 -0
  49. package/node_modules/@prismalens/api/dist/src/core/users/users.service.js +63 -0
  50. package/node_modules/@prismalens/api/dist/src/infrastructure/dev-seed/dev-seed.module.js +21 -0
  51. package/node_modules/@prismalens/api/dist/src/infrastructure/dev-seed/dev-seed.service.js +60 -0
  52. package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/dispatch.module.js +22 -0
  53. package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/dispatch.service.js +154 -0
  54. package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/dispatcher.js +168 -0
  55. package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/event-bus.js +51 -0
  56. package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/event-bus.module.js +19 -0
  57. package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/fork-runner.js +153 -0
  58. package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/job-store.js +198 -0
  59. package/node_modules/@prismalens/api/dist/src/infrastructure/health/health.controller.js +63 -0
  60. package/node_modules/@prismalens/api/dist/src/infrastructure/health/health.module.js +19 -0
  61. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/dto/create-timeline-entry.dto.js +48 -0
  62. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/dto/index.js +5 -0
  63. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/dto/investigation-result.dto.js +75 -0
  64. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/dto/recommendation.dto.js +56 -0
  65. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/dto/update-investigation-status.dto.js +37 -0
  66. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/guards/internal.guard.js +41 -0
  67. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/internal-integrations.controller.js +60 -0
  68. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/internal-investigations.controller.js +111 -0
  69. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/internal-settings.controller.js +49 -0
  70. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/internal-timeline.controller.js +52 -0
  71. package/node_modules/@prismalens/api/dist/src/infrastructure/internal/internal.module.js +39 -0
  72. package/node_modules/@prismalens/api/dist/src/main.js +152 -0
  73. package/node_modules/@prismalens/api/dist/src/middlewares/helmet.middleware.js +34 -0
  74. package/node_modules/@prismalens/api/dist/src/middlewares/host-allowlist.middleware.js +123 -0
  75. package/node_modules/@prismalens/api/dist/src/middlewares/webhook-cors.middleware.js +28 -0
  76. package/node_modules/@prismalens/api/dist/src/middlewares/webhook-raw-body.middleware.js +24 -0
  77. package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/alert-mapping.controller.js +124 -0
  78. package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/alert-mapping.module.js +22 -0
  79. package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/alert-mapping.service.js +331 -0
  80. package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/dto/create-mapping-rule.dto.js +9 -0
  81. package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/dto/index.js +3 -0
  82. package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/dto/test-mapping.dto.js +8 -0
  83. package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/dto/update-mapping-rule.dto.js +9 -0
  84. package/node_modules/@prismalens/api/dist/src/modules/alerts/alerts.controller.js +241 -0
  85. package/node_modules/@prismalens/api/dist/src/modules/alerts/alerts.module.js +26 -0
  86. package/node_modules/@prismalens/api/dist/src/modules/alerts/alerts.service.js +342 -0
  87. package/node_modules/@prismalens/api/dist/src/modules/alerts/dto/create-alert.dto.js +75 -0
  88. package/node_modules/@prismalens/api/dist/src/modules/alerts/dto/index.js +3 -0
  89. package/node_modules/@prismalens/api/dist/src/modules/alerts/dto/update-alert.dto.js +51 -0
  90. package/node_modules/@prismalens/api/dist/src/modules/correlation/correlation.controller.js +108 -0
  91. package/node_modules/@prismalens/api/dist/src/modules/correlation/correlation.module.js +22 -0
  92. package/node_modules/@prismalens/api/dist/src/modules/correlation/correlation.service.js +391 -0
  93. package/node_modules/@prismalens/api/dist/src/modules/correlation/dto/create-correlation-rule.dto.js +97 -0
  94. package/node_modules/@prismalens/api/dist/src/modules/correlation/dto/index.js +3 -0
  95. package/node_modules/@prismalens/api/dist/src/modules/correlation/dto/update-correlation-rule.dto.js +98 -0
  96. package/node_modules/@prismalens/api/dist/src/modules/deployments/deployments.controller.js +95 -0
  97. package/node_modules/@prismalens/api/dist/src/modules/deployments/deployments.module.js +22 -0
  98. package/node_modules/@prismalens/api/dist/src/modules/deployments/deployments.service.js +140 -0
  99. package/node_modules/@prismalens/api/dist/src/modules/deployments/dto/create-deployment.dto.js +92 -0
  100. package/node_modules/@prismalens/api/dist/src/modules/deployments/dto/index.js +3 -0
  101. package/node_modules/@prismalens/api/dist/src/modules/deployments/dto/link-deployment.dto.js +18 -0
  102. package/node_modules/@prismalens/api/dist/src/modules/events/dto/create-event.dto.js +9 -0
  103. package/node_modules/@prismalens/api/dist/src/modules/events/dto/index.js +2 -0
  104. package/node_modules/@prismalens/api/dist/src/modules/events/events.controller.js +65 -0
  105. package/node_modules/@prismalens/api/dist/src/modules/events/events.module.js +20 -0
  106. package/node_modules/@prismalens/api/dist/src/modules/events/events.service.js +124 -0
  107. package/node_modules/@prismalens/api/dist/src/modules/incidents/dto/add-alert.dto.js +4 -0
  108. package/node_modules/@prismalens/api/dist/src/modules/incidents/dto/create-incident.dto.js +11 -0
  109. package/node_modules/@prismalens/api/dist/src/modules/incidents/dto/index.js +3 -0
  110. package/node_modules/@prismalens/api/dist/src/modules/incidents/dto/update-incident.dto.js +13 -0
  111. package/node_modules/@prismalens/api/dist/src/modules/incidents/incidents.controller.js +306 -0
  112. package/node_modules/@prismalens/api/dist/src/modules/incidents/incidents.module.js +28 -0
  113. package/node_modules/@prismalens/api/dist/src/modules/incidents/incidents.service.js +376 -0
  114. package/node_modules/@prismalens/api/dist/src/modules/integrations/crypto/credentials.service.js +52 -0
  115. package/node_modules/@prismalens/api/dist/src/modules/integrations/dto/create-connection.dto.js +102 -0
  116. package/node_modules/@prismalens/api/dist/src/modules/integrations/dto/update-connection.dto.js +96 -0
  117. package/node_modules/@prismalens/api/dist/src/modules/integrations/integrations.controller.js +327 -0
  118. package/node_modules/@prismalens/api/dist/src/modules/integrations/integrations.module.js +32 -0
  119. package/node_modules/@prismalens/api/dist/src/modules/integrations/integrations.service.js +797 -0
  120. package/node_modules/@prismalens/api/dist/src/modules/integrations/oauth/oauth.controller.js +156 -0
  121. package/node_modules/@prismalens/api/dist/src/modules/integrations/oauth/oauth.service.js +240 -0
  122. package/node_modules/@prismalens/api/dist/src/modules/integrations/token-refresh.processor.js +112 -0
  123. package/node_modules/@prismalens/api/dist/src/modules/investigations/dto/create-investigation.dto.js +4 -0
  124. package/node_modules/@prismalens/api/dist/src/modules/investigations/dto/index.js +2 -0
  125. package/node_modules/@prismalens/api/dist/src/modules/investigations/investigation-stream.controller.js +70 -0
  126. package/node_modules/@prismalens/api/dist/src/modules/investigations/investigation-trigger.service.js +330 -0
  127. package/node_modules/@prismalens/api/dist/src/modules/investigations/investigation-update.service.js +158 -0
  128. package/node_modules/@prismalens/api/dist/src/modules/investigations/investigations.controller.js +209 -0
  129. package/node_modules/@prismalens/api/dist/src/modules/investigations/investigations.module.js +48 -0
  130. package/node_modules/@prismalens/api/dist/src/modules/investigations/investigations.service.js +363 -0
  131. package/node_modules/@prismalens/api/dist/src/modules/investigations/sse-writer.js +90 -0
  132. package/node_modules/@prismalens/api/dist/src/modules/investigations/stream-relay.service.js +167 -0
  133. package/node_modules/@prismalens/api/dist/src/modules/openapi/openapi.controller.js +134 -0
  134. package/node_modules/@prismalens/api/dist/src/modules/openapi/openapi.module.js +19 -0
  135. package/node_modules/@prismalens/api/dist/src/modules/overlay/overlay.logic.js +168 -0
  136. package/node_modules/@prismalens/api/dist/src/modules/overlay/overlay.module.js +18 -0
  137. package/node_modules/@prismalens/api/dist/src/modules/overlay/overlay.service.js +242 -0
  138. package/node_modules/@prismalens/api/dist/src/modules/postmortems/dto/index.js +2 -0
  139. package/node_modules/@prismalens/api/dist/src/modules/postmortems/postmortems.controller.js +96 -0
  140. package/node_modules/@prismalens/api/dist/src/modules/postmortems/postmortems.module.js +20 -0
  141. package/node_modules/@prismalens/api/dist/src/modules/postmortems/postmortems.service.js +185 -0
  142. package/node_modules/@prismalens/api/dist/src/modules/recommendations/dto/index.js +2 -0
  143. package/node_modules/@prismalens/api/dist/src/modules/recommendations/dto/update-recommendation.dto.js +32 -0
  144. package/node_modules/@prismalens/api/dist/src/modules/recommendations/recommendations.controller.js +110 -0
  145. package/node_modules/@prismalens/api/dist/src/modules/recommendations/recommendations.module.js +20 -0
  146. package/node_modules/@prismalens/api/dist/src/modules/recommendations/recommendations.service.js +136 -0
  147. package/node_modules/@prismalens/api/dist/src/modules/repositories/dto/create-repository.dto.js +68 -0
  148. package/node_modules/@prismalens/api/dist/src/modules/repositories/dto/index.js +3 -0
  149. package/node_modules/@prismalens/api/dist/src/modules/repositories/dto/link-repository.dto.js +30 -0
  150. package/node_modules/@prismalens/api/dist/src/modules/repositories/repositories.controller.js +105 -0
  151. package/node_modules/@prismalens/api/dist/src/modules/repositories/repositories.module.js +22 -0
  152. package/node_modules/@prismalens/api/dist/src/modules/repositories/repositories.service.js +129 -0
  153. package/node_modules/@prismalens/api/dist/src/modules/service-discovery/dto/accept-bulk-suggestions.dto.js +5 -0
  154. package/node_modules/@prismalens/api/dist/src/modules/service-discovery/dto/accept-suggestion.dto.js +8 -0
  155. package/node_modules/@prismalens/api/dist/src/modules/service-discovery/dto/index.js +3 -0
  156. package/node_modules/@prismalens/api/dist/src/modules/service-discovery/service-discovery.controller.js +127 -0
  157. package/node_modules/@prismalens/api/dist/src/modules/service-discovery/service-discovery.module.js +23 -0
  158. package/node_modules/@prismalens/api/dist/src/modules/service-discovery/service-discovery.service.js +478 -0
  159. package/node_modules/@prismalens/api/dist/src/modules/services/dto/add-dependency.dto.js +32 -0
  160. package/node_modules/@prismalens/api/dist/src/modules/services/dto/create-service.dto.js +75 -0
  161. package/node_modules/@prismalens/api/dist/src/modules/services/dto/index.js +4 -0
  162. package/node_modules/@prismalens/api/dist/src/modules/services/dto/update-service.dto.js +69 -0
  163. package/node_modules/@prismalens/api/dist/src/modules/services/services.controller.js +250 -0
  164. package/node_modules/@prismalens/api/dist/src/modules/services/services.module.js +20 -0
  165. package/node_modules/@prismalens/api/dist/src/modules/services/services.service.js +251 -0
  166. package/node_modules/@prismalens/api/dist/src/modules/timeline/dto/create-timeline-entry.dto.js +60 -0
  167. package/node_modules/@prismalens/api/dist/src/modules/timeline/dto/index.js +2 -0
  168. package/node_modules/@prismalens/api/dist/src/modules/timeline/timeline.controller.js +83 -0
  169. package/node_modules/@prismalens/api/dist/src/modules/timeline/timeline.module.js +20 -0
  170. package/node_modules/@prismalens/api/dist/src/modules/timeline/timeline.service.js +94 -0
  171. package/node_modules/@prismalens/api/dist/src/modules/webhooks/dto/generic-webhook.dto.js +327 -0
  172. package/node_modules/@prismalens/api/dist/src/modules/webhooks/dto/index.js +2 -0
  173. package/node_modules/@prismalens/api/dist/src/modules/webhooks/render-webhook-signature.guard.js +62 -0
  174. package/node_modules/@prismalens/api/dist/src/modules/webhooks/webhook-signature.guard.js +61 -0
  175. package/node_modules/@prismalens/api/dist/src/modules/webhooks/webhooks.controller.js +134 -0
  176. package/node_modules/@prismalens/api/dist/src/modules/webhooks/webhooks.module.js +40 -0
  177. package/node_modules/@prismalens/api/dist/src/modules/webhooks/webhooks.service.js +325 -0
  178. package/node_modules/@prismalens/api/dist/src/shared/constants/routes.js +11 -0
  179. package/node_modules/@prismalens/api/dist/src/shared/enums/index.js +20 -0
  180. package/node_modules/@prismalens/api/dist/src/shared/events/investigation-events.js +2 -0
  181. package/node_modules/@prismalens/api/dist/src/shared/utils/json-utils.js +29 -0
  182. package/node_modules/@prismalens/api/dist/src/shared/utils/listen-error.js +9 -0
  183. package/node_modules/@prismalens/api/package.json +12 -0
  184. package/node_modules/@prismalens/api/public/assets/ClientOnly--uuL8w7N.js +1 -0
  185. package/node_modules/@prismalens/api/public/assets/InvestigationCanvas-8hax8RNO.css +1 -0
  186. package/node_modules/@prismalens/api/public/assets/InvestigationCanvas-CcJuvY41.js +3 -0
  187. package/node_modules/@prismalens/api/public/assets/Match-IodEdcgp.js +1 -0
  188. package/node_modules/@prismalens/api/public/assets/MutationError-BHWLJq4N.js +1 -0
  189. package/node_modules/@prismalens/api/public/assets/ProviderModelSelector-Ryr9vYLX.js +1 -0
  190. package/node_modules/@prismalens/api/public/assets/QueryClientProvider-Bnoyi3cC.js +1 -0
  191. package/node_modules/@prismalens/api/public/assets/ServiceFormDialog-pHaDAJww.js +1 -0
  192. package/node_modules/@prismalens/api/public/assets/StatusBadge-DERhIQYG.js +1 -0
  193. package/node_modules/@prismalens/api/public/assets/_authenticated-CoCwzJmL.js +1 -0
  194. package/node_modules/@prismalens/api/public/assets/_authenticated-DWo3H_-8.js +1 -0
  195. package/node_modules/@prismalens/api/public/assets/_id-AdTmLHRt.js +1 -0
  196. package/node_modules/@prismalens/api/public/assets/_id-CU2SszeJ.js +2 -0
  197. package/node_modules/@prismalens/api/public/assets/_id-GkJfdMLx.js +1 -0
  198. package/node_modules/@prismalens/api/public/assets/activity-BuLacqc6.js +1 -0
  199. package/node_modules/@prismalens/api/public/assets/alert-CHk0q15J.js +1 -0
  200. package/node_modules/@prismalens/api/public/assets/alert-dialog-Dugh1jAD.js +1 -0
  201. package/node_modules/@prismalens/api/public/assets/alerts-DQJANT5K.js +1 -0
  202. package/node_modules/@prismalens/api/public/assets/app-vNv-gfip.css +2 -0
  203. package/node_modules/@prismalens/api/public/assets/arrow-left-BEsyjQit.js +1 -0
  204. package/node_modules/@prismalens/api/public/assets/badge-DXW8TquP.js +1 -0
  205. package/node_modules/@prismalens/api/public/assets/bell-CfLfMv3R.js +1 -0
  206. package/node_modules/@prismalens/api/public/assets/button-D2Hz_xyq.js +1 -0
  207. package/node_modules/@prismalens/api/public/assets/card-Cna4whU5.js +1 -0
  208. package/node_modules/@prismalens/api/public/assets/checkbox-FppVo2Ln.js +1 -0
  209. package/node_modules/@prismalens/api/public/assets/chevron-right-bRNDjfxy.js +1 -0
  210. package/node_modules/@prismalens/api/public/assets/circle-CH7vaplC.js +1 -0
  211. package/node_modules/@prismalens/api/public/assets/circle-alert-DJkh1udP.js +1 -0
  212. package/node_modules/@prismalens/api/public/assets/circle-check-big-CPrY1SEO.js +1 -0
  213. package/node_modules/@prismalens/api/public/assets/circle-x-B273d2QJ.js +1 -0
  214. package/node_modules/@prismalens/api/public/assets/clock-DAtaxeP6.js +1 -0
  215. package/node_modules/@prismalens/api/public/assets/collapsible-BjXqvd15.js +1 -0
  216. package/node_modules/@prismalens/api/public/assets/colors-Be4TmXLI.js +1 -0
  217. package/node_modules/@prismalens/api/public/assets/configure-CkIHj-78.js +1 -0
  218. package/node_modules/@prismalens/api/public/assets/data-table-CtWstVgY.js +1 -0
  219. package/node_modules/@prismalens/api/public/assets/dialog-DtF5GTSk.js +1 -0
  220. package/node_modules/@prismalens/api/public/assets/discovery-h-jiCGQG.js +1 -0
  221. package/node_modules/@prismalens/api/public/assets/dist-CZpM8B58.js +1 -0
  222. package/node_modules/@prismalens/api/public/assets/dist-CsWlqBes.js +64 -0
  223. package/node_modules/@prismalens/api/public/assets/empty-state-9sIQayEY.js +1 -0
  224. package/node_modules/@prismalens/api/public/assets/external-link-DA-gFnPk.js +1 -0
  225. package/node_modules/@prismalens/api/public/assets/eye-h_TVSVZd.js +1 -0
  226. package/node_modules/@prismalens/api/public/assets/folder-search-BncFWPmR.js +1 -0
  227. package/node_modules/@prismalens/api/public/assets/formatDistanceToNow-DKEQoStK.js +1 -0
  228. package/node_modules/@prismalens/api/public/assets/github-icon-D4qdxz0P.js +1 -0
  229. package/node_modules/@prismalens/api/public/assets/hooks-C_h3SbKf.js +1 -0
  230. package/node_modules/@prismalens/api/public/assets/incidents-CY8yrmWi.js +1 -0
  231. package/node_modules/@prismalens/api/public/assets/incidents-Ck4tZDab.js +55 -0
  232. package/node_modules/@prismalens/api/public/assets/index-CYBUEgiF.js +68 -0
  233. package/node_modules/@prismalens/api/public/assets/integration-icons-BOs4XGIA.js +1 -0
  234. package/node_modules/@prismalens/api/public/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  235. package/node_modules/@prismalens/api/public/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  236. package/node_modules/@prismalens/api/public/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  237. package/node_modules/@prismalens/api/public/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  238. package/node_modules/@prismalens/api/public/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  239. package/node_modules/@prismalens/api/public/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  240. package/node_modules/@prismalens/api/public/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  241. package/node_modules/@prismalens/api/public/assets/investigation.utils-CZphvIrc.js +1 -0
  242. package/node_modules/@prismalens/api/public/assets/investigations-BoWNiPy7.js +1 -0
  243. package/node_modules/@prismalens/api/public/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  244. package/node_modules/@prismalens/api/public/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  245. package/node_modules/@prismalens/api/public/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  246. package/node_modules/@prismalens/api/public/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  247. package/node_modules/@prismalens/api/public/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  248. package/node_modules/@prismalens/api/public/assets/label-DUe0_M5w.js +1 -0
  249. package/node_modules/@prismalens/api/public/assets/layout-CeT3LRF7.js +1 -0
  250. package/node_modules/@prismalens/api/public/assets/lib-hSGK_-Di.js +4 -0
  251. package/node_modules/@prismalens/api/public/assets/lightbulb-DyOhvTqC.js +1 -0
  252. package/node_modules/@prismalens/api/public/assets/link-BrYtRLMx.js +1 -0
  253. package/node_modules/@prismalens/api/public/assets/list-DoJv1VuU.js +1 -0
  254. package/node_modules/@prismalens/api/public/assets/loader-circle-CcKe4gfe.js +1 -0
  255. package/node_modules/@prismalens/api/public/assets/login-Hrq9xVXL.js +1 -0
  256. package/node_modules/@prismalens/api/public/assets/matchContext-DqfdXpUw.js +1 -0
  257. package/node_modules/@prismalens/api/public/assets/message-square-DyJRCl0Z.js +1 -0
  258. package/node_modules/@prismalens/api/public/assets/play-Cl-dxWuH.js +1 -0
  259. package/node_modules/@prismalens/api/public/assets/progress-CniLn3m0.js +6 -0
  260. package/node_modules/@prismalens/api/public/assets/radio-group-B4CFZ8e9.js +1 -0
  261. package/node_modules/@prismalens/api/public/assets/refresh-cw-BUJxeVPZ.js +1 -0
  262. package/node_modules/@prismalens/api/public/assets/root-DLTE-HSj.js +1 -0
  263. package/node_modules/@prismalens/api/public/assets/route-D-xTKyaj.js +1 -0
  264. package/node_modules/@prismalens/api/public/assets/rules-qmpJxYUz.js +1 -0
  265. package/node_modules/@prismalens/api/public/assets/scroll-area-qX4N_Ai-.js +1 -0
  266. package/node_modules/@prismalens/api/public/assets/select-Crre84I0.js +1 -0
  267. package/node_modules/@prismalens/api/public/assets/server-DdoEdVKT.js +1 -0
  268. package/node_modules/@prismalens/api/public/assets/services-BzpauajK.js +1 -0
  269. package/node_modules/@prismalens/api/public/assets/settings-2-COWS2MJc.js +1 -0
  270. package/node_modules/@prismalens/api/public/assets/settings-2WXqxGY5.js +1 -0
  271. package/node_modules/@prismalens/api/public/assets/setup-B77GlS_Y.js +1 -0
  272. package/node_modules/@prismalens/api/public/assets/setup-qJd5KQhM.js +1 -0
  273. package/node_modules/@prismalens/api/public/assets/skeleton-uHoNuB0v.js +1 -0
  274. package/node_modules/@prismalens/api/public/assets/sparkles-BzLskqFE.js +1 -0
  275. package/node_modules/@prismalens/api/public/assets/string-Bg7bf2KD.js +1 -0
  276. package/node_modules/@prismalens/api/public/assets/table-BHtdhI9A.js +1 -0
  277. package/node_modules/@prismalens/api/public/assets/tabs-CNVKT4mJ.js +1 -0
  278. package/node_modules/@prismalens/api/public/assets/tooltip-BmW1p0qe.js +1 -0
  279. package/node_modules/@prismalens/api/public/assets/trash-2-CJHwWyOB.js +1 -0
  280. package/node_modules/@prismalens/api/public/assets/use-investigations-orpc-DU2SE5K2.js +1 -0
  281. package/node_modules/@prismalens/api/public/assets/useStore-BGoeuanS.js +1 -0
  282. package/node_modules/@prismalens/api/public/assets/with-selector-DN3lmfWr.js +1 -0
  283. package/node_modules/@prismalens/api/public/assets/zap-DOu38RFi.js +1 -0
  284. package/node_modules/@prismalens/api/public/index.html +7 -0
  285. package/node_modules/@prismalens/auth/dist/auth.js +111 -0
  286. package/node_modules/@prismalens/auth/dist/client.js +55 -0
  287. package/node_modules/@prismalens/auth/dist/index.js +5 -0
  288. package/node_modules/@prismalens/auth/dist/roles.js +12 -0
  289. package/node_modules/@prismalens/auth/package.json +23 -0
  290. package/node_modules/@prismalens/config/dist/agents.js +15 -0
  291. package/node_modules/@prismalens/config/dist/auth-store.js +65 -0
  292. package/node_modules/@prismalens/config/dist/credentials.js +56 -0
  293. package/node_modules/@prismalens/config/dist/env/database.js +95 -0
  294. package/node_modules/@prismalens/config/dist/env/deployment.js +66 -0
  295. package/node_modules/@prismalens/config/dist/env/dispatch.js +104 -0
  296. package/node_modules/@prismalens/config/dist/env/index.js +13 -0
  297. package/node_modules/@prismalens/config/dist/env/langsmith.js +29 -0
  298. package/node_modules/@prismalens/config/dist/env/llm.js +32 -0
  299. package/node_modules/@prismalens/config/dist/env/logging.js +93 -0
  300. package/node_modules/@prismalens/config/dist/env/readers.js +79 -0
  301. package/node_modules/@prismalens/config/dist/env/server.js +97 -0
  302. package/node_modules/@prismalens/config/dist/env/skills.js +66 -0
  303. package/node_modules/@prismalens/config/dist/env/worker.js +15 -0
  304. package/node_modules/@prismalens/config/dist/harness.js +9 -0
  305. package/node_modules/@prismalens/config/dist/index.js +153 -0
  306. package/node_modules/@prismalens/config/dist/integrations.js +100 -0
  307. package/node_modules/@prismalens/config/dist/investigation.js +61 -0
  308. package/node_modules/@prismalens/config/dist/llm.js +23 -0
  309. package/node_modules/@prismalens/config/dist/mcp.js +21 -0
  310. package/node_modules/@prismalens/config/dist/model.js +101 -0
  311. package/node_modules/@prismalens/config/dist/providers/agents.js +51 -0
  312. package/node_modules/@prismalens/config/dist/providers/harness.js +91 -0
  313. package/node_modules/@prismalens/config/dist/providers/llm.js +170 -0
  314. package/node_modules/@prismalens/config/dist/providers/mcp.js +232 -0
  315. package/node_modules/@prismalens/config/dist/providers/skills.js +10 -0
  316. package/node_modules/@prismalens/config/dist/utils/app-data.js +51 -0
  317. package/node_modules/@prismalens/config/dist/utils/database-url.js +57 -0
  318. package/node_modules/@prismalens/config/dist/utils/encryption-key.js +91 -0
  319. package/node_modules/@prismalens/config/dist/utils/repo.js +228 -0
  320. package/node_modules/@prismalens/config/dist/utils/secrets.js +21 -0
  321. package/node_modules/@prismalens/config/package.json +55 -0
  322. package/node_modules/@prismalens/contracts/dist/contracts/alert-mapping.js +102 -0
  323. package/node_modules/@prismalens/contracts/dist/contracts/alerts.js +156 -0
  324. package/node_modules/@prismalens/contracts/dist/contracts/correlation.js +89 -0
  325. package/node_modules/@prismalens/contracts/dist/contracts/deployments.js +109 -0
  326. package/node_modules/@prismalens/contracts/dist/contracts/events.js +50 -0
  327. package/node_modules/@prismalens/contracts/dist/contracts/incidents.js +141 -0
  328. package/node_modules/@prismalens/contracts/dist/contracts/index.js +63 -0
  329. package/node_modules/@prismalens/contracts/dist/contracts/integrations.js +282 -0
  330. package/node_modules/@prismalens/contracts/dist/contracts/investigations.js +116 -0
  331. package/node_modules/@prismalens/contracts/dist/contracts/postmortems.js +92 -0
  332. package/node_modules/@prismalens/contracts/dist/contracts/recommendations.js +89 -0
  333. package/node_modules/@prismalens/contracts/dist/contracts/repositories.js +111 -0
  334. package/node_modules/@prismalens/contracts/dist/contracts/service-discovery.js +102 -0
  335. package/node_modules/@prismalens/contracts/dist/contracts/services.js +159 -0
  336. package/node_modules/@prismalens/contracts/dist/contracts/settings.js +200 -0
  337. package/node_modules/@prismalens/contracts/dist/contracts/setup.js +100 -0
  338. package/node_modules/@prismalens/contracts/dist/contracts/timeline.js +63 -0
  339. package/node_modules/@prismalens/contracts/dist/contracts/webhooks.js +49 -0
  340. package/node_modules/@prismalens/contracts/dist/index.js +25 -0
  341. package/node_modules/@prismalens/contracts/dist/schemas/alert-mapping.js +126 -0
  342. package/node_modules/@prismalens/contracts/dist/schemas/alert.js +162 -0
  343. package/node_modules/@prismalens/contracts/dist/schemas/change-event.js +20 -0
  344. package/node_modules/@prismalens/contracts/dist/schemas/common.js +272 -0
  345. package/node_modules/@prismalens/contracts/dist/schemas/context-pack.js +95 -0
  346. package/node_modules/@prismalens/contracts/dist/schemas/correlation.js +52 -0
  347. package/node_modules/@prismalens/contracts/dist/schemas/deployment.js +49 -0
  348. package/node_modules/@prismalens/contracts/dist/schemas/event.js +40 -0
  349. package/node_modules/@prismalens/contracts/dist/schemas/incident-similarity.js +17 -0
  350. package/node_modules/@prismalens/contracts/dist/schemas/incident.js +120 -0
  351. package/node_modules/@prismalens/contracts/dist/schemas/index.js +32 -0
  352. package/node_modules/@prismalens/contracts/dist/schemas/integration.js +226 -0
  353. package/node_modules/@prismalens/contracts/dist/schemas/investigation.js +600 -0
  354. package/node_modules/@prismalens/contracts/dist/schemas/license.js +29 -0
  355. package/node_modules/@prismalens/contracts/dist/schemas/overlay.js +77 -0
  356. package/node_modules/@prismalens/contracts/dist/schemas/postmortem.js +71 -0
  357. package/node_modules/@prismalens/contracts/dist/schemas/recommendation.js +63 -0
  358. package/node_modules/@prismalens/contracts/dist/schemas/repository.js +56 -0
  359. package/node_modules/@prismalens/contracts/dist/schemas/service-discovery.js +74 -0
  360. package/node_modules/@prismalens/contracts/dist/schemas/service.js +143 -0
  361. package/node_modules/@prismalens/contracts/dist/schemas/settings.js +338 -0
  362. package/node_modules/@prismalens/contracts/dist/schemas/timeline.js +52 -0
  363. package/node_modules/@prismalens/contracts/dist/schemas/webhook.js +90 -0
  364. package/node_modules/@prismalens/contracts/package.json +27 -0
  365. package/node_modules/@prismalens/database/dist/client.js +46 -0
  366. package/node_modules/@prismalens/database/dist/index.js +4 -0
  367. package/node_modules/@prismalens/database/dist/prisma/generated/client.js +10 -0
  368. package/node_modules/@prismalens/database/dist/prisma/generated/commonInputTypes.js +2 -0
  369. package/node_modules/@prismalens/database/dist/prisma/generated/enums.js +2 -0
  370. package/node_modules/@prismalens/database/dist/prisma/generated/internal/class.js +39 -0
  371. package/node_modules/@prismalens/database/dist/prisma/generated/internal/prismaNamespace.js +522 -0
  372. package/node_modules/@prismalens/database/dist/prisma/generated/models/Account.js +2 -0
  373. package/node_modules/@prismalens/database/dist/prisma/generated/models/Alert.js +2 -0
  374. package/node_modules/@prismalens/database/dist/prisma/generated/models/AlertMappingRule.js +2 -0
  375. package/node_modules/@prismalens/database/dist/prisma/generated/models/ChangeEvent.js +2 -0
  376. package/node_modules/@prismalens/database/dist/prisma/generated/models/Connection.js +2 -0
  377. package/node_modules/@prismalens/database/dist/prisma/generated/models/CorrelationRule.js +2 -0
  378. package/node_modules/@prismalens/database/dist/prisma/generated/models/Deployment.js +2 -0
  379. package/node_modules/@prismalens/database/dist/prisma/generated/models/Event.js +2 -0
  380. package/node_modules/@prismalens/database/dist/prisma/generated/models/Incident.js +2 -0
  381. package/node_modules/@prismalens/database/dist/prisma/generated/models/IncidentSimilarity.js +2 -0
  382. package/node_modules/@prismalens/database/dist/prisma/generated/models/Integration.js +2 -0
  383. package/node_modules/@prismalens/database/dist/prisma/generated/models/Investigation.js +2 -0
  384. package/node_modules/@prismalens/database/dist/prisma/generated/models/InvestigationEvent.js +2 -0
  385. package/node_modules/@prismalens/database/dist/prisma/generated/models/Invitation.js +2 -0
  386. package/node_modules/@prismalens/database/dist/prisma/generated/models/Job.js +2 -0
  387. package/node_modules/@prismalens/database/dist/prisma/generated/models/LicenseInfo.js +2 -0
  388. package/node_modules/@prismalens/database/dist/prisma/generated/models/Member.js +2 -0
  389. package/node_modules/@prismalens/database/dist/prisma/generated/models/OAuthState.js +2 -0
  390. package/node_modules/@prismalens/database/dist/prisma/generated/models/Organization.js +2 -0
  391. package/node_modules/@prismalens/database/dist/prisma/generated/models/Postmortem.js +2 -0
  392. package/node_modules/@prismalens/database/dist/prisma/generated/models/Recommendation.js +2 -0
  393. package/node_modules/@prismalens/database/dist/prisma/generated/models/Repository.js +2 -0
  394. package/node_modules/@prismalens/database/dist/prisma/generated/models/Service.js +2 -0
  395. package/node_modules/@prismalens/database/dist/prisma/generated/models/ServiceDependency.js +2 -0
  396. package/node_modules/@prismalens/database/dist/prisma/generated/models/ServiceIntegration.js +2 -0
  397. package/node_modules/@prismalens/database/dist/prisma/generated/models/ServiceRepository.js +2 -0
  398. package/node_modules/@prismalens/database/dist/prisma/generated/models/ServiceSuggestion.js +2 -0
  399. package/node_modules/@prismalens/database/dist/prisma/generated/models/Session.js +2 -0
  400. package/node_modules/@prismalens/database/dist/prisma/generated/models/Setting.js +2 -0
  401. package/node_modules/@prismalens/database/dist/prisma/generated/models/TimelineEntry.js +2 -0
  402. package/node_modules/@prismalens/database/dist/prisma/generated/models/User.js +2 -0
  403. package/node_modules/@prismalens/database/dist/prisma/generated/models/Verification.js +2 -0
  404. package/node_modules/@prismalens/database/dist/prisma/generated/models.js +2 -0
  405. package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260803122809_init/migration.sql +1058 -0
  406. package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260811182203_drop_agent_tool_executions/migration.sql +23 -0
  407. package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260812180006_alert_dedup_key_not_unique/migration.sql +5 -0
  408. package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260822161331_alert_external_id_not_unique/migration.sql +5 -0
  409. package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260823073903_account_issuer/migration.sql +14 -0
  410. package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260826180000_account_issuer_account_id_unique/migration.sql +22 -0
  411. package/node_modules/@prismalens/database/dist/prisma/pg/schema/app.prisma +981 -0
  412. package/node_modules/@prismalens/database/dist/prisma/pg/schema/auth.prisma +159 -0
  413. package/node_modules/@prismalens/database/dist/prisma/pg/schema/integrations.prisma +187 -0
  414. package/node_modules/@prismalens/database/dist/prisma/pg/schema/main.prisma +17 -0
  415. package/node_modules/@prismalens/database/dist/prisma/pg/schema/migration_lock.toml +3 -0
  416. package/node_modules/@prismalens/database/dist/prisma/seed.js +24 -0
  417. package/node_modules/@prismalens/database/dist/prisma/seeds/demo-data.js +382 -0
  418. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260803122809_init/migration.sql +819 -0
  419. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260811182203_drop_agent_tool_executions/migration.sql +16 -0
  420. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260812180006_alert_dedup_key_not_unique/migration.sql +5 -0
  421. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260822161331_alert_external_id_not_unique/migration.sql +5 -0
  422. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260823073903_account_issuer/migration.sql +32 -0
  423. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260826180000_account_issuer_account_id_unique/migration.sql +2 -0
  424. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/app.prisma +620 -0
  425. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/auth.prisma +159 -0
  426. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/integrations.prisma +156 -0
  427. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/main.prisma +17 -0
  428. package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/migration_lock.toml +3 -0
  429. package/node_modules/@prismalens/database/dist/src/migrator/index.js +3 -0
  430. package/node_modules/@prismalens/database/dist/src/migrator/migration-source.js +55 -0
  431. package/node_modules/@prismalens/database/dist/src/migrator/runner.js +0 -0
  432. package/node_modules/@prismalens/database/package.json +23 -0
  433. package/node_modules/@prismalens/engine/dist/adapter/acp-adapter.js +242 -0
  434. package/node_modules/@prismalens/engine/dist/adapter/claude-code-adapter.js +195 -0
  435. package/node_modules/@prismalens/engine/dist/config/resolve.js +212 -0
  436. package/node_modules/@prismalens/engine/dist/index.js +30 -0
  437. package/node_modules/@prismalens/engine/dist/runner/acp-client.js +292 -0
  438. package/node_modules/@prismalens/engine/dist/runner/acp-run-branch.js +46 -0
  439. package/node_modules/@prismalens/engine/dist/runner/claude-code-runner.js +147 -0
  440. package/node_modules/@prismalens/engine/dist/runner/claude-code-sandbox-spawn.js +61 -0
  441. package/node_modules/@prismalens/engine/dist/sandbox/e2b.js +374 -0
  442. package/node_modules/@prismalens/engine/dist/sandbox/process-floor.js +100 -0
  443. package/node_modules/@prismalens/engine/dist/sandbox/select.js +104 -0
  444. package/node_modules/@prismalens/engine/dist/sandbox/srt.js +397 -0
  445. package/node_modules/@prismalens/engine/dist/sandbox/wsl.js +22 -0
  446. package/node_modules/@prismalens/engine/dist/supervisor/alert-source.js +47 -0
  447. package/node_modules/@prismalens/engine/dist/supervisor/conductor.js +88 -0
  448. package/node_modules/@prismalens/engine/dist/supervisor/decompose.js +364 -0
  449. package/node_modules/@prismalens/engine/dist/supervisor/fan-out.js +164 -0
  450. package/node_modules/@prismalens/engine/dist/supervisor/investigate.js +405 -0
  451. package/node_modules/@prismalens/engine/dist/supervisor/synthesize.js +474 -0
  452. package/node_modules/@prismalens/engine/dist/tools/provisioning.js +13 -0
  453. package/node_modules/@prismalens/engine/dist/tools/types.js +4 -0
  454. package/node_modules/@prismalens/engine/package.json +19 -0
  455. package/node_modules/@prismalens/integrations/dist/engine/auth-manager.js +170 -0
  456. package/node_modules/@prismalens/integrations/dist/engine/capability-check.js +62 -0
  457. package/node_modules/@prismalens/integrations/dist/engine/errors.js +59 -0
  458. package/node_modules/@prismalens/integrations/dist/engine/github-app-flow.js +151 -0
  459. package/node_modules/@prismalens/integrations/dist/engine/index.js +13 -0
  460. package/node_modules/@prismalens/integrations/dist/engine/interpolate.js +35 -0
  461. package/node_modules/@prismalens/integrations/dist/engine/oauth2-flow.js +188 -0
  462. package/node_modules/@prismalens/integrations/dist/engine/permission-check.js +58 -0
  463. package/node_modules/@prismalens/integrations/dist/engine/provider-http-error.js +52 -0
  464. package/node_modules/@prismalens/integrations/dist/engine/token-refresh.js +214 -0
  465. package/node_modules/@prismalens/integrations/dist/engine/token-vault.js +121 -0
  466. package/node_modules/@prismalens/integrations/dist/index.js +12 -0
  467. package/node_modules/@prismalens/integrations/dist/providers/deployment.interface.js +4 -0
  468. package/node_modules/@prismalens/integrations/dist/providers/git.interface.js +4 -0
  469. package/node_modules/@prismalens/integrations/dist/providers/github/github.adapter.js +181 -0
  470. package/node_modules/@prismalens/integrations/dist/providers/github/index.js +4 -0
  471. package/node_modules/@prismalens/integrations/dist/providers/index.js +57 -0
  472. package/node_modules/@prismalens/integrations/dist/providers/render/index.js +4 -0
  473. package/node_modules/@prismalens/integrations/dist/providers/render/render.adapter.js +139 -0
  474. package/node_modules/@prismalens/integrations/dist/providers/types.js +4 -0
  475. package/node_modules/@prismalens/integrations/dist/providers/vercel/index.js +4 -0
  476. package/node_modules/@prismalens/integrations/dist/providers/vercel/vercel.adapter.js +109 -0
  477. package/node_modules/@prismalens/integrations/dist/templates/github.js +200 -0
  478. package/node_modules/@prismalens/integrations/dist/templates/index.js +38 -0
  479. package/node_modules/@prismalens/integrations/dist/templates/prometheus.js +62 -0
  480. package/node_modules/@prismalens/integrations/dist/templates/render.js +47 -0
  481. package/node_modules/@prismalens/integrations/dist/templates/slack.js +110 -0
  482. package/node_modules/@prismalens/integrations/dist/templates/vercel.js +47 -0
  483. package/node_modules/@prismalens/integrations/dist/types.js +42 -0
  484. package/node_modules/@prismalens/integrations/package.json +27 -0
  485. package/node_modules/@prismalens/logger/dist/core/context.js +120 -0
  486. package/node_modules/@prismalens/logger/dist/core/formatter.js +128 -0
  487. package/node_modules/@prismalens/logger/dist/core/index.js +7 -0
  488. package/node_modules/@prismalens/logger/dist/core/logger.js +230 -0
  489. package/node_modules/@prismalens/logger/dist/core/sampler.js +134 -0
  490. package/node_modules/@prismalens/logger/dist/index.js +63 -0
  491. package/node_modules/@prismalens/logger/dist/integrations/nestjs/index.js +6 -0
  492. package/node_modules/@prismalens/logger/dist/integrations/nestjs/logger.module.js +140 -0
  493. package/node_modules/@prismalens/logger/dist/integrations/nestjs/logger.service.js +181 -0
  494. package/node_modules/@prismalens/logger/dist/integrations/nestjs/request.interceptor.js +209 -0
  495. package/node_modules/@prismalens/logger/dist/integrations/standalone/create-logger.js +105 -0
  496. package/node_modules/@prismalens/logger/dist/integrations/standalone/index.js +4 -0
  497. package/node_modules/@prismalens/logger/dist/transports/console.transport.js +24 -0
  498. package/node_modules/@prismalens/logger/dist/transports/file.transport.js +147 -0
  499. package/node_modules/@prismalens/logger/dist/transports/index.js +6 -0
  500. package/node_modules/@prismalens/logger/dist/transports/transport.js +4 -0
  501. package/node_modules/@prismalens/logger/dist/types/index.js +6 -0
  502. package/node_modules/@prismalens/logger/dist/types/log-entry.js +4 -0
  503. package/node_modules/@prismalens/logger/dist/types/sampling.js +4 -0
  504. package/node_modules/@prismalens/logger/dist/types/wide-event.js +4 -0
  505. package/node_modules/@prismalens/logger/dist/utils/id-generator.js +27 -0
  506. package/node_modules/@prismalens/logger/dist/utils/index.js +6 -0
  507. package/node_modules/@prismalens/logger/dist/utils/redaction.js +186 -0
  508. package/node_modules/@prismalens/logger/dist/utils/truncation.js +106 -0
  509. package/node_modules/@prismalens/logger/package.json +27 -0
  510. package/node_modules/@prismalens/worker/dist/config.js +5 -0
  511. package/node_modules/@prismalens/worker/dist/db-investigation-store.js +160 -0
  512. package/node_modules/@prismalens/worker/dist/index.js +162 -0
  513. package/node_modules/@prismalens/worker/dist/internal-url.js +20 -0
  514. package/node_modules/@prismalens/worker/dist/orpc-client.js +17 -0
  515. package/node_modules/@prismalens/worker/dist/processor.js +734 -0
  516. package/node_modules/@prismalens/worker/dist/protocol.js +13 -0
  517. package/node_modules/@prismalens/worker/dist/types.js +3 -0
  518. package/node_modules/@prismalens/worker/package.json +23 -0
  519. package/package.json +102 -61
  520. package/dist/bin/prismalens.d.ts +0 -3
  521. package/dist/bin/prismalens.d.ts.map +0 -1
  522. package/dist/bin/prismalens.js.map +0 -1
  523. package/dist/src/cli/auth.d.ts +0 -3
  524. package/dist/src/cli/auth.d.ts.map +0 -1
  525. package/dist/src/cli/auth.js.map +0 -1
  526. package/dist/src/cli/doctor.d.ts +0 -18
  527. package/dist/src/cli/doctor.d.ts.map +0 -1
  528. package/dist/src/cli/doctor.js.map +0 -1
  529. package/dist/src/cli/flags.d.ts +0 -2
  530. package/dist/src/cli/flags.d.ts.map +0 -1
  531. package/dist/src/cli/flags.js.map +0 -1
  532. package/dist/src/cli/grouping.d.ts +0 -18
  533. package/dist/src/cli/grouping.d.ts.map +0 -1
  534. package/dist/src/cli/grouping.js.map +0 -1
  535. package/dist/src/cli/init.d.ts +0 -3
  536. package/dist/src/cli/init.d.ts.map +0 -1
  537. package/dist/src/cli/init.js.map +0 -1
  538. package/dist/src/cli/investigate.d.ts +0 -115
  539. package/dist/src/cli/investigate.d.ts.map +0 -1
  540. package/dist/src/cli/investigate.js.map +0 -1
  541. package/dist/src/cli/listen.d.ts +0 -56
  542. package/dist/src/cli/listen.d.ts.map +0 -1
  543. package/dist/src/cli/listen.js.map +0 -1
  544. package/dist/src/cli/report.d.ts +0 -24
  545. package/dist/src/cli/report.d.ts.map +0 -1
  546. package/dist/src/cli/report.js.map +0 -1
  547. package/dist/src/cli/serve.d.ts +0 -3
  548. package/dist/src/cli/serve.d.ts.map +0 -1
  549. package/dist/src/cli/serve.js.map +0 -1
  550. package/dist/src/cli/status.d.ts +0 -19
  551. package/dist/src/cli/status.d.ts.map +0 -1
  552. package/dist/src/cli/status.js.map +0 -1
  553. package/dist/src/config/loader.d.ts +0 -22
  554. package/dist/src/config/loader.d.ts.map +0 -1
  555. package/dist/src/config/loader.js +0 -195
  556. package/dist/src/config/loader.js.map +0 -1
  557. package/dist/src/config/schema.d.ts +0 -465
  558. package/dist/src/config/schema.d.ts.map +0 -1
  559. package/dist/src/config/schema.js +0 -219
  560. package/dist/src/config/schema.js.map +0 -1
  561. package/dist/src/core/caps.d.ts +0 -36
  562. package/dist/src/core/caps.d.ts.map +0 -1
  563. package/dist/src/core/caps.js +0 -36
  564. package/dist/src/core/caps.js.map +0 -1
  565. package/dist/src/core/db.d.ts +0 -3
  566. package/dist/src/core/db.d.ts.map +0 -1
  567. package/dist/src/core/db.js +0 -105
  568. package/dist/src/core/db.js.map +0 -1
  569. package/dist/src/core/detect-repo.d.ts +0 -4
  570. package/dist/src/core/detect-repo.d.ts.map +0 -1
  571. package/dist/src/core/detect-repo.js +0 -28
  572. package/dist/src/core/detect-repo.js.map +0 -1
  573. package/dist/src/core/file-session-store.d.ts +0 -10
  574. package/dist/src/core/file-session-store.d.ts.map +0 -1
  575. package/dist/src/core/file-session-store.js +0 -34
  576. package/dist/src/core/file-session-store.js.map +0 -1
  577. package/dist/src/core/parse-stdin.d.ts +0 -2
  578. package/dist/src/core/parse-stdin.d.ts.map +0 -1
  579. package/dist/src/core/parse-stdin.js +0 -21
  580. package/dist/src/core/parse-stdin.js.map +0 -1
  581. package/dist/src/core/run-investigation.d.ts +0 -54
  582. package/dist/src/core/run-investigation.d.ts.map +0 -1
  583. package/dist/src/core/run-investigation.js +0 -202
  584. package/dist/src/core/run-investigation.js.map +0 -1
  585. package/dist/src/core/session.d.ts +0 -63
  586. package/dist/src/core/session.d.ts.map +0 -1
  587. package/dist/src/core/session.js +0 -45
  588. package/dist/src/core/session.js.map +0 -1
  589. package/dist/src/core/slack-notify.d.ts +0 -9
  590. package/dist/src/core/slack-notify.d.ts.map +0 -1
  591. package/dist/src/core/slack-notify.js +0 -57
  592. package/dist/src/core/slack-notify.js.map +0 -1
  593. package/dist/src/core/sqlite-session-store.d.ts +0 -39
  594. package/dist/src/core/sqlite-session-store.d.ts.map +0 -1
  595. package/dist/src/core/sqlite-session-store.js +0 -239
  596. package/dist/src/core/sqlite-session-store.js.map +0 -1
  597. package/dist/src/http/server.d.ts +0 -31
  598. package/dist/src/http/server.d.ts.map +0 -1
  599. package/dist/src/http/server.js +0 -164
  600. package/dist/src/http/server.js.map +0 -1
  601. package/dist/src/jsonrpc/server.d.ts +0 -44
  602. package/dist/src/jsonrpc/server.d.ts.map +0 -1
  603. package/dist/src/jsonrpc/server.js +0 -267
  604. package/dist/src/jsonrpc/server.js.map +0 -1
  605. package/dist/src/jsonrpc/types.d.ts +0 -12
  606. package/dist/src/jsonrpc/types.d.ts.map +0 -1
  607. package/dist/src/jsonrpc/types.js.map +0 -1
  608. package/dist/src/version.d.ts +0 -8
  609. package/dist/src/version.d.ts.map +0 -1
  610. package/dist/src/version.js +0 -27
  611. package/dist/src/version.js.map +0 -1
  612. /package/{dist/src/jsonrpc → node_modules/@prismalens/engine/dist/sandbox}/types.js +0 -0
package/README.md CHANGED
@@ -1,370 +1,44 @@
1
1
  # prismalens
2
2
 
3
- The PrismaLens **investigation engine CLI** — the `prismalens` (alias `pl`) binary,
4
- published on npm as the unscoped [`prismalens`](https://www.npmjs.com/package/prismalens) package.
5
-
6
- Per **ADR-0010**, the engine *is* a CLI: the desktop app and web API drive it
7
- rather than embedding it. The CLI is a thin **Tier-1 supervisor** that rents a
8
- **Tier-2 agent harness** (ADR-0008) to do the investigative legwork, then reduces the
9
- harness's canonical event stream into an **ordered-evidence report** (ADR-0002 —
10
- hypotheses ranked most-to-least plausible, with supporting/contradicting
11
- evidence; no numeric confidence scores).
12
-
13
- - **Tier-1 (supervisor):** seeds the investigation from a firing alert, drives the
14
- rented harness live, and synthesizes the final report (the "reduce" step) using
15
- an OpenAI-compatible model.
16
- - **Tier-2 (rented harness):** one of
17
- - `deepagents` — driven over **ACP**,
18
- - `claude-code` — driven over the **Claude Agent SDK**,
19
- - `codex` — **stubbed** (not implemented; selecting it throws).
20
-
21
- ## How the harness is contained
22
-
23
- By default prismalens removes the harness's edit tools (`Edit`, `Write`,
24
- `MultiEdit`, `NotebookEdit`). That is a **guardrail, not a security boundary**
25
- (ADR-0017): the shell is untouched, so writes remain possible via `Bash`. It is
26
- there to stop a *helpful* agent from editing the repo it was asked to investigate
27
- — it will not stop a determined one.
28
-
29
- **Without a sandbox, the harness runs as you** — your machine, your credentials,
30
- your shell — exactly as if you had invoked the agent CLI yourself. prismalens
31
- makes no safety claim in this mode, and none of the above should be read as one.
32
-
33
- The **only** real boundary is an enforced sandbox (`--sandbox srt` or `e2b`,
34
- ADR-0020): an OS-level box in which your host and credentials are read-only, the
35
- harness gets a read-write **workspace**, and network egress is **allowlisted**.
36
- Note that this is *confined writes*, not "read-only" — an investigation has to be
37
- able to clone a repo and download artifacts. `--sandbox auto` is not yet an
38
- enforced default; it can degrade to an unenforced floor.
39
-
40
- Provider credentials are **BYO-key** (ADR-0006), resolved from the environment or
41
- the local auth store — never hard-bound in the CLI.
42
-
43
- Every run is persisted to a durable workspace under `~/.prismalens/runs/<runId>/`
44
- (`events.jsonl` + `report.json` + `session.json`), regardless of how it was
45
- invoked.
46
-
47
- ---
3
+ PrismaLens is an AI-powered root-cause investigation tool for on-call engineers. It analyzes firing alerts against your repositories and telemetry, producing an ordered-evidence report that ranks hypotheses by observed evidence without synthetic confidence scores. The CLI runs standalone or boots the full local application.
48
4
 
49
5
  ## Install
50
6
 
51
- Requires Node.js >= 22.
7
+ Requires Node.js 24+.
52
8
 
53
9
  ```bash
54
- # one-off, nothing installed globally
55
- npx prismalens doctor
56
-
57
- # or install the `prismalens` / `pl` bins globally
58
10
  npm install -g prismalens
59
11
  ```
60
12
 
61
- ## Build from source
62
-
63
- This package lives in the pnpm + turbo monorepo and is consumed by the rest of the
64
- platform via `workspace:*`.
65
-
66
- ```bash
67
- # from the repo root
68
- pnpm install
69
-
70
- # build the CLI and its workspace deps (@prismalens/contracts, @prismalens/engine)
71
- pnpm build # turbo build (whole monorepo)
72
- # or just this package + its deps:
73
- pnpm --filter prismalens... build
74
- ```
75
-
76
- The build emits `dist/`, exposing two bin entries (identical):
13
+ ## Quick start
77
14
 
78
- ```
79
- prismalens -> dist/bin/prismalens.js
80
- pl -> dist/bin/prismalens.js
81
- ```
82
-
83
- For local development you can skip the build and run the TypeScript entry directly:
15
+ Check the environment, then start the web interface or run an investigation directly:
84
16
 
85
17
  ```bash
86
- # from packages/cli
87
- pnpm dev investigate --query "checkout latency spike" # tsx bin/prismalens.ts ...
18
+ prismalens doctor
19
+ pl up
20
+ pl investigate --repo . --query "checkout latency spike after 14:00 UTC"
88
21
  ```
89
22
 
90
- Run `prismalens doctor` before your first investigation to verify the harness
91
- binary and an LLM credential are present.
92
-
93
- ---
94
-
95
23
  ## Commands
96
24
 
97
- ```
98
- prismalens <command> [flags] # alias: pl
99
-
100
- investigate Run a read-only root-cause investigation of a firing alert.
101
- listen Start a token-authed local HTTP listener for Alertmanager webhooks.
102
- serve Run the JSON-RPC 2.0 server over stdio (the LIVE channel for apps).
103
- doctor Preflight-check the investigation environment.
104
- init Scaffold a prismalens.config.yaml in the current directory.
105
- auth Manage stored BYO-key credentials for providers.
106
- ```
107
-
108
- ### `investigate`
109
-
110
- Seeds an investigation from a firing alert, rents a Tier-2 harness, streams the
111
- supervisor live (each canonical event is appended to the run workspace and printed
112
- as a one-line timeline entry), and renders the ordered-evidence report.
113
-
114
- The seed alert comes from **one of**:
115
- - a **`FiringAlert` JSON piped on stdin** (also accepts a webhook/Alertmanager-shaped
116
- payload — `alertname`/`severity` are pulled from top-level fields, falling back to
117
- `labels`), or
118
- - `--query` — a one-line description that is synthesized into a minimal alert.
119
-
120
- | Flag | Description |
121
- | --- | --- |
122
- | `--repo <dir>` | Path to the repository the harness investigates (its cwd). Defaults to the current directory. |
123
- | `--query, -q <text>` | Synthesize an alert from this one-line description (alternative to piping a `FiringAlert` JSON on stdin). |
124
- | `--config <path>` | Path to a `prismalens.config.yaml` (skips the upward config search; fails closed for missing, unreadable, or invalid paths). |
125
- | `--model <id>` | Override `agent.model` — a bare model id, e.g. `gpt-oss:120b`. |
126
- | `--max-turns <n>` | Per-run turn ceiling for the default harness. |
127
- | `--harness <name>` | Tier-2 backend: `deepagents` \| `claude-code` \| `codex`. Defaults to `agent.default`. |
128
- | `--json` | Print the `InvestigationReport` as JSON to stdout (suppresses the human renderer; implies quiet). |
129
- | `--output <file>` | Also write the `InvestigationReport` JSON to this file. |
130
- | `--quiet` | Suppress progress + the human renderer (errors still go to stderr). |
131
-
132
- **Exit codes:** `0` on a synthesized report; `1` on a hard input error, a
133
- mid-stream failure, or a **no-evidence** run (a branch that gathered nothing and
134
- errored emits no report — the CLI surfaces the transport failure rather than a
135
- fabricated RCA).
136
-
137
- A `FiringAlert` is `{ alertname, severity, labels, annotations, startsAt }`.
138
-
139
- ### `listen`
140
-
141
- Start a token-authed local HTTP listener for Alertmanager webhooks; each firing alert triggers an investigation (Phase 1 R1).
142
-
143
- ```bash
144
- PRISMALENS_LISTEN_TOKEN=xyz pl listen --config my-stack.yaml
145
- ```
146
-
147
- ### `serve`
148
-
149
- Runs the JSON-RPC 2.0 server over stdio — the live channel apps drive (see
150
- [Driven by an app](#mode-2--driven-by-an-app-prismalens-serve)). No flags.
151
-
152
- ### `doctor`
153
-
154
- Preflight checklist that gates a run. Prints pass/fail per check; exits non-zero
155
- **iff a hard check fails**.
156
-
157
- - **HARD — harness binary on PATH:** `deepagents` → `deepagents-acp`,
158
- `claude-code` → `claude`, `codex` → `codex` (for the harness from config).
159
- - **HARD — an LLM credential:** any of `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` /
160
- `GOOGLE_API_KEY` / `OLLAMA_API_KEY` / `GROQ_API_KEY` / `CUSTOM_LLM_API_KEY`,
161
- a credential stored via `pl auth login` (`auth.json`), or, for `claude-code`,
162
- a signed-in `~/.claude/.credentials.json`. Doctor reports which layer supplied
163
- the credential (`source: env | file | stored | none`). (Performs a live
164
- provider model ping by default, while `--no-ping` skips it.)
165
- - **SOFT — workspace writable:** `workspace.dir` can be created/written.
166
-
167
- ### `init`
168
-
169
- Scaffolds a commented `prismalens.config.yaml` in the current directory, sourced
170
- from the schema defaults so it never drifts from what the engine uses.
171
- Non-interactive: if the file already exists it is left untouched.
172
-
173
- ---
174
-
175
- ## Usage modes
176
-
177
- ### Mode 1 — standalone
178
-
179
- Run an investigation straight from the terminal. Inputs are resolved from the cwd
180
- (or `--repo`), stdin/`--query`, and the merged config; the report is rendered to
181
- the terminal and written to `~/.prismalens/runs/<runId>/`.
182
-
183
- ```bash
184
- # Synthesized alert from a one-liner, deepagents harness, investigating ./my-service
185
- prismalens investigate \
186
- --repo ./my-service \
187
- --query "p99 checkout latency tripled after 14:00 UTC" \
188
- --harness deepagents
189
-
190
- # Pipe a real FiringAlert (or webhook/Alertmanager-shaped) payload on stdin
191
- cat alert.json | prismalens investigate --repo ./my-service
192
-
193
- # Machine-readable report (JSON to stdout) + a copy on disk, no progress chatter
194
- prismalens investigate -q "OOMKilled in payments pod" --json --output report.json
195
-
196
- # Pull the currently-firing alert from Alertmanager and investigate it
197
- curl -s http://localhost:9093/api/v2/alerts?active=true \
198
- | jq '.[0]' \
199
- | prismalens investigate --repo ./payments --harness claude-code
200
- ```
201
-
202
- Durable record for every run:
203
-
204
- ```
205
- ~/.prismalens/
206
- sessions.json # run index (runId -> SessionRecord)
207
- runs/<runId>/session.json # per-run metadata mirror
208
- runs/<runId>/events.jsonl # canonical event stream (one JSON per line)
209
- runs/<runId>/report.json # the synthesized InvestigationReport
210
- ```
211
-
212
- ### Mode 2 — driven by an app (`prismalens serve`)
213
-
214
- This is the **live channel** for the desktop app and web API — it replaces the old
215
- `pl` file-watching reporter. The engine streams via `investigateIncidentStream`
216
- (an async generator); `serve` forwards each canonical event as a notification.
217
- Validated live against the sreforge `booklogr` incident with **both** harnesses
218
- (`deepagents` over ACP, `claude-code` over the Agent SDK). The
219
- `~/.prismalens/runs/<runId>/` workspace remains the durable record.
220
-
221
- **Protocol:** JSON-RPC 2.0 over **stdio**, **newline-delimited** (one JSON value
222
- per line in both directions — requests on stdin; responses + notifications on
223
- stdout).
224
-
225
- **`initialize`**
226
-
227
- ```jsonc
228
- --> {"jsonrpc":"2.0","id":1,"method":"initialize"}
229
- <-- {"jsonrpc":"2.0","id":1,"result":{
230
- "protocolVersion": 1,
231
- "serverInfo": { "name": "prismalens", "version": "0.0.1" }
232
- }}
233
- ```
234
-
235
- **`investigate`** — `params`: `{ alert?: FiringAlert, query?: string, repo?: string,
236
- harness?: string, model?: string, config?: string, service?: string, mode?: string,
237
- dangerouslySkipPermissions?: boolean, sandbox?: string, maxTurns?: number }`.
238
-
239
- CLI-parity params (each falls back to config when absent):
240
-
241
- - `sandbox` — the isolation boundary (ADR-0020), the CLI's `--sandbox`: one of
242
- `auto` | `process` | `srt` | `e2b`. Absent ⇒ `agent.sandbox` from config. A
243
- supplied value that is not a known mode (or a mode the resolved harness cannot
244
- honour, e.g. `srt` on a non-ACP harness) is a `-32602` error — never a silent
245
- fall-back to the cooperative floor.
246
- - `maxTurns` — per-run turn ceiling, the CLI's `--max-turns`: a positive integer.
247
- A supplied zero, negative, fractional, or non-numeric value is a `-32602` error —
248
- never a silently-removed cap.
249
-
250
- Streams a **notification per canonical event** (including the terminal `report`
251
- event), then **resolves the request** with `{ runId, report }`:
252
-
253
- ```jsonc
254
- --> {"jsonrpc":"2.0","id":2,"method":"investigate",
255
- "params":{"query":"checkout latency spike","repo":"./my-service","harness":"deepagents"}}
256
-
257
- // zero or more notifications, in order, as the supervisor streams:
258
- <-- {"jsonrpc":"2.0","method":"investigate/event",
259
- "params":{"runId":"<uuid>","event":{ /* CanonicalEvent */ }}}
260
- // ... agent_step, tool_result, branch_done, (error), then the terminal report event ...
261
-
262
- // finally, the request resolves:
263
- <-- {"jsonrpc":"2.0","id":2,"result":{"runId":"<uuid>","report":{ /* InvestigationReport */ }}}
264
- ```
265
-
266
- `CanonicalEvent.kind` is one of `agent_step` | `tool_result` | `branch_done` |
267
- `error` | `report`. Requests are fire-and-forget on the wire: multiple may run
268
- concurrently and interleave their notifications — each notification carries its
269
- `runId` so a driver can demultiplex.
270
-
271
- **Error codes:**
272
-
273
- | Code | Meaning |
25
+ | Command | Description |
274
26
  | --- | --- |
275
- | `-32700` | Parse error (invalid JSON on a line). |
276
- | `-32600` | Invalid request (not a well-formed JSON-RPC 2.0 request). |
277
- | `-32601` | Method not found. |
278
- | `-32602` | Invalid params (includes an invalid `sandbox` mode or `maxTurns` value, and `resolveInvestigation` input errors — e.g. no alert/query, unknown or unbuilt harness). |
279
- | `-32603` | Internal error (mid-stream failure; `data` carries `{ runId }`). |
280
- | `-32000` | No evidence — the harness branch failed and produced no report (`data` carries `{ runId }`). |
281
-
282
- A malformed or failed request becomes a JSON-RPC error response — the server never
283
- crashes on bad input.
284
-
285
- ---
286
-
287
- ## Configuration
288
-
289
- `prismalens.config.yaml` (run `prismalens init` to scaffold one). Resolution order,
290
- later overriding earlier:
291
-
292
- 1. built-in schema defaults,
293
- 2. user layer — `config.yaml` in the OS config dir (Linux/WSL:
294
- `~/.config/prismalens/config.yaml`; macOS/Windows use the platform config dir),
295
- a good home for BYO-key creds via `${VAR}` interpolation,
296
- 3. project layer — the explicit `--config` path, else the nearest config file found
297
- by walking **up** from the cwd,
298
- 4. CLI flag overrides (e.g. `--model`).
299
-
300
- `${VAR}` patterns in string values are interpolated from the environment (an unset
301
- var is an error).
302
-
303
- ```yaml
304
- # Tier-2 harness backend the supervisor rents (ADR-0008).
305
- agent:
306
- default: deepagents # deepagents | claude-code | codex
307
- # model: gpt-oss:120b # bare id — the harness applies its own provider
308
- # prefix; omit to let the harness default
309
- sandbox: auto # auto | process | srt — isolation boundary (ADR-0020).
310
- # auto (default): srt (enforced OS boundary) WHEN its
311
- # egress bridge is healthy (a self-check catches WSL
312
- # mirrored-networking blackouts), else the cooperative
313
- # process floor — the degrade is logged, never silent.
314
-
315
- # Read-only telemetry + app endpoints the harness may query.
316
- telemetry:
317
- prometheus_url: http://localhost:9090
318
- alertmanager_url: http://localhost:9093
319
- api_url: http://localhost:3000
320
-
321
- # Where runs, events, and reports are stored.
322
- workspace:
323
- dir: ~/.prismalens
324
-
325
- # Per-harness native passthrough (ADR-0017) — untyped, forwarded straight to the
326
- # rented harness. For `deepagents` (the npm `deepagents-acp` binary, driven over
327
- # ACP), `args` is appended verbatim to the CLI invocation. The binary has no
328
- # shell-allowlist or sandbox flags — so the harness is unsandboxed (runs as you)
329
- # until the Sandbox port's enforced providers land (ADR-0020/B.1).
330
- harnesses:
331
- deepagents:
332
- native:
333
- args: [--memory, ./AGENTS.md]
334
- ```
335
-
336
- Notes:
337
- - `agent.model` sets the **Tier-2 harness** model only (a bare id, e.g. `gpt-oss:120b`;
338
- each harness applies its own provider prefix). `--model` overrides it.
339
- - `synth.model` sets the **Tier-1 reduce** (report-synthesis) model — a separate call
340
- to a separate provider (ADR-0013/0016). `agent.model` never feeds it, so a harness on
341
- one provider (e.g. `claude-code`) can't misroute the reduce call to another (ollama).
342
- - `telemetry.*` keys are snake_case (`prometheus_url`, `alertmanager_url`, `api_url`)
343
- and default to host-local URLs when unset.
344
- - There is currently no `agent.timeout_ms`, `budget.*`, or `logging.*` config —
345
- an overall per-run wall-clock budget and a Tier-1 reduce token/retry budget are
346
- planned alongside the Phase B.1 Sandbox port's resource limits (ADR-0020), not
347
- wired yet.
348
-
349
- ### BYO-key environment (ADR-0006)
350
-
351
- Credentials are BYO-key and never hard-bound in the CLI. They can be read from the environment or stored locally via the `auth` command.
27
+ | `up` | Run PrismaLens as a single process serving the API and web dashboard. |
28
+ | `investigate` | Run a root-cause investigation on a firing alert or query. |
29
+ | `listen` | Start a local HTTP webhook receiver for incoming Alertmanager alerts. |
30
+ | `serve` | Run the JSON-RPC server over stdio for desktop and API integrations. |
31
+ | `doctor` | Preflight-check the environment for harness binaries and credentials. |
32
+ | `init` | Scaffold a default configuration file in the current directory. |
33
+ | `status` | List recent investigation runs and their execution states. |
34
+ | `report` | Display the stored investigation report for a specific run ID. |
35
+ | `auth` | Manage stored credentials for model providers. |
352
36
 
353
- The resolution precedence for any credential is: **env** (`PROVIDER_API_KEY`) → **_FILE** (`PROVIDER_API_KEY_FILE`) → **stored** (from `auth.json`) → **none**.
37
+ ## Documentation
354
38
 
355
- **Auth commands:**
356
- - `pl auth login <provider> [--api-key <key>]` — save a credential (prompts securely if `--api-key` is omitted).
357
- - `pl auth list` — view saved providers.
358
- - `pl auth logout <provider>` — remove a saved credential.
39
+ Complete documentation, guides, and configuration references are available at https://docs.prismalens.io.
359
40
 
360
- Stored credentials live in `auth.json` inside the app-data dir (`~/.prismalens` by default, honors `PRISMALENS_WORKSPACE_DIR`), enforced to mode `0600`.
41
+ ## License
361
42
 
362
- - **Tier-1 reduce + the `deepagents` harness** use an OpenAI-compatible endpoint:
363
- - `OLLAMA_API_KEY` or `OPENAI_API_KEY` (the API key),
364
- - `OLLAMA_BASE_URL` or `OPENAI_BASE_URL` (base URL; defaults to
365
- `https://ollama.com/v1`).
366
- - **The `claude-code` harness** uses your signed-in `~/.claude` session, or
367
- `ANTHROPIC_API_KEY`.
43
+ Apache-2.0
368
44
 
369
- If no matching credential is found across the resolution chain, the reduce (synthesis) call will
370
- likely fail — `investigate` warns up front, and `doctor` checks for a credential.
@@ -1,59 +1,49 @@
1
1
  #!/usr/bin/env node
2
- // SPDX-License-Identifier: Apache-2.0
3
- // Copyright 2026 Sumit Patel
4
- /**
5
- * `prismalens` / `pl` — the engine CLI (ADR-0010: the engine is a CLI; the desktop
6
- * app + API drive it). Command bodies live in ../src/cli/* and are loaded lazily so
7
- * a fast `--help` doesn't pull in the engine. Bodies are implemented separately.
8
- */
2
+ import {
3
+ cliVersion
4
+ } from "../chunk-HPE5CTO4.js";
5
+
6
+ // bin/prismalens.ts
9
7
  import { defineCommand, runMain, showUsage } from "citty";
10
8
  import consola from "consola";
11
- import { cliVersion } from "../src/version.js";
12
- // The AI SDK's one-time "AI SDK Warning System" banner prints via console.info
13
- // (STDOUT) mid-run — noise in the live timeline and corruption in piped JSON.
14
- // Off for the whole CLI; real per-warning notices still reach stderr via
15
- // process.emitWarning.
16
9
  globalThis.AI_SDK_LOG_WARNINGS = false;
17
- const originalEmit = process.emit;
10
+ var originalEmit = process.emit;
18
11
  process.emit = ((name, ...args) => {
19
- if (name === "warning" &&
20
- args[0]?.name === "ExperimentalWarning" &&
21
- args[0]?.message?.includes("SQLite")) {
22
- return false;
23
- }
24
- return originalEmit.apply(process, [name, ...args]);
12
+ if (name === "warning" && args[0]?.name === "ExperimentalWarning" && args[0]?.message?.includes("SQLite")) {
13
+ return false;
14
+ }
15
+ return originalEmit.apply(process, [name, ...args]);
25
16
  });
26
- /** Lazily import a command body's default export from src/cli. */
27
- const lazy = (name) => () => import(`../src/cli/${name}.js`).then((m) => m.default);
28
- const main = defineCommand({
29
- meta: {
30
- name: "prismalens",
31
- version: cliVersion(),
32
- description: "PrismaLens investigation engine CLI — drives the two-tier engine (ADR-0008/0010).",
33
- },
34
- subCommands: {
35
- investigate: lazy("investigate"),
36
- listen: lazy("listen"),
37
- serve: lazy("serve"),
38
- doctor: lazy("doctor"),
39
- init: lazy("init"),
40
- status: lazy("status"),
41
- report: lazy("report"),
42
- auth: lazy("auth"),
43
- },
17
+ var lazy = (name) => () => {
18
+ const modulePath = `../src/cli/${name}.js`;
19
+ return import(modulePath).then((m) => m.default);
20
+ };
21
+ var main = defineCommand({
22
+ meta: {
23
+ name: "prismalens",
24
+ version: cliVersion(),
25
+ description: "PrismaLens investigation engine CLI \u2014 drives the two-tier engine (ADR-0008/0010)."
26
+ },
27
+ subCommands: {
28
+ up: lazy("up"),
29
+ investigate: lazy("investigate"),
30
+ listen: lazy("listen"),
31
+ serve: lazy("serve"),
32
+ doctor: lazy("doctor"),
33
+ init: lazy("init"),
34
+ status: lazy("status"),
35
+ report: lazy("report"),
36
+ auth: lazy("auth")
37
+ }
44
38
  });
45
39
  runMain(main, {
46
- showUsage: async (cmd, parent) => {
47
- const rawArgs = process.argv.slice(2);
48
- if (rawArgs.includes("--help") ||
49
- rawArgs.includes("-h") ||
50
- rawArgs.length === 0) {
51
- await showUsage(cmd, parent);
52
- }
53
- else {
54
- const cmdName = `pl${rawArgs[0] && !rawArgs[0].startsWith("-") ? ` ${rawArgs[0]}` : ""}`;
55
- consola.info(`Run \`${cmdName} --help\` for usage.`);
56
- }
57
- },
40
+ showUsage: async (cmd, parent) => {
41
+ const rawArgs = process.argv.slice(2);
42
+ if (rawArgs.includes("--help") || rawArgs.includes("-h") || rawArgs.length === 0) {
43
+ await showUsage(cmd, parent);
44
+ } else {
45
+ const cmdName = `pl${rawArgs[0] && !rawArgs[0].startsWith("-") ? ` ${rawArgs[0]}` : ""}`;
46
+ consola.info(`Run \`${cmdName} --help\` for usage.`);
47
+ }
48
+ }
58
49
  });
59
- //# sourceMappingURL=prismalens.js.map
@@ -0,0 +1,150 @@
1
+ // src/config/schema.ts
2
+ import { HARNESS_IDS, PERMISSION_MODES } from "@prismalens/config/harness";
3
+ import { llmProviderIdSchema } from "@prismalens/config/llm";
4
+ import { SANDBOX_MODES } from "@prismalens/engine";
5
+ import { z } from "zod";
6
+ var PermissionConfigSchema = z.object({
7
+ mode: z.enum(PERMISSION_MODES).default("read-only")
8
+ });
9
+ var HarnessNativeConfigSchema = z.object({
10
+ native: z.record(z.string(), z.unknown()).optional()
11
+ });
12
+ var AgentLimitsConfigSchema = z.object({
13
+ /** Wall-clock deadline (ms) — enforced by every sandbox provider. */
14
+ wall_clock_ms: z.number().int().positive().optional(),
15
+ /** Memory ceiling (MB) — best-effort (srt+systemd-run only). */
16
+ memory_mb: z.number().int().positive().optional(),
17
+ /** CPU quota (whole/fractional cores) — best-effort (srt+systemd-run only). */
18
+ cpu_cores: z.number().positive().optional()
19
+ });
20
+ var AgentConfigSchema = z.object({
21
+ default: z.enum(HARNESS_IDS).default("claude-code"),
22
+ /**
23
+ * BARE model id (e.g. "gpt-oss:120b") for the Tier-2 HARNESS ONLY — the chosen
24
+ * harness applies its own provider prefix (ADR-0017: deepagents prepends
25
+ * "openai:"; Claude Code takes it bare). Omit to let the harness pick its own
26
+ * default. The Tier-1 reduce model is a SEPARATE knob — `synth.model` (ADR-0013/
27
+ * 0016): the two calls go to different providers, so one key must never feed both.
28
+ */
29
+ model: z.string().optional(),
30
+ /** The posture dial (ADR-0017). Defaults to `read-only`. */
31
+ permissions: optionalWithDefaults(PermissionConfigSchema),
32
+ /**
33
+ * The isolation boundary the harness runs in (ADR-0020): `process` (the always-on
34
+ * cooperative floor), `srt` (enforced OS boundary), or `auto` (srt WHEN its egress
35
+ * bridge is healthy — the self-check, B.1.1 — else the floor; the degrade is honest,
36
+ * never silent). Defaults to `auto`: honest precisely BECAUSE of the self-check, which
37
+ * is what makes it safe to prefer the enforced boundary by default.
38
+ */
39
+ sandbox: z.enum(SANDBOX_MODES).default("auto"),
40
+ /**
41
+ * Best-effort resource caps for the sandboxed harness (ADR-0020). Optional; an
42
+ * omitted section means "no caps" (the object defaults to `{}` after parse).
43
+ */
44
+ limits: optionalWithDefaults(AgentLimitsConfigSchema),
45
+ /**
46
+ * Per-alert fan-out cap (ADR-0016 decision 2): the max branches the supervisor
47
+ * runs when a context carries multiple alerts. Optional — omitted ⇒ the engine
48
+ * default (3). A single-alert run always uses one branch regardless.
49
+ */
50
+ max_branches: z.number().int().positive().optional(),
51
+ max_turns: z.number().int().positive().optional()
52
+ });
53
+ var WorkspaceConfigSchema = z.object({
54
+ dir: z.string().default("~/.prismalens")
55
+ });
56
+ var ListenCapsConfigSchema = z.object({
57
+ /** Max investigations running at once. Default 2. */
58
+ max_concurrent: z.number().int().positive().default(2),
59
+ /** Max investigations started per trailing hour. Default 10. */
60
+ max_per_hour: z.number().int().positive().default(10),
61
+ /** Per-run turn ceiling for the default harness. Unset ⇒ the harness default. */
62
+ max_turns: z.number().int().positive().optional()
63
+ });
64
+ var ListenConfigSchema = z.object({
65
+ /** Local intake host. Default 127.0.0.1. */
66
+ host: z.string().default("127.0.0.1"),
67
+ /** Local intake port (4181: clear of 9090/9093/3000/8080 defaults). 0 = ephemeral. */
68
+ port: z.number().int().min(0).max(65535).default(4181),
69
+ /** Shared bearer token Alertmanager presents; unset ⇒ `pl listen` refuses to start. */
70
+ token: z.string().optional(),
71
+ /** Max alerts waiting or running at once; default 8. */
72
+ max_pending: z.number().int().positive().default(8),
73
+ /** Grouping window in milliseconds to debounce alerts into one investigation. */
74
+ grouping_window_ms: z.number().int().min(1e3).max(12e4).default(6e4),
75
+ /**
76
+ * Slack incoming-webhook URL for report delivery (issue #61). Optional — unset ⇒
77
+ * delivery disabled. Set via env interpolation (slack_webhook_url:
78
+ * "${PRISMALENS_SLACK_WEBHOOK_URL}") so the secret stays in env (ADR-0006).
79
+ */
80
+ slack_webhook_url: z.string().url().optional(),
81
+ /** Run-budget guardrails (issue #62). Always present with defaults after parse. */
82
+ caps: optionalWithDefaults(ListenCapsConfigSchema)
83
+ });
84
+ var TelemetryConfigSchema = z.object({
85
+ prometheus_url: z.string().optional(),
86
+ alertmanager_url: z.string().optional(),
87
+ api_url: z.string().optional()
88
+ });
89
+ var ServiceConfigSchema = z.object({
90
+ tier: z.string().optional(),
91
+ /** owner/name slug or a local path the harness reads. */
92
+ repo: z.string().optional(),
93
+ /** Direct dependency service names (blast-radius seed). */
94
+ depends_on: z.array(z.string()).default([])
95
+ });
96
+ var LogSourceConfigSchema = z.object({
97
+ kind: z.string().optional(),
98
+ url: z.string().optional()
99
+ });
100
+ var AlertSourceConfigSchema = z.record(
101
+ z.string(),
102
+ z.record(z.string(), z.string())
103
+ );
104
+ var RepoConfigSchema = z.object({
105
+ repo: z.string(),
106
+ local_path: z.string().nullable().default(null),
107
+ alert_sources: AlertSourceConfigSchema.optional()
108
+ });
109
+ function optionalWithDefaults(schema) {
110
+ return z.optional(z.record(z.string(), z.unknown())).transform((val, ctx) => {
111
+ const res = schema.safeParse(val ?? {});
112
+ if (!res.success) {
113
+ for (const issue of res.error.issues) {
114
+ ctx.addIssue({ ...issue });
115
+ }
116
+ return z.NEVER;
117
+ }
118
+ return res.data;
119
+ });
120
+ }
121
+ var SynthConfigSchema = z.object({
122
+ provider: llmProviderIdSchema.optional(),
123
+ model: z.string().optional(),
124
+ base_url: z.string().url().optional()
125
+ });
126
+ var PlConfigSchema = z.object({
127
+ $schema: z.string().optional(),
128
+ /** Convenience single-repo default (owner/name); `repos` is the multi-repo map. */
129
+ repo: z.string().optional(),
130
+ repos: z.record(z.string(), RepoConfigSchema).optional().transform((val) => val ?? {}),
131
+ /** Service catalog (ADR-0015) — keyed by service name; maps into the context. */
132
+ services: z.record(z.string(), ServiceConfigSchema).optional().transform((val) => val ?? {}),
133
+ /** Read-only log-query system the harness may query. */
134
+ logs: optionalWithDefaults(LogSourceConfigSchema),
135
+ agent: optionalWithDefaults(AgentConfigSchema),
136
+ synth: optionalWithDefaults(SynthConfigSchema),
137
+ workspace: optionalWithDefaults(WorkspaceConfigSchema),
138
+ listen: optionalWithDefaults(ListenConfigSchema),
139
+ telemetry: optionalWithDefaults(TelemetryConfigSchema),
140
+ alert_sources: AlertSourceConfigSchema.optional().transform(
141
+ (val) => val ?? {}
142
+ ),
143
+ /** Per-harness native passthrough (ADR-0017), keyed by harness id. */
144
+ harnesses: z.record(z.string(), HarnessNativeConfigSchema).optional().transform((val) => val ?? {})
145
+ });
146
+
147
+ export {
148
+ AgentConfigSchema,
149
+ PlConfigSchema
150
+ };
@@ -0,0 +1,22 @@
1
+ // src/version.ts
2
+ import { readFileSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ function cliVersion() {
6
+ let dir = dirname(fileURLToPath(import.meta.url));
7
+ for (let i = 0; i < 4; i++) {
8
+ try {
9
+ const pkg = JSON.parse(
10
+ readFileSync(join(dir, "package.json"), "utf8")
11
+ );
12
+ if (pkg.name === "prismalens" && pkg.version) return pkg.version;
13
+ } catch {
14
+ }
15
+ dir = dirname(dir);
16
+ }
17
+ return "0.0.0";
18
+ }
19
+
20
+ export {
21
+ cliVersion
22
+ };