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.
- package/README.md +21 -347
- package/dist/bin/prismalens.js +40 -50
- package/dist/chunk-5STPIUCJ.js +150 -0
- package/dist/chunk-HPE5CTO4.js +22 -0
- package/dist/chunk-JX2QAP6S.js +574 -0
- package/dist/chunk-LAYYJBZ5.js +232 -0
- package/dist/chunk-PTBCAI34.js +34 -0
- package/dist/chunk-TSW5RW5B.js +476 -0
- package/dist/chunk-VI32U36Y.js +161 -0
- package/dist/src/cli/auth.js +106 -99
- package/dist/src/cli/doctor.js +175 -184
- package/dist/src/cli/flags.js +6 -32
- package/dist/src/cli/grouping.js +10 -227
- package/dist/src/cli/init.js +48 -47
- package/dist/src/cli/investigate.js +17 -465
- package/dist/src/cli/listen.js +471 -286
- package/dist/src/cli/report.js +68 -67
- package/dist/src/cli/serve.js +262 -30
- package/dist/src/cli/status.js +85 -86
- 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/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 -61
- package/dist/bin/prismalens.d.ts +0 -3
- package/dist/bin/prismalens.d.ts.map +0 -1
- package/dist/bin/prismalens.js.map +0 -1
- package/dist/src/cli/auth.d.ts +0 -3
- package/dist/src/cli/auth.d.ts.map +0 -1
- package/dist/src/cli/auth.js.map +0 -1
- package/dist/src/cli/doctor.d.ts +0 -18
- package/dist/src/cli/doctor.d.ts.map +0 -1
- package/dist/src/cli/doctor.js.map +0 -1
- package/dist/src/cli/flags.d.ts +0 -2
- package/dist/src/cli/flags.d.ts.map +0 -1
- package/dist/src/cli/flags.js.map +0 -1
- package/dist/src/cli/grouping.d.ts +0 -18
- package/dist/src/cli/grouping.d.ts.map +0 -1
- package/dist/src/cli/grouping.js.map +0 -1
- package/dist/src/cli/init.d.ts +0 -3
- package/dist/src/cli/init.d.ts.map +0 -1
- package/dist/src/cli/init.js.map +0 -1
- package/dist/src/cli/investigate.d.ts +0 -115
- package/dist/src/cli/investigate.d.ts.map +0 -1
- package/dist/src/cli/investigate.js.map +0 -1
- package/dist/src/cli/listen.d.ts +0 -56
- package/dist/src/cli/listen.d.ts.map +0 -1
- package/dist/src/cli/listen.js.map +0 -1
- package/dist/src/cli/report.d.ts +0 -24
- package/dist/src/cli/report.d.ts.map +0 -1
- package/dist/src/cli/report.js.map +0 -1
- package/dist/src/cli/serve.d.ts +0 -3
- package/dist/src/cli/serve.d.ts.map +0 -1
- package/dist/src/cli/serve.js.map +0 -1
- package/dist/src/cli/status.d.ts +0 -19
- package/dist/src/cli/status.d.ts.map +0 -1
- package/dist/src/cli/status.js.map +0 -1
- package/dist/src/config/loader.d.ts +0 -22
- package/dist/src/config/loader.d.ts.map +0 -1
- package/dist/src/config/loader.js +0 -195
- package/dist/src/config/loader.js.map +0 -1
- package/dist/src/config/schema.d.ts +0 -465
- package/dist/src/config/schema.d.ts.map +0 -1
- package/dist/src/config/schema.js +0 -219
- package/dist/src/config/schema.js.map +0 -1
- package/dist/src/core/caps.d.ts +0 -36
- package/dist/src/core/caps.d.ts.map +0 -1
- package/dist/src/core/caps.js +0 -36
- package/dist/src/core/caps.js.map +0 -1
- package/dist/src/core/db.d.ts +0 -3
- package/dist/src/core/db.d.ts.map +0 -1
- package/dist/src/core/db.js +0 -105
- package/dist/src/core/db.js.map +0 -1
- package/dist/src/core/detect-repo.d.ts +0 -4
- package/dist/src/core/detect-repo.d.ts.map +0 -1
- package/dist/src/core/detect-repo.js +0 -28
- package/dist/src/core/detect-repo.js.map +0 -1
- package/dist/src/core/file-session-store.d.ts +0 -10
- package/dist/src/core/file-session-store.d.ts.map +0 -1
- package/dist/src/core/file-session-store.js +0 -34
- package/dist/src/core/file-session-store.js.map +0 -1
- package/dist/src/core/parse-stdin.d.ts +0 -2
- package/dist/src/core/parse-stdin.d.ts.map +0 -1
- package/dist/src/core/parse-stdin.js +0 -21
- package/dist/src/core/parse-stdin.js.map +0 -1
- package/dist/src/core/run-investigation.d.ts +0 -54
- package/dist/src/core/run-investigation.d.ts.map +0 -1
- package/dist/src/core/run-investigation.js +0 -202
- package/dist/src/core/run-investigation.js.map +0 -1
- package/dist/src/core/session.d.ts +0 -63
- package/dist/src/core/session.d.ts.map +0 -1
- package/dist/src/core/session.js +0 -45
- package/dist/src/core/session.js.map +0 -1
- package/dist/src/core/slack-notify.d.ts +0 -9
- package/dist/src/core/slack-notify.d.ts.map +0 -1
- package/dist/src/core/slack-notify.js +0 -57
- package/dist/src/core/slack-notify.js.map +0 -1
- package/dist/src/core/sqlite-session-store.d.ts +0 -39
- package/dist/src/core/sqlite-session-store.d.ts.map +0 -1
- package/dist/src/core/sqlite-session-store.js +0 -239
- package/dist/src/core/sqlite-session-store.js.map +0 -1
- package/dist/src/http/server.d.ts +0 -31
- package/dist/src/http/server.d.ts.map +0 -1
- package/dist/src/http/server.js +0 -164
- package/dist/src/http/server.js.map +0 -1
- package/dist/src/jsonrpc/server.d.ts +0 -44
- package/dist/src/jsonrpc/server.d.ts.map +0 -1
- package/dist/src/jsonrpc/server.js +0 -267
- package/dist/src/jsonrpc/server.js.map +0 -1
- package/dist/src/jsonrpc/types.d.ts +0 -12
- package/dist/src/jsonrpc/types.d.ts.map +0 -1
- package/dist/src/jsonrpc/types.js.map +0 -1
- package/dist/src/version.d.ts +0 -8
- package/dist/src/version.d.ts.map +0 -1
- package/dist/src/version.js +0 -27
- package/dist/src/version.js.map +0 -1
- /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
|
-
|
|
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
|
@@ -1,59 +1,49 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
10
|
+
var originalEmit = process.emit;
|
|
18
11
|
process.emit = ((name, ...args) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
+
};
|