prismalens 0.4.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.
- package/README.md +21 -347
- package/dist/bin/prismalens.js +1 -0
- package/dist/{chunk-TGP6QTFO.js → chunk-5STPIUCJ.js} +4 -10
- package/dist/{chunk-PVQVFRIV.js → chunk-JX2QAP6S.js} +160 -38
- package/dist/{chunk-SSEIMBQ2.js → chunk-LAYYJBZ5.js} +33 -5
- package/dist/{chunk-CTKCK7QT.js → chunk-TSW5RW5B.js} +109 -20
- package/dist/{chunk-V6M6ISKI.js → chunk-VI32U36Y.js} +1 -1
- package/dist/src/cli/auth.js +4 -8
- package/dist/src/cli/doctor.js +10 -16
- package/dist/src/cli/grouping.js +1 -7
- package/dist/src/cli/init.js +2 -7
- package/dist/src/cli/investigate.js +4 -10
- package/dist/src/cli/listen.js +12 -91
- package/dist/src/cli/report.js +1 -3
- package/dist/src/cli/serve.js +20 -18
- package/dist/src/cli/status.js +1 -3
- package/dist/src/cli/up.js +73 -0
- package/node_modules/@prismalens/api/dist/src/app.controller.js +39 -0
- package/node_modules/@prismalens/api/dist/src/app.module.js +156 -0
- package/node_modules/@prismalens/api/dist/src/core/auth/auth.controller.js +41 -0
- package/node_modules/@prismalens/api/dist/src/core/auth/auth.guard.js +57 -0
- package/node_modules/@prismalens/api/dist/src/core/auth/auth.module.js +24 -0
- package/node_modules/@prismalens/api/dist/src/core/auth/auth.service.js +114 -0
- package/node_modules/@prismalens/api/dist/src/core/auth/current-user.decorator.js +10 -0
- package/node_modules/@prismalens/api/dist/src/core/auth/index.js +7 -0
- package/node_modules/@prismalens/api/dist/src/core/auth/orpc-auth.utils.js +39 -0
- package/node_modules/@prismalens/api/dist/src/core/auth/public.decorator.js +4 -0
- package/node_modules/@prismalens/api/dist/src/core/auth/session-cookies.js +8 -0
- package/node_modules/@prismalens/api/dist/src/core/license/decorators.js +24 -0
- package/node_modules/@prismalens/api/dist/src/core/license/license.constants.js +60 -0
- package/node_modules/@prismalens/api/dist/src/core/license/license.controller.js +122 -0
- package/node_modules/@prismalens/api/dist/src/core/license/license.guard.js +96 -0
- package/node_modules/@prismalens/api/dist/src/core/license/license.module.js +37 -0
- package/node_modules/@prismalens/api/dist/src/core/license/license.service.js +252 -0
- package/node_modules/@prismalens/api/dist/src/core/prisma/prisma.module.js +19 -0
- package/node_modules/@prismalens/api/dist/src/core/prisma/prisma.service.js +134 -0
- package/node_modules/@prismalens/api/dist/src/core/settings/llm-settings.service.js +438 -0
- package/node_modules/@prismalens/api/dist/src/core/settings/settings.controller.js +117 -0
- package/node_modules/@prismalens/api/dist/src/core/settings/settings.module.js +24 -0
- package/node_modules/@prismalens/api/dist/src/core/settings/settings.service.js +219 -0
- package/node_modules/@prismalens/api/dist/src/core/setup/setup.controller.js +134 -0
- package/node_modules/@prismalens/api/dist/src/core/setup/setup.module.js +21 -0
- package/node_modules/@prismalens/api/dist/src/core/users/dto/create-user.dto.js +30 -0
- package/node_modules/@prismalens/api/dist/src/core/users/users.controller.js +14 -0
- package/node_modules/@prismalens/api/dist/src/core/users/users.module.js +22 -0
- package/node_modules/@prismalens/api/dist/src/core/users/users.service.js +63 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/dev-seed/dev-seed.module.js +21 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/dev-seed/dev-seed.service.js +60 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/dispatch.module.js +22 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/dispatch.service.js +154 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/dispatcher.js +168 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/event-bus.js +51 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/event-bus.module.js +19 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/fork-runner.js +153 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/dispatch/job-store.js +198 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/health/health.controller.js +63 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/health/health.module.js +19 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/dto/create-timeline-entry.dto.js +48 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/dto/index.js +5 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/dto/investigation-result.dto.js +75 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/dto/recommendation.dto.js +56 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/dto/update-investigation-status.dto.js +37 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/guards/internal.guard.js +41 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/internal-integrations.controller.js +60 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/internal-investigations.controller.js +111 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/internal-settings.controller.js +49 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/internal-timeline.controller.js +52 -0
- package/node_modules/@prismalens/api/dist/src/infrastructure/internal/internal.module.js +39 -0
- package/node_modules/@prismalens/api/dist/src/main.js +152 -0
- package/node_modules/@prismalens/api/dist/src/middlewares/helmet.middleware.js +34 -0
- package/node_modules/@prismalens/api/dist/src/middlewares/host-allowlist.middleware.js +123 -0
- package/node_modules/@prismalens/api/dist/src/middlewares/webhook-cors.middleware.js +28 -0
- package/node_modules/@prismalens/api/dist/src/middlewares/webhook-raw-body.middleware.js +24 -0
- package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/alert-mapping.controller.js +124 -0
- package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/alert-mapping.module.js +22 -0
- package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/alert-mapping.service.js +331 -0
- package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/dto/create-mapping-rule.dto.js +9 -0
- package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/dto/index.js +3 -0
- package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/dto/test-mapping.dto.js +8 -0
- package/node_modules/@prismalens/api/dist/src/modules/alert-mapping/dto/update-mapping-rule.dto.js +9 -0
- package/node_modules/@prismalens/api/dist/src/modules/alerts/alerts.controller.js +241 -0
- package/node_modules/@prismalens/api/dist/src/modules/alerts/alerts.module.js +26 -0
- package/node_modules/@prismalens/api/dist/src/modules/alerts/alerts.service.js +342 -0
- package/node_modules/@prismalens/api/dist/src/modules/alerts/dto/create-alert.dto.js +75 -0
- package/node_modules/@prismalens/api/dist/src/modules/alerts/dto/index.js +3 -0
- package/node_modules/@prismalens/api/dist/src/modules/alerts/dto/update-alert.dto.js +51 -0
- package/node_modules/@prismalens/api/dist/src/modules/correlation/correlation.controller.js +108 -0
- package/node_modules/@prismalens/api/dist/src/modules/correlation/correlation.module.js +22 -0
- package/node_modules/@prismalens/api/dist/src/modules/correlation/correlation.service.js +391 -0
- package/node_modules/@prismalens/api/dist/src/modules/correlation/dto/create-correlation-rule.dto.js +97 -0
- package/node_modules/@prismalens/api/dist/src/modules/correlation/dto/index.js +3 -0
- package/node_modules/@prismalens/api/dist/src/modules/correlation/dto/update-correlation-rule.dto.js +98 -0
- package/node_modules/@prismalens/api/dist/src/modules/deployments/deployments.controller.js +95 -0
- package/node_modules/@prismalens/api/dist/src/modules/deployments/deployments.module.js +22 -0
- package/node_modules/@prismalens/api/dist/src/modules/deployments/deployments.service.js +140 -0
- package/node_modules/@prismalens/api/dist/src/modules/deployments/dto/create-deployment.dto.js +92 -0
- package/node_modules/@prismalens/api/dist/src/modules/deployments/dto/index.js +3 -0
- package/node_modules/@prismalens/api/dist/src/modules/deployments/dto/link-deployment.dto.js +18 -0
- package/node_modules/@prismalens/api/dist/src/modules/events/dto/create-event.dto.js +9 -0
- package/node_modules/@prismalens/api/dist/src/modules/events/dto/index.js +2 -0
- package/node_modules/@prismalens/api/dist/src/modules/events/events.controller.js +65 -0
- package/node_modules/@prismalens/api/dist/src/modules/events/events.module.js +20 -0
- package/node_modules/@prismalens/api/dist/src/modules/events/events.service.js +124 -0
- package/node_modules/@prismalens/api/dist/src/modules/incidents/dto/add-alert.dto.js +4 -0
- package/node_modules/@prismalens/api/dist/src/modules/incidents/dto/create-incident.dto.js +11 -0
- package/node_modules/@prismalens/api/dist/src/modules/incidents/dto/index.js +3 -0
- package/node_modules/@prismalens/api/dist/src/modules/incidents/dto/update-incident.dto.js +13 -0
- package/node_modules/@prismalens/api/dist/src/modules/incidents/incidents.controller.js +306 -0
- package/node_modules/@prismalens/api/dist/src/modules/incidents/incidents.module.js +28 -0
- package/node_modules/@prismalens/api/dist/src/modules/incidents/incidents.service.js +376 -0
- package/node_modules/@prismalens/api/dist/src/modules/integrations/crypto/credentials.service.js +52 -0
- package/node_modules/@prismalens/api/dist/src/modules/integrations/dto/create-connection.dto.js +102 -0
- package/node_modules/@prismalens/api/dist/src/modules/integrations/dto/update-connection.dto.js +96 -0
- package/node_modules/@prismalens/api/dist/src/modules/integrations/integrations.controller.js +327 -0
- package/node_modules/@prismalens/api/dist/src/modules/integrations/integrations.module.js +32 -0
- package/node_modules/@prismalens/api/dist/src/modules/integrations/integrations.service.js +797 -0
- package/node_modules/@prismalens/api/dist/src/modules/integrations/oauth/oauth.controller.js +156 -0
- package/node_modules/@prismalens/api/dist/src/modules/integrations/oauth/oauth.service.js +240 -0
- package/node_modules/@prismalens/api/dist/src/modules/integrations/token-refresh.processor.js +112 -0
- package/node_modules/@prismalens/api/dist/src/modules/investigations/dto/create-investigation.dto.js +4 -0
- package/node_modules/@prismalens/api/dist/src/modules/investigations/dto/index.js +2 -0
- package/node_modules/@prismalens/api/dist/src/modules/investigations/investigation-stream.controller.js +70 -0
- package/node_modules/@prismalens/api/dist/src/modules/investigations/investigation-trigger.service.js +330 -0
- package/node_modules/@prismalens/api/dist/src/modules/investigations/investigation-update.service.js +158 -0
- package/node_modules/@prismalens/api/dist/src/modules/investigations/investigations.controller.js +209 -0
- package/node_modules/@prismalens/api/dist/src/modules/investigations/investigations.module.js +48 -0
- package/node_modules/@prismalens/api/dist/src/modules/investigations/investigations.service.js +363 -0
- package/node_modules/@prismalens/api/dist/src/modules/investigations/sse-writer.js +90 -0
- package/node_modules/@prismalens/api/dist/src/modules/investigations/stream-relay.service.js +167 -0
- package/node_modules/@prismalens/api/dist/src/modules/openapi/openapi.controller.js +134 -0
- package/node_modules/@prismalens/api/dist/src/modules/openapi/openapi.module.js +19 -0
- package/node_modules/@prismalens/api/dist/src/modules/overlay/overlay.logic.js +168 -0
- package/node_modules/@prismalens/api/dist/src/modules/overlay/overlay.module.js +18 -0
- package/node_modules/@prismalens/api/dist/src/modules/overlay/overlay.service.js +242 -0
- package/node_modules/@prismalens/api/dist/src/modules/postmortems/dto/index.js +2 -0
- package/node_modules/@prismalens/api/dist/src/modules/postmortems/postmortems.controller.js +96 -0
- package/node_modules/@prismalens/api/dist/src/modules/postmortems/postmortems.module.js +20 -0
- package/node_modules/@prismalens/api/dist/src/modules/postmortems/postmortems.service.js +185 -0
- package/node_modules/@prismalens/api/dist/src/modules/recommendations/dto/index.js +2 -0
- package/node_modules/@prismalens/api/dist/src/modules/recommendations/dto/update-recommendation.dto.js +32 -0
- package/node_modules/@prismalens/api/dist/src/modules/recommendations/recommendations.controller.js +110 -0
- package/node_modules/@prismalens/api/dist/src/modules/recommendations/recommendations.module.js +20 -0
- package/node_modules/@prismalens/api/dist/src/modules/recommendations/recommendations.service.js +136 -0
- package/node_modules/@prismalens/api/dist/src/modules/repositories/dto/create-repository.dto.js +68 -0
- package/node_modules/@prismalens/api/dist/src/modules/repositories/dto/index.js +3 -0
- package/node_modules/@prismalens/api/dist/src/modules/repositories/dto/link-repository.dto.js +30 -0
- package/node_modules/@prismalens/api/dist/src/modules/repositories/repositories.controller.js +105 -0
- package/node_modules/@prismalens/api/dist/src/modules/repositories/repositories.module.js +22 -0
- package/node_modules/@prismalens/api/dist/src/modules/repositories/repositories.service.js +129 -0
- package/node_modules/@prismalens/api/dist/src/modules/service-discovery/dto/accept-bulk-suggestions.dto.js +5 -0
- package/node_modules/@prismalens/api/dist/src/modules/service-discovery/dto/accept-suggestion.dto.js +8 -0
- package/node_modules/@prismalens/api/dist/src/modules/service-discovery/dto/index.js +3 -0
- package/node_modules/@prismalens/api/dist/src/modules/service-discovery/service-discovery.controller.js +127 -0
- package/node_modules/@prismalens/api/dist/src/modules/service-discovery/service-discovery.module.js +23 -0
- package/node_modules/@prismalens/api/dist/src/modules/service-discovery/service-discovery.service.js +478 -0
- package/node_modules/@prismalens/api/dist/src/modules/services/dto/add-dependency.dto.js +32 -0
- package/node_modules/@prismalens/api/dist/src/modules/services/dto/create-service.dto.js +75 -0
- package/node_modules/@prismalens/api/dist/src/modules/services/dto/index.js +4 -0
- package/node_modules/@prismalens/api/dist/src/modules/services/dto/update-service.dto.js +69 -0
- package/node_modules/@prismalens/api/dist/src/modules/services/services.controller.js +250 -0
- package/node_modules/@prismalens/api/dist/src/modules/services/services.module.js +20 -0
- package/node_modules/@prismalens/api/dist/src/modules/services/services.service.js +251 -0
- package/node_modules/@prismalens/api/dist/src/modules/timeline/dto/create-timeline-entry.dto.js +60 -0
- package/node_modules/@prismalens/api/dist/src/modules/timeline/dto/index.js +2 -0
- package/node_modules/@prismalens/api/dist/src/modules/timeline/timeline.controller.js +83 -0
- package/node_modules/@prismalens/api/dist/src/modules/timeline/timeline.module.js +20 -0
- package/node_modules/@prismalens/api/dist/src/modules/timeline/timeline.service.js +94 -0
- package/node_modules/@prismalens/api/dist/src/modules/webhooks/dto/generic-webhook.dto.js +327 -0
- package/node_modules/@prismalens/api/dist/src/modules/webhooks/dto/index.js +2 -0
- package/node_modules/@prismalens/api/dist/src/modules/webhooks/render-webhook-signature.guard.js +62 -0
- package/node_modules/@prismalens/api/dist/src/modules/webhooks/webhook-signature.guard.js +61 -0
- package/node_modules/@prismalens/api/dist/src/modules/webhooks/webhooks.controller.js +134 -0
- package/node_modules/@prismalens/api/dist/src/modules/webhooks/webhooks.module.js +40 -0
- package/node_modules/@prismalens/api/dist/src/modules/webhooks/webhooks.service.js +325 -0
- package/node_modules/@prismalens/api/dist/src/shared/constants/routes.js +11 -0
- package/node_modules/@prismalens/api/dist/src/shared/enums/index.js +20 -0
- package/node_modules/@prismalens/api/dist/src/shared/events/investigation-events.js +2 -0
- package/node_modules/@prismalens/api/dist/src/shared/utils/json-utils.js +29 -0
- package/node_modules/@prismalens/api/dist/src/shared/utils/listen-error.js +9 -0
- package/node_modules/@prismalens/api/package.json +12 -0
- package/node_modules/@prismalens/api/public/assets/ClientOnly--uuL8w7N.js +1 -0
- package/node_modules/@prismalens/api/public/assets/InvestigationCanvas-8hax8RNO.css +1 -0
- package/node_modules/@prismalens/api/public/assets/InvestigationCanvas-CcJuvY41.js +3 -0
- package/node_modules/@prismalens/api/public/assets/Match-IodEdcgp.js +1 -0
- package/node_modules/@prismalens/api/public/assets/MutationError-BHWLJq4N.js +1 -0
- package/node_modules/@prismalens/api/public/assets/ProviderModelSelector-Ryr9vYLX.js +1 -0
- package/node_modules/@prismalens/api/public/assets/QueryClientProvider-Bnoyi3cC.js +1 -0
- package/node_modules/@prismalens/api/public/assets/ServiceFormDialog-pHaDAJww.js +1 -0
- package/node_modules/@prismalens/api/public/assets/StatusBadge-DERhIQYG.js +1 -0
- package/node_modules/@prismalens/api/public/assets/_authenticated-CoCwzJmL.js +1 -0
- package/node_modules/@prismalens/api/public/assets/_authenticated-DWo3H_-8.js +1 -0
- package/node_modules/@prismalens/api/public/assets/_id-AdTmLHRt.js +1 -0
- package/node_modules/@prismalens/api/public/assets/_id-CU2SszeJ.js +2 -0
- package/node_modules/@prismalens/api/public/assets/_id-GkJfdMLx.js +1 -0
- package/node_modules/@prismalens/api/public/assets/activity-BuLacqc6.js +1 -0
- package/node_modules/@prismalens/api/public/assets/alert-CHk0q15J.js +1 -0
- package/node_modules/@prismalens/api/public/assets/alert-dialog-Dugh1jAD.js +1 -0
- package/node_modules/@prismalens/api/public/assets/alerts-DQJANT5K.js +1 -0
- package/node_modules/@prismalens/api/public/assets/app-vNv-gfip.css +2 -0
- package/node_modules/@prismalens/api/public/assets/arrow-left-BEsyjQit.js +1 -0
- package/node_modules/@prismalens/api/public/assets/badge-DXW8TquP.js +1 -0
- package/node_modules/@prismalens/api/public/assets/bell-CfLfMv3R.js +1 -0
- package/node_modules/@prismalens/api/public/assets/button-D2Hz_xyq.js +1 -0
- package/node_modules/@prismalens/api/public/assets/card-Cna4whU5.js +1 -0
- package/node_modules/@prismalens/api/public/assets/checkbox-FppVo2Ln.js +1 -0
- package/node_modules/@prismalens/api/public/assets/chevron-right-bRNDjfxy.js +1 -0
- package/node_modules/@prismalens/api/public/assets/circle-CH7vaplC.js +1 -0
- package/node_modules/@prismalens/api/public/assets/circle-alert-DJkh1udP.js +1 -0
- package/node_modules/@prismalens/api/public/assets/circle-check-big-CPrY1SEO.js +1 -0
- package/node_modules/@prismalens/api/public/assets/circle-x-B273d2QJ.js +1 -0
- package/node_modules/@prismalens/api/public/assets/clock-DAtaxeP6.js +1 -0
- package/node_modules/@prismalens/api/public/assets/collapsible-BjXqvd15.js +1 -0
- package/node_modules/@prismalens/api/public/assets/colors-Be4TmXLI.js +1 -0
- package/node_modules/@prismalens/api/public/assets/configure-CkIHj-78.js +1 -0
- package/node_modules/@prismalens/api/public/assets/data-table-CtWstVgY.js +1 -0
- package/node_modules/@prismalens/api/public/assets/dialog-DtF5GTSk.js +1 -0
- package/node_modules/@prismalens/api/public/assets/discovery-h-jiCGQG.js +1 -0
- package/node_modules/@prismalens/api/public/assets/dist-CZpM8B58.js +1 -0
- package/node_modules/@prismalens/api/public/assets/dist-CsWlqBes.js +64 -0
- package/node_modules/@prismalens/api/public/assets/empty-state-9sIQayEY.js +1 -0
- package/node_modules/@prismalens/api/public/assets/external-link-DA-gFnPk.js +1 -0
- package/node_modules/@prismalens/api/public/assets/eye-h_TVSVZd.js +1 -0
- package/node_modules/@prismalens/api/public/assets/folder-search-BncFWPmR.js +1 -0
- package/node_modules/@prismalens/api/public/assets/formatDistanceToNow-DKEQoStK.js +1 -0
- package/node_modules/@prismalens/api/public/assets/github-icon-D4qdxz0P.js +1 -0
- package/node_modules/@prismalens/api/public/assets/hooks-C_h3SbKf.js +1 -0
- package/node_modules/@prismalens/api/public/assets/incidents-CY8yrmWi.js +1 -0
- package/node_modules/@prismalens/api/public/assets/incidents-Ck4tZDab.js +55 -0
- package/node_modules/@prismalens/api/public/assets/index-CYBUEgiF.js +68 -0
- package/node_modules/@prismalens/api/public/assets/integration-icons-BOs4XGIA.js +1 -0
- package/node_modules/@prismalens/api/public/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/investigation.utils-CZphvIrc.js +1 -0
- package/node_modules/@prismalens/api/public/assets/investigations-BoWNiPy7.js +1 -0
- package/node_modules/@prismalens/api/public/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/node_modules/@prismalens/api/public/assets/label-DUe0_M5w.js +1 -0
- package/node_modules/@prismalens/api/public/assets/layout-CeT3LRF7.js +1 -0
- package/node_modules/@prismalens/api/public/assets/lib-hSGK_-Di.js +4 -0
- package/node_modules/@prismalens/api/public/assets/lightbulb-DyOhvTqC.js +1 -0
- package/node_modules/@prismalens/api/public/assets/link-BrYtRLMx.js +1 -0
- package/node_modules/@prismalens/api/public/assets/list-DoJv1VuU.js +1 -0
- package/node_modules/@prismalens/api/public/assets/loader-circle-CcKe4gfe.js +1 -0
- package/node_modules/@prismalens/api/public/assets/login-Hrq9xVXL.js +1 -0
- package/node_modules/@prismalens/api/public/assets/matchContext-DqfdXpUw.js +1 -0
- package/node_modules/@prismalens/api/public/assets/message-square-DyJRCl0Z.js +1 -0
- package/node_modules/@prismalens/api/public/assets/play-Cl-dxWuH.js +1 -0
- package/node_modules/@prismalens/api/public/assets/progress-CniLn3m0.js +6 -0
- package/node_modules/@prismalens/api/public/assets/radio-group-B4CFZ8e9.js +1 -0
- package/node_modules/@prismalens/api/public/assets/refresh-cw-BUJxeVPZ.js +1 -0
- package/node_modules/@prismalens/api/public/assets/root-DLTE-HSj.js +1 -0
- package/node_modules/@prismalens/api/public/assets/route-D-xTKyaj.js +1 -0
- package/node_modules/@prismalens/api/public/assets/rules-qmpJxYUz.js +1 -0
- package/node_modules/@prismalens/api/public/assets/scroll-area-qX4N_Ai-.js +1 -0
- package/node_modules/@prismalens/api/public/assets/select-Crre84I0.js +1 -0
- package/node_modules/@prismalens/api/public/assets/server-DdoEdVKT.js +1 -0
- package/node_modules/@prismalens/api/public/assets/services-BzpauajK.js +1 -0
- package/node_modules/@prismalens/api/public/assets/settings-2-COWS2MJc.js +1 -0
- package/node_modules/@prismalens/api/public/assets/settings-2WXqxGY5.js +1 -0
- package/node_modules/@prismalens/api/public/assets/setup-B77GlS_Y.js +1 -0
- package/node_modules/@prismalens/api/public/assets/setup-qJd5KQhM.js +1 -0
- package/node_modules/@prismalens/api/public/assets/skeleton-uHoNuB0v.js +1 -0
- package/node_modules/@prismalens/api/public/assets/sparkles-BzLskqFE.js +1 -0
- package/node_modules/@prismalens/api/public/assets/string-Bg7bf2KD.js +1 -0
- package/node_modules/@prismalens/api/public/assets/table-BHtdhI9A.js +1 -0
- package/node_modules/@prismalens/api/public/assets/tabs-CNVKT4mJ.js +1 -0
- package/node_modules/@prismalens/api/public/assets/tooltip-BmW1p0qe.js +1 -0
- package/node_modules/@prismalens/api/public/assets/trash-2-CJHwWyOB.js +1 -0
- package/node_modules/@prismalens/api/public/assets/use-investigations-orpc-DU2SE5K2.js +1 -0
- package/node_modules/@prismalens/api/public/assets/useStore-BGoeuanS.js +1 -0
- package/node_modules/@prismalens/api/public/assets/with-selector-DN3lmfWr.js +1 -0
- package/node_modules/@prismalens/api/public/assets/zap-DOu38RFi.js +1 -0
- package/node_modules/@prismalens/api/public/index.html +7 -0
- package/node_modules/@prismalens/auth/dist/auth.js +111 -0
- package/node_modules/@prismalens/auth/dist/client.js +55 -0
- package/node_modules/@prismalens/auth/dist/index.js +5 -0
- package/node_modules/@prismalens/auth/dist/roles.js +12 -0
- package/node_modules/@prismalens/auth/package.json +23 -0
- package/node_modules/@prismalens/config/dist/agents.js +15 -0
- package/node_modules/@prismalens/config/dist/auth-store.js +65 -0
- package/node_modules/@prismalens/config/dist/credentials.js +56 -0
- package/node_modules/@prismalens/config/dist/env/database.js +95 -0
- package/node_modules/@prismalens/config/dist/env/deployment.js +66 -0
- package/node_modules/@prismalens/config/dist/env/dispatch.js +104 -0
- package/node_modules/@prismalens/config/dist/env/index.js +13 -0
- package/node_modules/@prismalens/config/dist/env/langsmith.js +29 -0
- package/node_modules/@prismalens/config/dist/env/llm.js +32 -0
- package/node_modules/@prismalens/config/dist/env/logging.js +93 -0
- package/node_modules/@prismalens/config/dist/env/readers.js +79 -0
- package/node_modules/@prismalens/config/dist/env/server.js +97 -0
- package/node_modules/@prismalens/config/dist/env/skills.js +66 -0
- package/node_modules/@prismalens/config/dist/env/worker.js +15 -0
- package/node_modules/@prismalens/config/dist/harness.js +9 -0
- package/node_modules/@prismalens/config/dist/index.js +153 -0
- package/node_modules/@prismalens/config/dist/integrations.js +100 -0
- package/node_modules/@prismalens/config/dist/investigation.js +61 -0
- package/node_modules/@prismalens/config/dist/llm.js +23 -0
- package/node_modules/@prismalens/config/dist/mcp.js +21 -0
- package/node_modules/@prismalens/config/dist/model.js +101 -0
- package/node_modules/@prismalens/config/dist/providers/agents.js +51 -0
- package/node_modules/@prismalens/config/dist/providers/harness.js +91 -0
- package/node_modules/@prismalens/config/dist/providers/llm.js +170 -0
- package/node_modules/@prismalens/config/dist/providers/mcp.js +232 -0
- package/node_modules/@prismalens/config/dist/providers/skills.js +10 -0
- package/node_modules/@prismalens/config/dist/utils/app-data.js +51 -0
- package/node_modules/@prismalens/config/dist/utils/database-url.js +57 -0
- package/node_modules/@prismalens/config/dist/utils/encryption-key.js +91 -0
- package/node_modules/@prismalens/config/dist/utils/repo.js +228 -0
- package/node_modules/@prismalens/config/dist/utils/secrets.js +21 -0
- package/node_modules/@prismalens/config/package.json +55 -0
- package/node_modules/@prismalens/contracts/dist/contracts/alert-mapping.js +102 -0
- package/node_modules/@prismalens/contracts/dist/contracts/alerts.js +156 -0
- package/node_modules/@prismalens/contracts/dist/contracts/correlation.js +89 -0
- package/node_modules/@prismalens/contracts/dist/contracts/deployments.js +109 -0
- package/node_modules/@prismalens/contracts/dist/contracts/events.js +50 -0
- package/node_modules/@prismalens/contracts/dist/contracts/incidents.js +141 -0
- package/node_modules/@prismalens/contracts/dist/contracts/index.js +63 -0
- package/node_modules/@prismalens/contracts/dist/contracts/integrations.js +282 -0
- package/node_modules/@prismalens/contracts/dist/contracts/investigations.js +116 -0
- package/node_modules/@prismalens/contracts/dist/contracts/postmortems.js +92 -0
- package/node_modules/@prismalens/contracts/dist/contracts/recommendations.js +89 -0
- package/node_modules/@prismalens/contracts/dist/contracts/repositories.js +111 -0
- package/node_modules/@prismalens/contracts/dist/contracts/service-discovery.js +102 -0
- package/node_modules/@prismalens/contracts/dist/contracts/services.js +159 -0
- package/node_modules/@prismalens/contracts/dist/contracts/settings.js +200 -0
- package/node_modules/@prismalens/contracts/dist/contracts/setup.js +100 -0
- package/node_modules/@prismalens/contracts/dist/contracts/timeline.js +63 -0
- package/node_modules/@prismalens/contracts/dist/contracts/webhooks.js +49 -0
- package/node_modules/@prismalens/contracts/dist/index.js +25 -0
- package/node_modules/@prismalens/contracts/dist/schemas/alert-mapping.js +126 -0
- package/node_modules/@prismalens/contracts/dist/schemas/alert.js +162 -0
- package/node_modules/@prismalens/contracts/dist/schemas/change-event.js +20 -0
- package/node_modules/@prismalens/contracts/dist/schemas/common.js +272 -0
- package/node_modules/@prismalens/contracts/dist/schemas/context-pack.js +95 -0
- package/node_modules/@prismalens/contracts/dist/schemas/correlation.js +52 -0
- package/node_modules/@prismalens/contracts/dist/schemas/deployment.js +49 -0
- package/node_modules/@prismalens/contracts/dist/schemas/event.js +40 -0
- package/node_modules/@prismalens/contracts/dist/schemas/incident-similarity.js +17 -0
- package/node_modules/@prismalens/contracts/dist/schemas/incident.js +120 -0
- package/node_modules/@prismalens/contracts/dist/schemas/index.js +32 -0
- package/node_modules/@prismalens/contracts/dist/schemas/integration.js +226 -0
- package/node_modules/@prismalens/contracts/dist/schemas/investigation.js +600 -0
- package/node_modules/@prismalens/contracts/dist/schemas/license.js +29 -0
- package/node_modules/@prismalens/contracts/dist/schemas/overlay.js +77 -0
- package/node_modules/@prismalens/contracts/dist/schemas/postmortem.js +71 -0
- package/node_modules/@prismalens/contracts/dist/schemas/recommendation.js +63 -0
- package/node_modules/@prismalens/contracts/dist/schemas/repository.js +56 -0
- package/node_modules/@prismalens/contracts/dist/schemas/service-discovery.js +74 -0
- package/node_modules/@prismalens/contracts/dist/schemas/service.js +143 -0
- package/node_modules/@prismalens/contracts/dist/schemas/settings.js +338 -0
- package/node_modules/@prismalens/contracts/dist/schemas/timeline.js +52 -0
- package/node_modules/@prismalens/contracts/dist/schemas/webhook.js +90 -0
- package/node_modules/@prismalens/contracts/package.json +27 -0
- package/node_modules/@prismalens/database/dist/client.js +46 -0
- package/node_modules/@prismalens/database/dist/index.js +4 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/client.js +10 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/commonInputTypes.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/enums.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/internal/class.js +39 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/internal/prismaNamespace.js +522 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Account.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Alert.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/AlertMappingRule.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/ChangeEvent.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Connection.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/CorrelationRule.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Deployment.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Event.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Incident.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/IncidentSimilarity.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Integration.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Investigation.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/InvestigationEvent.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Invitation.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Job.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/LicenseInfo.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Member.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/OAuthState.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Organization.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Postmortem.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Recommendation.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Repository.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Service.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/ServiceDependency.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/ServiceIntegration.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/ServiceRepository.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/ServiceSuggestion.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Session.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Setting.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/TimelineEntry.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/User.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models/Verification.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/generated/models.js +2 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260803122809_init/migration.sql +1058 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260811182203_drop_agent_tool_executions/migration.sql +23 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260812180006_alert_dedup_key_not_unique/migration.sql +5 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260822161331_alert_external_id_not_unique/migration.sql +5 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260823073903_account_issuer/migration.sql +14 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/20260826180000_account_issuer_account_id_unique/migration.sql +22 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/app.prisma +981 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/auth.prisma +159 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/integrations.prisma +187 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/main.prisma +17 -0
- package/node_modules/@prismalens/database/dist/prisma/pg/schema/migration_lock.toml +3 -0
- package/node_modules/@prismalens/database/dist/prisma/seed.js +24 -0
- package/node_modules/@prismalens/database/dist/prisma/seeds/demo-data.js +382 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260803122809_init/migration.sql +819 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260811182203_drop_agent_tool_executions/migration.sql +16 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260812180006_alert_dedup_key_not_unique/migration.sql +5 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260822161331_alert_external_id_not_unique/migration.sql +5 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260823073903_account_issuer/migration.sql +32 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/20260826180000_account_issuer_account_id_unique/migration.sql +2 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/app.prisma +620 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/auth.prisma +159 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/integrations.prisma +156 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/main.prisma +17 -0
- package/node_modules/@prismalens/database/dist/prisma/sqlite/schema/migration_lock.toml +3 -0
- package/node_modules/@prismalens/database/dist/src/migrator/index.js +3 -0
- package/node_modules/@prismalens/database/dist/src/migrator/migration-source.js +55 -0
- package/node_modules/@prismalens/database/dist/src/migrator/runner.js +0 -0
- package/node_modules/@prismalens/database/package.json +23 -0
- package/node_modules/@prismalens/engine/dist/adapter/acp-adapter.js +242 -0
- package/node_modules/@prismalens/engine/dist/adapter/claude-code-adapter.js +195 -0
- package/node_modules/@prismalens/engine/dist/config/resolve.js +212 -0
- package/node_modules/@prismalens/engine/dist/index.js +30 -0
- package/node_modules/@prismalens/engine/dist/runner/acp-client.js +292 -0
- package/node_modules/@prismalens/engine/dist/runner/acp-run-branch.js +46 -0
- package/node_modules/@prismalens/engine/dist/runner/claude-code-runner.js +147 -0
- package/node_modules/@prismalens/engine/dist/runner/claude-code-sandbox-spawn.js +61 -0
- package/node_modules/@prismalens/engine/dist/sandbox/e2b.js +374 -0
- package/node_modules/@prismalens/engine/dist/sandbox/process-floor.js +100 -0
- package/node_modules/@prismalens/engine/dist/sandbox/select.js +104 -0
- package/node_modules/@prismalens/engine/dist/sandbox/srt.js +397 -0
- package/node_modules/@prismalens/engine/dist/sandbox/types.js +4 -0
- package/node_modules/@prismalens/engine/dist/sandbox/wsl.js +22 -0
- package/node_modules/@prismalens/engine/dist/supervisor/alert-source.js +47 -0
- package/node_modules/@prismalens/engine/dist/supervisor/conductor.js +88 -0
- package/node_modules/@prismalens/engine/dist/supervisor/decompose.js +364 -0
- package/node_modules/@prismalens/engine/dist/supervisor/fan-out.js +164 -0
- package/node_modules/@prismalens/engine/dist/supervisor/investigate.js +405 -0
- package/node_modules/@prismalens/engine/dist/supervisor/synthesize.js +474 -0
- package/node_modules/@prismalens/engine/dist/tools/provisioning.js +13 -0
- package/node_modules/@prismalens/engine/dist/tools/types.js +4 -0
- package/node_modules/@prismalens/engine/package.json +19 -0
- package/node_modules/@prismalens/integrations/dist/engine/auth-manager.js +170 -0
- package/node_modules/@prismalens/integrations/dist/engine/capability-check.js +62 -0
- package/node_modules/@prismalens/integrations/dist/engine/errors.js +59 -0
- package/node_modules/@prismalens/integrations/dist/engine/github-app-flow.js +151 -0
- package/node_modules/@prismalens/integrations/dist/engine/index.js +13 -0
- package/node_modules/@prismalens/integrations/dist/engine/interpolate.js +35 -0
- package/node_modules/@prismalens/integrations/dist/engine/oauth2-flow.js +188 -0
- package/node_modules/@prismalens/integrations/dist/engine/permission-check.js +58 -0
- package/node_modules/@prismalens/integrations/dist/engine/provider-http-error.js +52 -0
- package/node_modules/@prismalens/integrations/dist/engine/token-refresh.js +214 -0
- package/node_modules/@prismalens/integrations/dist/engine/token-vault.js +121 -0
- package/node_modules/@prismalens/integrations/dist/index.js +12 -0
- package/node_modules/@prismalens/integrations/dist/providers/deployment.interface.js +4 -0
- package/node_modules/@prismalens/integrations/dist/providers/git.interface.js +4 -0
- package/node_modules/@prismalens/integrations/dist/providers/github/github.adapter.js +181 -0
- package/node_modules/@prismalens/integrations/dist/providers/github/index.js +4 -0
- package/node_modules/@prismalens/integrations/dist/providers/index.js +57 -0
- package/node_modules/@prismalens/integrations/dist/providers/render/index.js +4 -0
- package/node_modules/@prismalens/integrations/dist/providers/render/render.adapter.js +139 -0
- package/node_modules/@prismalens/integrations/dist/providers/types.js +4 -0
- package/node_modules/@prismalens/integrations/dist/providers/vercel/index.js +4 -0
- package/node_modules/@prismalens/integrations/dist/providers/vercel/vercel.adapter.js +109 -0
- package/node_modules/@prismalens/integrations/dist/templates/github.js +200 -0
- package/node_modules/@prismalens/integrations/dist/templates/index.js +38 -0
- package/node_modules/@prismalens/integrations/dist/templates/prometheus.js +62 -0
- package/node_modules/@prismalens/integrations/dist/templates/render.js +47 -0
- package/node_modules/@prismalens/integrations/dist/templates/slack.js +110 -0
- package/node_modules/@prismalens/integrations/dist/templates/vercel.js +47 -0
- package/node_modules/@prismalens/integrations/dist/types.js +42 -0
- package/node_modules/@prismalens/integrations/package.json +27 -0
- package/node_modules/@prismalens/logger/dist/core/context.js +120 -0
- package/node_modules/@prismalens/logger/dist/core/formatter.js +128 -0
- package/node_modules/@prismalens/logger/dist/core/index.js +7 -0
- package/node_modules/@prismalens/logger/dist/core/logger.js +230 -0
- package/node_modules/@prismalens/logger/dist/core/sampler.js +134 -0
- package/node_modules/@prismalens/logger/dist/index.js +63 -0
- package/node_modules/@prismalens/logger/dist/integrations/nestjs/index.js +6 -0
- package/node_modules/@prismalens/logger/dist/integrations/nestjs/logger.module.js +140 -0
- package/node_modules/@prismalens/logger/dist/integrations/nestjs/logger.service.js +181 -0
- package/node_modules/@prismalens/logger/dist/integrations/nestjs/request.interceptor.js +209 -0
- package/node_modules/@prismalens/logger/dist/integrations/standalone/create-logger.js +105 -0
- package/node_modules/@prismalens/logger/dist/integrations/standalone/index.js +4 -0
- package/node_modules/@prismalens/logger/dist/transports/console.transport.js +24 -0
- package/node_modules/@prismalens/logger/dist/transports/file.transport.js +147 -0
- package/node_modules/@prismalens/logger/dist/transports/index.js +6 -0
- package/node_modules/@prismalens/logger/dist/transports/transport.js +4 -0
- package/node_modules/@prismalens/logger/dist/types/index.js +6 -0
- package/node_modules/@prismalens/logger/dist/types/log-entry.js +4 -0
- package/node_modules/@prismalens/logger/dist/types/sampling.js +4 -0
- package/node_modules/@prismalens/logger/dist/types/wide-event.js +4 -0
- package/node_modules/@prismalens/logger/dist/utils/id-generator.js +27 -0
- package/node_modules/@prismalens/logger/dist/utils/index.js +6 -0
- package/node_modules/@prismalens/logger/dist/utils/redaction.js +186 -0
- package/node_modules/@prismalens/logger/dist/utils/truncation.js +106 -0
- package/node_modules/@prismalens/logger/package.json +27 -0
- package/node_modules/@prismalens/worker/dist/config.js +5 -0
- package/node_modules/@prismalens/worker/dist/db-investigation-store.js +160 -0
- package/node_modules/@prismalens/worker/dist/index.js +162 -0
- package/node_modules/@prismalens/worker/dist/internal-url.js +20 -0
- package/node_modules/@prismalens/worker/dist/orpc-client.js +17 -0
- package/node_modules/@prismalens/worker/dist/processor.js +734 -0
- package/node_modules/@prismalens/worker/dist/protocol.js +13 -0
- package/node_modules/@prismalens/worker/dist/types.js +3 -0
- package/node_modules/@prismalens/worker/package.json +23 -0
- package/package.json +102 -70
- package/dist/chunk-2Z7QZSIS.js +0 -20
- package/dist/chunk-5BT3XQOG.js +0 -2990
- package/dist/chunk-6N4PHBII.js +0 -30
- package/dist/chunk-CVSS5JPC.js +0 -130
- package/dist/chunk-QDK5PAI3.js +0 -155
- package/dist/chunk-XH6DIKTA.js +0 -83
package/README.md
CHANGED
|
@@ -1,370 +1,44 @@
|
|
|
1
1
|
# prismalens
|
|
2
2
|
|
|
3
|
-
|
|
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
|
|
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
|
-
##
|
|
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
|
-
|
|
87
|
-
|
|
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
|
-
|
|
|
276
|
-
|
|
|
277
|
-
|
|
|
278
|
-
|
|
|
279
|
-
|
|
|
280
|
-
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
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
|
-
|
|
37
|
+
## Documentation
|
|
354
38
|
|
|
355
|
-
|
|
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
|
-
|
|
41
|
+
## License
|
|
361
42
|
|
|
362
|
-
-
|
|
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.
|
package/dist/bin/prismalens.js
CHANGED
|
@@ -25,6 +25,7 @@ var main = defineCommand({
|
|
|
25
25
|
description: "PrismaLens investigation engine CLI \u2014 drives the two-tier engine (ADR-0008/0010)."
|
|
26
26
|
},
|
|
27
27
|
subCommands: {
|
|
28
|
+
up: lazy("up"),
|
|
28
29
|
investigate: lazy("investigate"),
|
|
29
30
|
listen: lazy("listen"),
|
|
30
31
|
serve: lazy("serve"),
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
HARNESS_IDS,
|
|
3
|
-
PERMISSION_MODES,
|
|
4
|
-
SANDBOX_MODES
|
|
5
|
-
} from "./chunk-5BT3XQOG.js";
|
|
6
|
-
import {
|
|
7
|
-
llmProviderIdSchema
|
|
8
|
-
} from "./chunk-XH6DIKTA.js";
|
|
9
|
-
|
|
10
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";
|
|
11
5
|
import { z } from "zod";
|
|
12
6
|
var PermissionConfigSchema = z.object({
|
|
13
7
|
mode: z.enum(PERMISSION_MODES).default("read-only")
|
|
@@ -117,7 +111,7 @@ function optionalWithDefaults(schema) {
|
|
|
117
111
|
const res = schema.safeParse(val ?? {});
|
|
118
112
|
if (!res.success) {
|
|
119
113
|
for (const issue of res.error.issues) {
|
|
120
|
-
ctx.addIssue(issue);
|
|
114
|
+
ctx.addIssue({ ...issue });
|
|
121
115
|
}
|
|
122
116
|
return z.NEVER;
|
|
123
117
|
}
|
|
@@ -1,51 +1,31 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VI32U36Y.js";
|
|
4
4
|
import {
|
|
5
5
|
createSessionManager
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
resolveInvestigation
|
|
9
|
-
} from "./chunk-QDK5PAI3.js";
|
|
6
|
+
} from "./chunk-TSW5RW5B.js";
|
|
10
7
|
import {
|
|
11
8
|
assertKnownFlags
|
|
12
9
|
} from "./chunk-PTBCAI34.js";
|
|
13
|
-
import {
|
|
14
|
-
HARNESS_REGISTRY,
|
|
15
|
-
SANDBOX_MODES,
|
|
16
|
-
conductRun,
|
|
17
|
-
resolveSandbox
|
|
18
|
-
} from "./chunk-5BT3XQOG.js";
|
|
19
|
-
import {
|
|
20
|
-
INVESTIGATION_DEFAULTS
|
|
21
|
-
} from "./chunk-6N4PHBII.js";
|
|
22
10
|
|
|
23
11
|
// src/cli/investigate.ts
|
|
24
12
|
import { randomUUID } from "node:crypto";
|
|
25
13
|
import { writeFile } from "node:fs/promises";
|
|
26
|
-
import { join, resolve } from "node:path";
|
|
14
|
+
import { join, resolve as resolve2 } from "node:path";
|
|
15
|
+
import { HARNESS_REGISTRY } from "@prismalens/config/harness";
|
|
16
|
+
import { INVESTIGATION_DEFAULTS as INVESTIGATION_DEFAULTS2 } from "@prismalens/config/investigation";
|
|
17
|
+
import {
|
|
18
|
+
conductRun,
|
|
19
|
+
resolveSandbox,
|
|
20
|
+
SANDBOX_MODES
|
|
21
|
+
} from "@prismalens/engine";
|
|
27
22
|
import { defineCommand } from "citty";
|
|
28
23
|
import consola from "consola";
|
|
29
24
|
|
|
30
25
|
// src/core/detect-repo.ts
|
|
31
|
-
import {
|
|
32
|
-
import { promisify } from "node:util";
|
|
33
|
-
var execFileAsync = promisify(execFile);
|
|
34
|
-
var REPO_PATTERN = /(?:github\.com|gitlab\.com|bitbucket\.org)[/:](.+?)(?:\.git)?$/;
|
|
35
|
-
async function detectRepo(cwd) {
|
|
36
|
-
try {
|
|
37
|
-
const { stdout } = await execFileAsync(
|
|
38
|
-
"git",
|
|
39
|
-
["remote", "get-url", "origin"],
|
|
40
|
-
{ cwd }
|
|
41
|
-
);
|
|
42
|
-
return stdout.trim().match(REPO_PATTERN)?.[1];
|
|
43
|
-
} catch {
|
|
44
|
-
return void 0;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
26
|
+
import { detectRepoSlug } from "@prismalens/config";
|
|
47
27
|
async function resolveRepoSlug(configRepo, cwd = process.cwd()) {
|
|
48
|
-
return configRepo ?? await
|
|
28
|
+
return configRepo ?? await detectRepoSlug(cwd);
|
|
49
29
|
}
|
|
50
30
|
|
|
51
31
|
// src/core/file-session-store.ts
|
|
@@ -99,6 +79,146 @@ async function parseStdin() {
|
|
|
99
79
|
}
|
|
100
80
|
}
|
|
101
81
|
|
|
82
|
+
// src/core/run-investigation.ts
|
|
83
|
+
import { resolve } from "node:path";
|
|
84
|
+
import { pickServiceLabel } from "@prismalens/config";
|
|
85
|
+
import { ensureV1, resolveCredentials } from "@prismalens/config/credentials";
|
|
86
|
+
import { INVESTIGATION_DEFAULTS } from "@prismalens/config/investigation";
|
|
87
|
+
import {
|
|
88
|
+
AUTO_SELECT_PROVIDER_IDS,
|
|
89
|
+
getDefaultModel
|
|
90
|
+
} from "@prismalens/config/llm";
|
|
91
|
+
import {
|
|
92
|
+
coerceFiringAlert,
|
|
93
|
+
resolveInvestigation as engineResolveInvestigation
|
|
94
|
+
} from "@prismalens/engine";
|
|
95
|
+
function isSynthConfigured(config) {
|
|
96
|
+
if (config.synth.provider) {
|
|
97
|
+
return resolveCredentials(config.synth.provider, config.synth.base_url).source !== "none";
|
|
98
|
+
}
|
|
99
|
+
for (const id of AUTO_SELECT_PROVIDER_IDS) {
|
|
100
|
+
if (resolveCredentials(id).source !== "none") {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
function resolveInvestigation(args, config) {
|
|
107
|
+
const cwd = args.repo ? resolve(args.repo) : process.cwd();
|
|
108
|
+
let providerId = config.synth.provider;
|
|
109
|
+
let creds;
|
|
110
|
+
if (providerId) {
|
|
111
|
+
creds = resolveCredentials(providerId, config.synth.base_url);
|
|
112
|
+
if (providerId === "custom" && !creds.baseURL) {
|
|
113
|
+
throw new Error(
|
|
114
|
+
"Custom LLM provider requires synth.base_url to be configured."
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
} else {
|
|
118
|
+
for (const id of AUTO_SELECT_PROVIDER_IDS) {
|
|
119
|
+
const candidate = resolveCredentials(id);
|
|
120
|
+
if (candidate.source !== "none") {
|
|
121
|
+
providerId = id;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (providerId) {
|
|
126
|
+
creds = resolveCredentials(
|
|
127
|
+
providerId,
|
|
128
|
+
config.synth.base_url
|
|
129
|
+
);
|
|
130
|
+
} else {
|
|
131
|
+
creds = { providerId: "ollama", source: "none" };
|
|
132
|
+
providerId = "ollama";
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const synthModel = config.synth.model ?? getDefaultModel(providerId) ?? "";
|
|
136
|
+
if (!synthModel && creds.source !== "none") {
|
|
137
|
+
throw new Error("No synthesis model configured (set synth.model).");
|
|
138
|
+
}
|
|
139
|
+
const service = selectService(args, config);
|
|
140
|
+
const repos = config.repo ? [config.repo] : Object.keys(config.repos).length > 0 ? Object.keys(config.repos) : void 0;
|
|
141
|
+
const logs = config.logs.url ? {
|
|
142
|
+
...config.logs.kind ? { kind: config.logs.kind } : {},
|
|
143
|
+
url: config.logs.url
|
|
144
|
+
} : void 0;
|
|
145
|
+
const harnessName = args.harness ?? config.agent.default;
|
|
146
|
+
const permissionMode = args.permissionMode ?? config.agent.permissions.mode;
|
|
147
|
+
const harnessNative = config.harnesses[harnessName]?.native;
|
|
148
|
+
const limits = toSandboxLimits(config.agent.limits);
|
|
149
|
+
const telemetry = {
|
|
150
|
+
prometheusUrl: config.telemetry.prometheus_url ?? INVESTIGATION_DEFAULTS.telemetry.prometheusUrl,
|
|
151
|
+
alertmanagerUrl: config.telemetry.alertmanager_url ?? INVESTIGATION_DEFAULTS.telemetry.alertmanagerUrl,
|
|
152
|
+
apiUrl: config.telemetry.api_url ?? INVESTIGATION_DEFAULTS.telemetry.apiUrl
|
|
153
|
+
};
|
|
154
|
+
const request = {
|
|
155
|
+
query: args.query,
|
|
156
|
+
harness: harnessName,
|
|
157
|
+
permissionMode,
|
|
158
|
+
...harnessNative ? { harnessNative } : {},
|
|
159
|
+
...args.sandbox ? { sandbox: args.sandbox } : {},
|
|
160
|
+
...args.requestedSandbox ? { requestedSandbox: args.requestedSandbox } : {},
|
|
161
|
+
...limits ? { limits } : {},
|
|
162
|
+
// Per-alert fan-out cap (ADR-0016 decision 2): wire `agent.max_branches` when
|
|
163
|
+
// set; unset leaves the engine default (mirrors the `limits` thread-through).
|
|
164
|
+
...config.agent.max_branches ? { maxBranches: config.agent.max_branches } : {},
|
|
165
|
+
...args.maxTurns ? { maxTurns: args.maxTurns } : {},
|
|
166
|
+
...args.isolateSettings ? { isolateSettings: args.isolateSettings } : {},
|
|
167
|
+
model: config.agent.model,
|
|
168
|
+
cwd,
|
|
169
|
+
synth: {
|
|
170
|
+
providerId,
|
|
171
|
+
model: synthModel,
|
|
172
|
+
apiKey: creds.apiKey ?? "",
|
|
173
|
+
baseURL: creds.baseURL,
|
|
174
|
+
configured: creds.source !== "none"
|
|
175
|
+
},
|
|
176
|
+
harnessEnv: {
|
|
177
|
+
OPENAI_API_KEY: process.env.OLLAMA_API_KEY ?? process.env.OPENAI_API_KEY,
|
|
178
|
+
OPENAI_BASE_URL: ensureV1(
|
|
179
|
+
process.env.OLLAMA_BASE_URL ?? process.env.OPENAI_BASE_URL ?? INVESTIGATION_DEFAULTS.synth.baseURL
|
|
180
|
+
)
|
|
181
|
+
},
|
|
182
|
+
initTimeoutMs: INVESTIGATION_DEFAULTS.harnessInitTimeoutMs
|
|
183
|
+
};
|
|
184
|
+
if (args.alerts && args.alerts.length > 0) {
|
|
185
|
+
request.context = {
|
|
186
|
+
alerts: args.alerts.map(coerceFiringAlert),
|
|
187
|
+
telemetry,
|
|
188
|
+
...service ? { service } : {},
|
|
189
|
+
...repos ? { repos } : {},
|
|
190
|
+
...logs ? { logs } : {}
|
|
191
|
+
};
|
|
192
|
+
} else {
|
|
193
|
+
request.alert = args.alert;
|
|
194
|
+
request.telemetry = telemetry;
|
|
195
|
+
if (service) request.service = service;
|
|
196
|
+
if (repos) request.repos = repos;
|
|
197
|
+
if (logs) request.logs = logs;
|
|
198
|
+
}
|
|
199
|
+
return engineResolveInvestigation(request);
|
|
200
|
+
}
|
|
201
|
+
function toSandboxLimits(limits) {
|
|
202
|
+
const out = {
|
|
203
|
+
...limits.wall_clock_ms ? { wallClockMs: limits.wall_clock_ms } : {},
|
|
204
|
+
...limits.memory_mb ? { memoryMb: limits.memory_mb } : {},
|
|
205
|
+
...limits.cpu_cores ? { cpuCores: limits.cpu_cores } : {}
|
|
206
|
+
};
|
|
207
|
+
return Object.keys(out).length > 0 ? out : void 0;
|
|
208
|
+
}
|
|
209
|
+
function selectService(args, config) {
|
|
210
|
+
const name = args.service ?? pickServiceLabel(args.alerts?.[0] ?? args.alert);
|
|
211
|
+
if (!name) return void 0;
|
|
212
|
+
const cfg = config.services[name];
|
|
213
|
+
if (!cfg) return void 0;
|
|
214
|
+
return {
|
|
215
|
+
name,
|
|
216
|
+
...cfg.tier ? { tier: cfg.tier } : {},
|
|
217
|
+
...cfg.repo ? { repo: cfg.repo } : {},
|
|
218
|
+
...cfg.depends_on.length > 0 ? { dependsOn: cfg.depends_on } : {}
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
|
|
102
222
|
// src/cli/investigate.ts
|
|
103
223
|
var investigate_default = defineCommand({
|
|
104
224
|
meta: {
|
|
@@ -181,7 +301,7 @@ var investigate_default = defineCommand({
|
|
|
181
301
|
if (!quiet) consola.log(msg);
|
|
182
302
|
};
|
|
183
303
|
const piped = await parseStdin();
|
|
184
|
-
const cwd = args.repo ?
|
|
304
|
+
const cwd = args.repo ? resolve2(args.repo) : process.cwd();
|
|
185
305
|
const config = await loadConfig({
|
|
186
306
|
...args.config ? { configPath: args.config } : {},
|
|
187
307
|
cwd,
|
|
@@ -271,7 +391,7 @@ var investigate_default = defineCommand({
|
|
|
271
391
|
}
|
|
272
392
|
const report = outcome.report;
|
|
273
393
|
if (args.output) {
|
|
274
|
-
const outPath =
|
|
394
|
+
const outPath = resolve2(args.output);
|
|
275
395
|
await writeFile(
|
|
276
396
|
outPath,
|
|
277
397
|
`${JSON.stringify(report, null, 2)}
|
|
@@ -301,12 +421,12 @@ var investigate_default = defineCommand({
|
|
|
301
421
|
}
|
|
302
422
|
});
|
|
303
423
|
function collectAllowedDomains(config) {
|
|
304
|
-
const llmBaseUrl = process.env.OLLAMA_BASE_URL ?? process.env.OPENAI_BASE_URL ??
|
|
424
|
+
const llmBaseUrl = process.env.OLLAMA_BASE_URL ?? process.env.OPENAI_BASE_URL ?? INVESTIGATION_DEFAULTS2.synth.baseURL;
|
|
305
425
|
const urls = [
|
|
306
426
|
llmBaseUrl,
|
|
307
|
-
config.telemetry.prometheus_url ??
|
|
308
|
-
config.telemetry.alertmanager_url ??
|
|
309
|
-
config.telemetry.api_url ??
|
|
427
|
+
config.telemetry.prometheus_url ?? INVESTIGATION_DEFAULTS2.telemetry.prometheusUrl,
|
|
428
|
+
config.telemetry.alertmanager_url ?? INVESTIGATION_DEFAULTS2.telemetry.alertmanagerUrl,
|
|
429
|
+
config.telemetry.api_url ?? INVESTIGATION_DEFAULTS2.telemetry.apiUrl,
|
|
310
430
|
config.logs.url
|
|
311
431
|
];
|
|
312
432
|
const hosts = /* @__PURE__ */ new Set();
|
|
@@ -444,6 +564,8 @@ function renderNextStep(s) {
|
|
|
444
564
|
export {
|
|
445
565
|
resolveRepoSlug,
|
|
446
566
|
createFileSessionStore,
|
|
567
|
+
isSynthConfigured,
|
|
568
|
+
resolveInvestigation,
|
|
447
569
|
investigate_default,
|
|
448
570
|
collectAllowedDomains,
|
|
449
571
|
resolveRunSandbox,
|