@cdot65/prisma-airs-cli 2.12.0 → 3.0.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 +27 -169
- package/dist/chunk-JXHYQFEK.js +1752 -0
- package/dist/cli/index.js +6511 -4
- package/dist/dlp-5XKWITZX.js +710 -0
- package/dist/index.d.ts +1396 -26
- package/dist/index.js +40 -37
- package/package.json +22 -25
- package/dist/airs/dlp/data-filtering-profiles.d.ts +0 -10
- package/dist/airs/dlp/data-filtering-profiles.d.ts.map +0 -1
- package/dist/airs/dlp/data-filtering-profiles.js +0 -17
- package/dist/airs/dlp/data-filtering-profiles.js.map +0 -1
- package/dist/airs/dlp/data-patterns.d.ts +0 -13
- package/dist/airs/dlp/data-patterns.d.ts.map +0 -1
- package/dist/airs/dlp/data-patterns.js +0 -26
- package/dist/airs/dlp/data-patterns.js.map +0 -1
- package/dist/airs/dlp/data-profiles.d.ts +0 -12
- package/dist/airs/dlp/data-profiles.d.ts.map +0 -1
- package/dist/airs/dlp/data-profiles.js +0 -23
- package/dist/airs/dlp/data-profiles.js.map +0 -1
- package/dist/airs/dlp/dictionaries.d.ts +0 -13
- package/dist/airs/dlp/dictionaries.d.ts.map +0 -1
- package/dist/airs/dlp/dictionaries.js +0 -34
- package/dist/airs/dlp/dictionaries.js.map +0 -1
- package/dist/airs/dlp/index.d.ts +0 -6
- package/dist/airs/dlp/index.d.ts.map +0 -1
- package/dist/airs/dlp/index.js +0 -6
- package/dist/airs/dlp/index.js.map +0 -1
- package/dist/airs/dlp/types.d.ts +0 -36
- package/dist/airs/dlp/types.d.ts.map +0 -1
- package/dist/airs/dlp/types.js +0 -2
- package/dist/airs/dlp/types.js.map +0 -1
- package/dist/airs/management.d.ts +0 -69
- package/dist/airs/management.d.ts.map +0 -1
- package/dist/airs/management.js +0 -370
- package/dist/airs/management.js.map +0 -1
- package/dist/airs/modelsecurity.d.ts +0 -74
- package/dist/airs/modelsecurity.d.ts.map +0 -1
- package/dist/airs/modelsecurity.js +0 -337
- package/dist/airs/modelsecurity.js.map +0 -1
- package/dist/airs/promptsets.d.ts +0 -50
- package/dist/airs/promptsets.d.ts.map +0 -1
- package/dist/airs/promptsets.js +0 -120
- package/dist/airs/promptsets.js.map +0 -1
- package/dist/airs/redteam.d.ts +0 -75
- package/dist/airs/redteam.d.ts.map +0 -1
- package/dist/airs/redteam.js +0 -418
- package/dist/airs/redteam.js.map +0 -1
- package/dist/airs/runtime.d.ts +0 -27
- package/dist/airs/runtime.d.ts.map +0 -1
- package/dist/airs/runtime.js +0 -158
- package/dist/airs/runtime.js.map +0 -1
- package/dist/airs/scanner.d.ts +0 -36
- package/dist/airs/scanner.d.ts.map +0 -1
- package/dist/airs/scanner.js +0 -101
- package/dist/airs/scanner.js.map +0 -1
- package/dist/airs/types.d.ts +0 -838
- package/dist/airs/types.d.ts.map +0 -1
- package/dist/airs/types.js +0 -6
- package/dist/airs/types.js.map +0 -1
- package/dist/audit/evaluator.d.ts +0 -17
- package/dist/audit/evaluator.d.ts.map +0 -1
- package/dist/audit/evaluator.js +0 -82
- package/dist/audit/evaluator.js.map +0 -1
- package/dist/audit/report.d.ts +0 -38
- package/dist/audit/report.d.ts.map +0 -1
- package/dist/audit/report.js +0 -141
- package/dist/audit/report.js.map +0 -1
- package/dist/audit/runner.d.ts +0 -18
- package/dist/audit/runner.d.ts.map +0 -1
- package/dist/audit/runner.js +0 -60
- package/dist/audit/runner.js.map +0 -1
- package/dist/audit/types.d.ts +0 -53
- package/dist/audit/types.d.ts.map +0 -1
- package/dist/audit/types.js +0 -5
- package/dist/audit/types.js.map +0 -1
- package/dist/backup/index.d.ts +0 -3
- package/dist/backup/index.d.ts.map +0 -1
- package/dist/backup/index.js +0 -3
- package/dist/backup/index.js.map +0 -1
- package/dist/backup/io.d.ts +0 -15
- package/dist/backup/io.d.ts.map +0 -1
- package/dist/backup/io.js +0 -67
- package/dist/backup/io.js.map +0 -1
- package/dist/backup/types.d.ts +0 -25
- package/dist/backup/types.d.ts.map +0 -1
- package/dist/backup/types.js +0 -2
- package/dist/backup/types.js.map +0 -1
- package/dist/cli/builders/profile-builder.d.ts +0 -45
- package/dist/cli/builders/profile-builder.d.ts.map +0 -1
- package/dist/cli/builders/profile-builder.js +0 -308
- package/dist/cli/builders/profile-builder.js.map +0 -1
- package/dist/cli/bulk-scan-state.d.ts +0 -15
- package/dist/cli/bulk-scan-state.d.ts.map +0 -1
- package/dist/cli/bulk-scan-state.js +0 -20
- package/dist/cli/bulk-scan-state.js.map +0 -1
- package/dist/cli/commands/audit.d.ts +0 -4
- package/dist/cli/commands/audit.d.ts.map +0 -1
- package/dist/cli/commands/audit.js +0 -113
- package/dist/cli/commands/audit.js.map +0 -1
- package/dist/cli/commands/backup.d.ts +0 -10
- package/dist/cli/commands/backup.d.ts.map +0 -1
- package/dist/cli/commands/backup.js +0 -102
- package/dist/cli/commands/backup.js.map +0 -1
- package/dist/cli/commands/dlp/build-body.d.ts +0 -28
- package/dist/cli/commands/dlp/build-body.d.ts.map +0 -1
- package/dist/cli/commands/dlp/build-body.js +0 -174
- package/dist/cli/commands/dlp/build-body.js.map +0 -1
- package/dist/cli/commands/dlp/dictionaries.d.ts +0 -3
- package/dist/cli/commands/dlp/dictionaries.d.ts.map +0 -1
- package/dist/cli/commands/dlp/dictionaries.js +0 -167
- package/dist/cli/commands/dlp/dictionaries.js.map +0 -1
- package/dist/cli/commands/dlp/filtering-profiles.d.ts +0 -3
- package/dist/cli/commands/dlp/filtering-profiles.d.ts.map +0 -1
- package/dist/cli/commands/dlp/filtering-profiles.js +0 -82
- package/dist/cli/commands/dlp/filtering-profiles.js.map +0 -1
- package/dist/cli/commands/dlp/generate.d.ts +0 -3
- package/dist/cli/commands/dlp/generate.d.ts.map +0 -1
- package/dist/cli/commands/dlp/generate.js +0 -51
- package/dist/cli/commands/dlp/generate.js.map +0 -1
- package/dist/cli/commands/dlp/index.d.ts +0 -3
- package/dist/cli/commands/dlp/index.d.ts.map +0 -1
- package/dist/cli/commands/dlp/index.js +0 -16
- package/dist/cli/commands/dlp/index.js.map +0 -1
- package/dist/cli/commands/dlp/patch.d.ts +0 -15
- package/dist/cli/commands/dlp/patch.d.ts.map +0 -1
- package/dist/cli/commands/dlp/patch.js +0 -70
- package/dist/cli/commands/dlp/patch.js.map +0 -1
- package/dist/cli/commands/dlp/patterns.d.ts +0 -3
- package/dist/cli/commands/dlp/patterns.d.ts.map +0 -1
- package/dist/cli/commands/dlp/patterns.js +0 -127
- package/dist/cli/commands/dlp/patterns.js.map +0 -1
- package/dist/cli/commands/dlp/profiles.d.ts +0 -3
- package/dist/cli/commands/dlp/profiles.d.ts.map +0 -1
- package/dist/cli/commands/dlp/profiles.js +0 -126
- package/dist/cli/commands/dlp/profiles.js.map +0 -1
- package/dist/cli/commands/modelsecurity.d.ts +0 -4
- package/dist/cli/commands/modelsecurity.d.ts.map +0 -1
- package/dist/cli/commands/modelsecurity.js +0 -605
- package/dist/cli/commands/modelsecurity.js.map +0 -1
- package/dist/cli/commands/profiles-cleanup.d.ts +0 -26
- package/dist/cli/commands/profiles-cleanup.d.ts.map +0 -1
- package/dist/cli/commands/profiles-cleanup.js +0 -113
- package/dist/cli/commands/profiles-cleanup.js.map +0 -1
- package/dist/cli/commands/redteam.d.ts +0 -12
- package/dist/cli/commands/redteam.d.ts.map +0 -1
- package/dist/cli/commands/redteam.js +0 -1075
- package/dist/cli/commands/redteam.js.map +0 -1
- package/dist/cli/commands/restore.d.ts +0 -11
- package/dist/cli/commands/restore.d.ts.map +0 -1
- package/dist/cli/commands/restore.js +0 -109
- package/dist/cli/commands/restore.js.map +0 -1
- package/dist/cli/commands/runtime.d.ts +0 -6
- package/dist/cli/commands/runtime.d.ts.map +0 -1
- package/dist/cli/commands/runtime.js +0 -869
- package/dist/cli/commands/runtime.js.map +0 -1
- package/dist/cli/commands/topics-apply.d.ts +0 -16
- package/dist/cli/commands/topics-apply.d.ts.map +0 -1
- package/dist/cli/commands/topics-apply.js +0 -69
- package/dist/cli/commands/topics-apply.js.map +0 -1
- package/dist/cli/commands/topics-create.d.ts +0 -16
- package/dist/cli/commands/topics-create.d.ts.map +0 -1
- package/dist/cli/commands/topics-create.js +0 -71
- package/dist/cli/commands/topics-create.js.map +0 -1
- package/dist/cli/commands/topics-eval.d.ts +0 -7
- package/dist/cli/commands/topics-eval.d.ts.map +0 -1
- package/dist/cli/commands/topics-eval.js +0 -65
- package/dist/cli/commands/topics-eval.js.map +0 -1
- package/dist/cli/commands/topics-revert.d.ts +0 -9
- package/dist/cli/commands/topics-revert.d.ts.map +0 -1
- package/dist/cli/commands/topics-revert.js +0 -52
- package/dist/cli/commands/topics-revert.js.map +0 -1
- package/dist/cli/commands/topics-sample.d.ts +0 -4
- package/dist/cli/commands/topics-sample.d.ts.map +0 -1
- package/dist/cli/commands/topics-sample.js +0 -27
- package/dist/cli/commands/topics-sample.js.map +0 -1
- package/dist/cli/debug-logger.d.ts +0 -11
- package/dist/cli/debug-logger.d.ts.map +0 -1
- package/dist/cli/debug-logger.js +0 -137
- package/dist/cli/debug-logger.js.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/parse-input.d.ts +0 -9
- package/dist/cli/parse-input.d.ts.map +0 -1
- package/dist/cli/parse-input.js +0 -109
- package/dist/cli/parse-input.js.map +0 -1
- package/dist/cli/program.d.ts +0 -3
- package/dist/cli/program.d.ts.map +0 -1
- package/dist/cli/program.js +0 -32
- package/dist/cli/program.js.map +0 -1
- package/dist/cli/renderer/audit.d.ts +0 -11
- package/dist/cli/renderer/audit.d.ts.map +0 -1
- package/dist/cli/renderer/audit.js +0 -58
- package/dist/cli/renderer/audit.js.map +0 -1
- package/dist/cli/renderer/backup.d.ts +0 -8
- package/dist/cli/renderer/backup.d.ts.map +0 -1
- package/dist/cli/renderer/backup.js +0 -50
- package/dist/cli/renderer/backup.js.map +0 -1
- package/dist/cli/renderer/common.d.ts +0 -14
- package/dist/cli/renderer/common.d.ts.map +0 -1
- package/dist/cli/renderer/common.js +0 -50
- package/dist/cli/renderer/common.js.map +0 -1
- package/dist/cli/renderer/dlp.d.ts +0 -34
- package/dist/cli/renderer/dlp.d.ts.map +0 -1
- package/dist/cli/renderer/dlp.js +0 -348
- package/dist/cli/renderer/dlp.js.map +0 -1
- package/dist/cli/renderer/eval.d.ts +0 -30
- package/dist/cli/renderer/eval.d.ts.map +0 -1
- package/dist/cli/renderer/eval.js +0 -61
- package/dist/cli/renderer/eval.js.map +0 -1
- package/dist/cli/renderer/index.d.ts +0 -9
- package/dist/cli/renderer/index.d.ts.map +0 -1
- package/dist/cli/renderer/index.js +0 -9
- package/dist/cli/renderer/index.js.map +0 -1
- package/dist/cli/renderer/modelsecurity.d.ts +0 -35
- package/dist/cli/renderer/modelsecurity.d.ts.map +0 -1
- package/dist/cli/renderer/modelsecurity.js +0 -339
- package/dist/cli/renderer/modelsecurity.js.map +0 -1
- package/dist/cli/renderer/redteam.d.ts +0 -224
- package/dist/cli/renderer/redteam.d.ts.map +0 -1
- package/dist/cli/renderer/redteam.js +0 -500
- package/dist/cli/renderer/redteam.js.map +0 -1
- package/dist/cli/renderer/runtime.d.ts +0 -135
- package/dist/cli/renderer/runtime.d.ts.map +0 -1
- package/dist/cli/renderer/runtime.js +0 -426
- package/dist/cli/renderer/runtime.js.map +0 -1
- package/dist/config/loader.d.ts +0 -3
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -59
- package/dist/config/loader.js.map +0 -1
- package/dist/config/schema.d.ts +0 -63
- package/dist/config/schema.d.ts.map +0 -1
- package/dist/config/schema.js +0 -38
- package/dist/config/schema.js.map +0 -1
- package/dist/core/constraints.d.ts +0 -19
- package/dist/core/constraints.d.ts.map +0 -1
- package/dist/core/constraints.js +0 -82
- package/dist/core/constraints.js.map +0 -1
- package/dist/core/metrics.d.ts +0 -13
- package/dist/core/metrics.d.ts.map +0 -1
- package/dist/core/metrics.js +0 -73
- package/dist/core/metrics.js.map +0 -1
- package/dist/core/prompt-loader.d.ts +0 -14
- package/dist/core/prompt-loader.d.ts.map +0 -1
- package/dist/core/prompt-loader.js +0 -122
- package/dist/core/prompt-loader.js.map +0 -1
- package/dist/core/types.d.ts +0 -96
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -5
- package/dist/core/types.js.map +0 -1
- package/dist/dlp/embed/docx.d.ts +0 -3
- package/dist/dlp/embed/docx.d.ts.map +0 -1
- package/dist/dlp/embed/docx.js +0 -63
- package/dist/dlp/embed/docx.js.map +0 -1
- package/dist/dlp/embed/index.d.ts +0 -6
- package/dist/dlp/embed/index.d.ts.map +0 -1
- package/dist/dlp/embed/index.js +0 -20
- package/dist/dlp/embed/index.js.map +0 -1
- package/dist/dlp/embed/jpeg.d.ts +0 -5
- package/dist/dlp/embed/jpeg.d.ts.map +0 -1
- package/dist/dlp/embed/jpeg.js +0 -67
- package/dist/dlp/embed/jpeg.js.map +0 -1
- package/dist/dlp/embed/overlay.d.ts +0 -7
- package/dist/dlp/embed/overlay.d.ts.map +0 -1
- package/dist/dlp/embed/overlay.js +0 -21
- package/dist/dlp/embed/overlay.js.map +0 -1
- package/dist/dlp/embed/pdf.d.ts +0 -7
- package/dist/dlp/embed/pdf.d.ts.map +0 -1
- package/dist/dlp/embed/pdf.js +0 -124
- package/dist/dlp/embed/pdf.js.map +0 -1
- package/dist/dlp/embed/png-chunks.d.ts +0 -12
- package/dist/dlp/embed/png-chunks.d.ts.map +0 -1
- package/dist/dlp/embed/png-chunks.js +0 -85
- package/dist/dlp/embed/png-chunks.js.map +0 -1
- package/dist/dlp/embed/png.d.ts +0 -5
- package/dist/dlp/embed/png.d.ts.map +0 -1
- package/dist/dlp/embed/png.js +0 -75
- package/dist/dlp/embed/png.js.map +0 -1
- package/dist/dlp/embed/svg.d.ts +0 -3
- package/dist/dlp/embed/svg.d.ts.map +0 -1
- package/dist/dlp/embed/svg.js +0 -43
- package/dist/dlp/embed/svg.js.map +0 -1
- package/dist/dlp/embed/zip.d.ts +0 -3
- package/dist/dlp/embed/zip.d.ts.map +0 -1
- package/dist/dlp/embed/zip.js +0 -25
- package/dist/dlp/embed/zip.js.map +0 -1
- package/dist/dlp/generate/docx.d.ts +0 -3
- package/dist/dlp/generate/docx.d.ts.map +0 -1
- package/dist/dlp/generate/docx.js +0 -24
- package/dist/dlp/generate/docx.js.map +0 -1
- package/dist/dlp/generate/index.d.ts +0 -5
- package/dist/dlp/generate/index.d.ts.map +0 -1
- package/dist/dlp/generate/index.js +0 -21
- package/dist/dlp/generate/index.js.map +0 -1
- package/dist/dlp/generate/jpeg.d.ts +0 -3
- package/dist/dlp/generate/jpeg.d.ts.map +0 -1
- package/dist/dlp/generate/jpeg.js +0 -8
- package/dist/dlp/generate/jpeg.js.map +0 -1
- package/dist/dlp/generate/pdf.d.ts +0 -3
- package/dist/dlp/generate/pdf.d.ts.map +0 -1
- package/dist/dlp/generate/pdf.js +0 -19
- package/dist/dlp/generate/pdf.js.map +0 -1
- package/dist/dlp/generate/png.d.ts +0 -3
- package/dist/dlp/generate/png.d.ts.map +0 -1
- package/dist/dlp/generate/png.js +0 -8
- package/dist/dlp/generate/png.js.map +0 -1
- package/dist/dlp/generate/raster.d.ts +0 -9
- package/dist/dlp/generate/raster.d.ts.map +0 -1
- package/dist/dlp/generate/raster.js +0 -20
- package/dist/dlp/generate/raster.js.map +0 -1
- package/dist/dlp/generate/svg.d.ts +0 -3
- package/dist/dlp/generate/svg.d.ts.map +0 -1
- package/dist/dlp/generate/svg.js +0 -17
- package/dist/dlp/generate/svg.js.map +0 -1
- package/dist/dlp/index.d.ts +0 -15
- package/dist/dlp/index.d.ts.map +0 -1
- package/dist/dlp/index.js +0 -54
- package/dist/dlp/index.js.map +0 -1
- package/dist/dlp/lorem.d.ts +0 -3
- package/dist/dlp/lorem.d.ts.map +0 -1
- package/dist/dlp/lorem.js +0 -65
- package/dist/dlp/lorem.js.map +0 -1
- package/dist/dlp/manifest.d.ts +0 -11
- package/dist/dlp/manifest.d.ts.map +0 -1
- package/dist/dlp/manifest.js +0 -14
- package/dist/dlp/manifest.js.map +0 -1
- package/dist/dlp/payload.d.ts +0 -6
- package/dist/dlp/payload.d.ts.map +0 -1
- package/dist/dlp/payload.js +0 -62
- package/dist/dlp/payload.js.map +0 -1
- package/dist/dlp/rng.d.ts +0 -9
- package/dist/dlp/rng.d.ts.map +0 -1
- package/dist/dlp/rng.js +0 -28
- package/dist/dlp/rng.js.map +0 -1
- package/dist/dlp/types.d.ts +0 -26
- package/dist/dlp/types.d.ts.map +0 -1
- package/dist/dlp/types.js +0 -2
- package/dist/dlp/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/llm/prompts/analyze-results.d.ts +0 -3
- package/dist/llm/prompts/analyze-results.d.ts.map +0 -1
- package/dist/llm/prompts/analyze-results.js +0 -52
- package/dist/llm/prompts/analyze-results.js.map +0 -1
- package/dist/llm/prompts/generate-companion.d.ts +0 -3
- package/dist/llm/prompts/generate-companion.d.ts.map +0 -1
- package/dist/llm/prompts/generate-companion.js +0 -42
- package/dist/llm/prompts/generate-companion.js.map +0 -1
- package/dist/llm/prompts/generate-tests.d.ts +0 -3
- package/dist/llm/prompts/generate-tests.d.ts.map +0 -1
- package/dist/llm/prompts/generate-tests.js +0 -46
- package/dist/llm/prompts/generate-tests.js.map +0 -1
- package/dist/llm/prompts/generate-topic.d.ts +0 -4
- package/dist/llm/prompts/generate-topic.d.ts.map +0 -1
- package/dist/llm/prompts/generate-topic.js +0 -41
- package/dist/llm/prompts/generate-topic.js.map +0 -1
- package/dist/llm/prompts/improve-topic.d.ts +0 -3
- package/dist/llm/prompts/improve-topic.d.ts.map +0 -1
- package/dist/llm/prompts/improve-topic.js +0 -77
- package/dist/llm/prompts/improve-topic.js.map +0 -1
- package/dist/llm/prompts/simplify-topic.d.ts +0 -3
- package/dist/llm/prompts/simplify-topic.d.ts.map +0 -1
- package/dist/llm/prompts/simplify-topic.js +0 -50
- package/dist/llm/prompts/simplify-topic.js.map +0 -1
- package/dist/llm/provider.d.ts +0 -21
- package/dist/llm/provider.d.ts.map +0 -1
- package/dist/llm/provider.js +0 -76
- package/dist/llm/provider.js.map +0 -1
- package/dist/llm/schemas.d.ts +0 -97
- package/dist/llm/schemas.d.ts.map +0 -1
- package/dist/llm/schemas.js +0 -24
- package/dist/llm/schemas.js.map +0 -1
- package/dist/llm/service.d.ts +0 -34
- package/dist/llm/service.d.ts.map +0 -1
- package/dist/llm/service.js +0 -268
- package/dist/llm/service.js.map +0 -1
- package/dist/llm/types.d.ts +0 -18
- package/dist/llm/types.d.ts.map +0 -1
- package/dist/llm/types.js +0 -2
- package/dist/llm/types.js.map +0 -1
- package/dist/report/html.d.ts +0 -6
- package/dist/report/html.d.ts.map +0 -1
- package/dist/report/html.js +0 -200
- package/dist/report/html.js.map +0 -1
- package/dist/report/json.d.ts +0 -11
- package/dist/report/json.d.ts.map +0 -1
- package/dist/report/json.js +0 -74
- package/dist/report/json.js.map +0 -1
- package/dist/report/types.d.ts +0 -58
- package/dist/report/types.d.ts.map +0 -1
- package/dist/report/types.js +0 -5
- package/dist/report/types.js.map +0 -1
package/dist/llm/service.js
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import { byteLen, MAX_COMBINED_LENGTH, MAX_DESCRIPTION_LENGTH, MAX_EXAMPLE_LENGTH, MAX_EXAMPLES, MAX_NAME_LENGTH, validateTopic, } from '../core/constraints.js';
|
|
2
|
-
import { analyzeResultsPrompt } from './prompts/analyze-results.js';
|
|
3
|
-
import { generateCompanionPrompt } from './prompts/generate-companion.js';
|
|
4
|
-
import { generateTestsPrompt } from './prompts/generate-tests.js';
|
|
5
|
-
import { buildSeedExamplesSection, generateTopicPrompt } from './prompts/generate-topic.js';
|
|
6
|
-
import { improveTopicPrompt } from './prompts/improve-topic.js';
|
|
7
|
-
import { simplifyTopicPrompt } from './prompts/simplify-topic.js';
|
|
8
|
-
import { AnalysisReportSchema, CustomTopicSchema, TestSuiteSchema, } from './schemas.js';
|
|
9
|
-
const MAX_RETRIES = 3;
|
|
10
|
-
/** Truncate a string so its UTF-8 byte length does not exceed maxBytes. */
|
|
11
|
-
function sliceToBytes(s, maxBytes) {
|
|
12
|
-
while (Buffer.byteLength(s, 'utf8') > maxBytes) {
|
|
13
|
-
s = s.slice(0, -1);
|
|
14
|
-
}
|
|
15
|
-
return s;
|
|
16
|
-
}
|
|
17
|
-
/** Clamp topic fields to fit Prisma AIRS constraints (byte-aware, including combined limit) */
|
|
18
|
-
function clampTopic(topic) {
|
|
19
|
-
const name = sliceToBytes(topic.name, MAX_NAME_LENGTH);
|
|
20
|
-
let description = sliceToBytes(topic.description, MAX_DESCRIPTION_LENGTH);
|
|
21
|
-
const examples = topic.examples
|
|
22
|
-
.slice(0, MAX_EXAMPLES)
|
|
23
|
-
.map((e) => sliceToBytes(e, MAX_EXAMPLE_LENGTH));
|
|
24
|
-
// Enforce combined byte-length limit by dropping examples from the end, then trimming description
|
|
25
|
-
const combined = () => byteLen(name) + byteLen(description) + examples.reduce((s, e) => s + byteLen(e), 0);
|
|
26
|
-
while (combined() > MAX_COMBINED_LENGTH && examples.length > 1) {
|
|
27
|
-
examples.pop();
|
|
28
|
-
}
|
|
29
|
-
/* v8 ignore next 4 -- unreachable with current MAX constants (100+250+250=600 < 1000) */
|
|
30
|
-
if (combined() > MAX_COMBINED_LENGTH) {
|
|
31
|
-
const overflow = combined() - MAX_COMBINED_LENGTH;
|
|
32
|
-
description = sliceToBytes(description, byteLen(description) - overflow);
|
|
33
|
-
}
|
|
34
|
-
return { name, description, examples };
|
|
35
|
-
}
|
|
36
|
-
export class LangChainLlmService {
|
|
37
|
-
model;
|
|
38
|
-
memoryInjector;
|
|
39
|
-
memorySection = '';
|
|
40
|
-
constructor(model, memoryInjector) {
|
|
41
|
-
this.model = model;
|
|
42
|
-
this.memoryInjector = memoryInjector;
|
|
43
|
-
}
|
|
44
|
-
async loadMemory(topicDescription) {
|
|
45
|
-
if (!this.memoryInjector)
|
|
46
|
-
return 0;
|
|
47
|
-
this.memorySection = await this.memoryInjector.buildMemorySection(topicDescription);
|
|
48
|
-
// Count lines starting with "- [" as learning count
|
|
49
|
-
return this.memorySection.split('\n').filter((l) => l.startsWith('- [')).length;
|
|
50
|
-
}
|
|
51
|
-
async generateTopic(description, intent, seeds) {
|
|
52
|
-
const structured = this.model.withStructuredOutput(CustomTopicSchema);
|
|
53
|
-
const chain = generateTopicPrompt.pipe(structured);
|
|
54
|
-
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
55
|
-
try {
|
|
56
|
-
const raw = await chain.invoke({
|
|
57
|
-
topicDescription: description,
|
|
58
|
-
intent,
|
|
59
|
-
seedExamplesSection: buildSeedExamplesSection(seeds),
|
|
60
|
-
memorySection: this.memorySection,
|
|
61
|
-
});
|
|
62
|
-
const result = clampTopic(raw);
|
|
63
|
-
const errors = validateTopic(result);
|
|
64
|
-
if (errors.length === 0)
|
|
65
|
-
return result;
|
|
66
|
-
if (attempt === MAX_RETRIES - 1) {
|
|
67
|
-
throw new Error(`LLM output violates constraints after ${MAX_RETRIES} attempts: ${errors.map((e) => e.message).join(', ')}`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
catch (err) {
|
|
71
|
-
if (attempt === MAX_RETRIES - 1)
|
|
72
|
-
throw err;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
/* v8 ignore next */
|
|
76
|
-
throw new Error('Unreachable');
|
|
77
|
-
}
|
|
78
|
-
async generateCompanionTopic(blockTopicName, blockDescription) {
|
|
79
|
-
const structured = this.model.withStructuredOutput(CustomTopicSchema);
|
|
80
|
-
const chain = generateCompanionPrompt.pipe(structured);
|
|
81
|
-
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
82
|
-
try {
|
|
83
|
-
const raw = await chain.invoke({
|
|
84
|
-
blockTopicName,
|
|
85
|
-
blockTopicDescription: blockDescription,
|
|
86
|
-
});
|
|
87
|
-
const result = clampTopic(raw);
|
|
88
|
-
const errors = validateTopic(result);
|
|
89
|
-
if (errors.length === 0)
|
|
90
|
-
return result;
|
|
91
|
-
if (attempt === MAX_RETRIES - 1) {
|
|
92
|
-
throw new Error(`LLM output violates constraints after ${MAX_RETRIES} attempts: ${errors.map((e) => e.message).join(', ')}`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
if (attempt === MAX_RETRIES - 1)
|
|
97
|
-
throw err;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/* v8 ignore next */
|
|
101
|
-
throw new Error('Unreachable');
|
|
102
|
-
}
|
|
103
|
-
async generateTests(topic, intent, categoryBreakdown) {
|
|
104
|
-
const structured = this.model.withStructuredOutput(TestSuiteSchema);
|
|
105
|
-
const chain = generateTestsPrompt.pipe(structured);
|
|
106
|
-
let categoryBreakdownSection = '';
|
|
107
|
-
if (categoryBreakdown && categoryBreakdown.length > 0) {
|
|
108
|
-
const lines = categoryBreakdown.map((c) => `- ${c.category}: ${c.fp + c.fn}/${c.total} errors (${(c.errorRate * 100).toFixed(0)}%) — ${c.fp} FP, ${c.fn} FN`);
|
|
109
|
-
categoryBreakdownSection = `\nPrevious iteration per-category error rates (generate proportionally more tests for high-error categories):\n${lines.join('\n')}\n`;
|
|
110
|
-
}
|
|
111
|
-
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
112
|
-
try {
|
|
113
|
-
const raw = await chain.invoke({
|
|
114
|
-
topicName: topic.name,
|
|
115
|
-
topicDescription: topic.description,
|
|
116
|
-
topicExamples: topic.examples.length > 0
|
|
117
|
-
? topic.examples.map((e, i) => `${i + 1}. ${e}`).join('\n')
|
|
118
|
-
: 'None (description-only mode)',
|
|
119
|
-
exampleCount: topic.examples.length,
|
|
120
|
-
intent,
|
|
121
|
-
categoryBreakdownSection,
|
|
122
|
-
memorySection: this.memorySection,
|
|
123
|
-
});
|
|
124
|
-
return raw;
|
|
125
|
-
}
|
|
126
|
-
catch (err) {
|
|
127
|
-
if (attempt === MAX_RETRIES - 1)
|
|
128
|
-
throw err;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
/* v8 ignore next */
|
|
132
|
-
throw new Error('Unreachable');
|
|
133
|
-
}
|
|
134
|
-
async analyzeResults(topic, results, metrics, intent) {
|
|
135
|
-
const structured = this.model.withStructuredOutput(AnalysisReportSchema);
|
|
136
|
-
const chain = analyzeResultsPrompt.pipe(structured);
|
|
137
|
-
const fps = results.filter((r) => !r.testCase.expectedTriggered && r.actualTriggered);
|
|
138
|
-
const fns = results.filter((r) => r.testCase.expectedTriggered && !r.actualTriggered);
|
|
139
|
-
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
140
|
-
try {
|
|
141
|
-
const raw = await chain.invoke({
|
|
142
|
-
topicName: topic.name,
|
|
143
|
-
topicDescription: topic.description,
|
|
144
|
-
topicExamples: topic.examples.length > 0 ? topic.examples.join(', ') : 'None (description-only)',
|
|
145
|
-
exampleCount: topic.examples.length,
|
|
146
|
-
tpr: `${(metrics.truePositiveRate * 100).toFixed(1)}%`,
|
|
147
|
-
tnr: `${(metrics.trueNegativeRate * 100).toFixed(1)}%`,
|
|
148
|
-
accuracy: `${(metrics.accuracy * 100).toFixed(1)}%`,
|
|
149
|
-
coverage: `${(metrics.coverage * 100).toFixed(1)}%`,
|
|
150
|
-
falsePositives: fps.length > 0
|
|
151
|
-
? fps.map((r) => `- "${r.testCase.prompt}" (${r.testCase.category})`).join('\n')
|
|
152
|
-
: 'None',
|
|
153
|
-
falseNegatives: fns.length > 0
|
|
154
|
-
? fns.map((r) => `- "${r.testCase.prompt}" (${r.testCase.category})`).join('\n')
|
|
155
|
-
: 'None',
|
|
156
|
-
intent,
|
|
157
|
-
memorySection: this.memorySection,
|
|
158
|
-
});
|
|
159
|
-
return raw;
|
|
160
|
-
}
|
|
161
|
-
catch (err) {
|
|
162
|
-
if (attempt === MAX_RETRIES - 1)
|
|
163
|
-
throw err;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
/* v8 ignore next */
|
|
167
|
-
throw new Error('Unreachable');
|
|
168
|
-
}
|
|
169
|
-
async improveTopic(topic, metrics, analysis, results, iteration, targetCoverage, intent, bestContext) {
|
|
170
|
-
const structured = this.model.withStructuredOutput(CustomTopicSchema);
|
|
171
|
-
const chain = improveTopicPrompt.pipe(structured);
|
|
172
|
-
const fps = results.filter((r) => !r.testCase.expectedTriggered && r.actualTriggered);
|
|
173
|
-
const fns = results.filter((r) => r.testCase.expectedTriggered && !r.actualTriggered);
|
|
174
|
-
// Build best-context template variables
|
|
175
|
-
const bestCoverage = bestContext
|
|
176
|
-
? `${(bestContext.bestCoverage * 100).toFixed(1)}%`
|
|
177
|
-
: `${(metrics.coverage * 100).toFixed(1)}%`;
|
|
178
|
-
const bestIteration = bestContext ? bestContext.bestIteration : iteration;
|
|
179
|
-
let bestTopicSection = '';
|
|
180
|
-
if (bestContext?.bestTopic && metrics.coverage < bestContext.bestCoverage) {
|
|
181
|
-
const bt = bestContext.bestTopic;
|
|
182
|
-
bestTopicSection = `REGRESSION WARNING: Coverage has dropped from ${(bestContext.bestCoverage * 100).toFixed(1)}% (iteration ${bestContext.bestIteration}) to ${(metrics.coverage * 100).toFixed(1)}%.
|
|
183
|
-
The best-performing definition was:
|
|
184
|
-
Description: ${bt.description}
|
|
185
|
-
Examples: ${bt.examples.join(', ')}
|
|
186
|
-
Consider reverting toward this simpler definition rather than adding more specificity.`;
|
|
187
|
-
}
|
|
188
|
-
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
189
|
-
try {
|
|
190
|
-
const raw = await chain.invoke({
|
|
191
|
-
currentName: topic.name,
|
|
192
|
-
currentDescription: topic.description,
|
|
193
|
-
currentExamples: topic.examples.length > 0 ? topic.examples.join(', ') : 'None (description-only)',
|
|
194
|
-
exampleCount: topic.examples.length,
|
|
195
|
-
iteration,
|
|
196
|
-
coverage: `${(metrics.coverage * 100).toFixed(1)}%`,
|
|
197
|
-
targetCoverage: `${(targetCoverage * 100).toFixed(1)}%`,
|
|
198
|
-
tpr: `${(metrics.truePositiveRate * 100).toFixed(1)}%`,
|
|
199
|
-
tnr: `${(metrics.trueNegativeRate * 100).toFixed(1)}%`,
|
|
200
|
-
accuracy: `${(metrics.accuracy * 100).toFixed(1)}%`,
|
|
201
|
-
bestCoverage,
|
|
202
|
-
bestIteration,
|
|
203
|
-
bestTopicSection,
|
|
204
|
-
analysisSummary: analysis.summary,
|
|
205
|
-
fpPatterns: analysis.falsePositivePatterns.join('; ') || 'None',
|
|
206
|
-
fnPatterns: analysis.falseNegativePatterns.join('; ') || 'None',
|
|
207
|
-
specificFPs: fps.map((r) => `- "${r.testCase.prompt}"`).join('\n') || 'None',
|
|
208
|
-
specificFNs: fns.map((r) => `- "${r.testCase.prompt}"`).join('\n') || 'None',
|
|
209
|
-
suggestions: analysis.suggestions.join('; '),
|
|
210
|
-
intent,
|
|
211
|
-
memorySection: this.memorySection,
|
|
212
|
-
});
|
|
213
|
-
const result = clampTopic(raw);
|
|
214
|
-
const errors = validateTopic(result);
|
|
215
|
-
if (errors.length === 0)
|
|
216
|
-
return result;
|
|
217
|
-
if (attempt === MAX_RETRIES - 1) {
|
|
218
|
-
throw new Error(`LLM output violates constraints after ${MAX_RETRIES} attempts: ${errors.map((e) => e.message).join(', ')}`);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
catch (err) {
|
|
222
|
-
if (attempt === MAX_RETRIES - 1)
|
|
223
|
-
throw err;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
/* v8 ignore next */
|
|
227
|
-
throw new Error('Unreachable');
|
|
228
|
-
}
|
|
229
|
-
async simplifyTopic(currentTopic, bestTopic, metrics, _analysis, intent) {
|
|
230
|
-
const structured = this.model.withStructuredOutput(CustomTopicSchema);
|
|
231
|
-
const chain = simplifyTopicPrompt.pipe(structured);
|
|
232
|
-
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
233
|
-
try {
|
|
234
|
-
const raw = await chain.invoke({
|
|
235
|
-
currentName: currentTopic.name,
|
|
236
|
-
currentDescription: currentTopic.description,
|
|
237
|
-
currentExamples: currentTopic.examples.length > 0
|
|
238
|
-
? currentTopic.examples.join(', ')
|
|
239
|
-
: 'None (description-only)',
|
|
240
|
-
bestCoverage: `${(metrics.coverage * 100).toFixed(1)}%`,
|
|
241
|
-
bestDescription: bestTopic.description,
|
|
242
|
-
bestExamples: bestTopic.examples.length > 0
|
|
243
|
-
? bestTopic.examples.join(', ')
|
|
244
|
-
: 'None (description-only)',
|
|
245
|
-
coverage: `${(metrics.coverage * 100).toFixed(1)}%`,
|
|
246
|
-
tpr: `${(metrics.truePositiveRate * 100).toFixed(1)}%`,
|
|
247
|
-
tnr: `${(metrics.trueNegativeRate * 100).toFixed(1)}%`,
|
|
248
|
-
intent,
|
|
249
|
-
memorySection: this.memorySection,
|
|
250
|
-
});
|
|
251
|
-
const result = clampTopic(raw);
|
|
252
|
-
const errors = validateTopic(result);
|
|
253
|
-
if (errors.length === 0)
|
|
254
|
-
return result;
|
|
255
|
-
if (attempt === MAX_RETRIES - 1) {
|
|
256
|
-
throw new Error(`LLM output violates constraints after ${MAX_RETRIES} attempts: ${errors.map((e) => e.message).join(', ')}`);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
catch (err) {
|
|
260
|
-
if (attempt === MAX_RETRIES - 1)
|
|
261
|
-
throw err;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
/* v8 ignore next */
|
|
265
|
-
throw new Error('Unreachable');
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
//# sourceMappingURL=service.js.map
|
package/dist/llm/service.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/llm/service.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/types.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { AnalysisReport, CategoryBreakdown, CustomTopic, EfficacyMetrics, TestCase, TestResult } from '../core/types.js';
|
|
2
|
-
/** Contract for LLM operations used by the audit runner. */
|
|
3
|
-
export interface LlmService {
|
|
4
|
-
generateTopic(description: string, intent: string, seeds?: string[]): Promise<CustomTopic>;
|
|
5
|
-
generateTests(topic: CustomTopic, intent: string, categoryBreakdown?: CategoryBreakdown[]): Promise<{
|
|
6
|
-
positiveTests: TestCase[];
|
|
7
|
-
negativeTests: TestCase[];
|
|
8
|
-
}>;
|
|
9
|
-
analyzeResults(topic: CustomTopic, results: TestResult[], metrics: EfficacyMetrics, intent: string): Promise<AnalysisReport>;
|
|
10
|
-
simplifyTopic(currentTopic: CustomTopic, bestTopic: CustomTopic, metrics: EfficacyMetrics, analysis: AnalysisReport, intent: string): Promise<CustomTopic>;
|
|
11
|
-
generateCompanionTopic(blockTopicName: string, blockDescription: string): Promise<CustomTopic>;
|
|
12
|
-
improveTopic(topic: CustomTopic, metrics: EfficacyMetrics, analysis: AnalysisReport, results: TestResult[], iteration: number, targetCoverage: number, intent: string, bestContext?: {
|
|
13
|
-
bestCoverage: number;
|
|
14
|
-
bestIteration: number;
|
|
15
|
-
bestTopic?: CustomTopic;
|
|
16
|
-
}): Promise<CustomTopic>;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/llm/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,QAAQ,EACR,UAAU,EACX,MAAM,kBAAkB,CAAC;AAE1B,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3F,aAAa,CACX,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,GACtC,OAAO,CAAC;QAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QAAC,aAAa,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC,CAAC;IACrE,cAAc,CACZ,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B,aAAa,CACX,YAAY,EAAE,WAAW,EACzB,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/F,YAAY,CACV,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,UAAU,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,WAAW,CAAA;KAAE,GACrF,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB"}
|
package/dist/llm/types.js
DELETED
package/dist/llm/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":""}
|
package/dist/report/html.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAoB,YAAY,EAAuB,MAAM,YAAY,CAAC;AAqJtF,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAoE5D"}
|
package/dist/report/html.js
DELETED
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTML report builder — self-contained HTML from ReportOutput.
|
|
3
|
-
*/
|
|
4
|
-
function esc(s) {
|
|
5
|
-
return s
|
|
6
|
-
.replace(/&/g, '&')
|
|
7
|
-
.replace(/</g, '<')
|
|
8
|
-
.replace(/>/g, '>')
|
|
9
|
-
.replace(/"/g, '"');
|
|
10
|
-
}
|
|
11
|
-
function pct(n) {
|
|
12
|
-
return `${(n * 100).toFixed(1)}%`;
|
|
13
|
-
}
|
|
14
|
-
function delta(n) {
|
|
15
|
-
const sign = n >= 0 ? '+' : '';
|
|
16
|
-
return `${sign}${(n * 100).toFixed(1)}%`;
|
|
17
|
-
}
|
|
18
|
-
function deltaClass(n) {
|
|
19
|
-
if (n > 0)
|
|
20
|
-
return 'positive';
|
|
21
|
-
if (n < 0)
|
|
22
|
-
return 'negative';
|
|
23
|
-
return 'neutral';
|
|
24
|
-
}
|
|
25
|
-
function renderMetricsTable(m) {
|
|
26
|
-
return `<table class="metrics">
|
|
27
|
-
<tr><th>Coverage</th><td>${pct(m.coverage)}</td></tr>
|
|
28
|
-
<tr><th>Accuracy</th><td>${pct(m.accuracy)}</td></tr>
|
|
29
|
-
<tr><th>TPR</th><td>${pct(m.truePositiveRate)}</td></tr>
|
|
30
|
-
<tr><th>TNR</th><td>${pct(m.trueNegativeRate)}</td></tr>
|
|
31
|
-
<tr><th>F1</th><td>${pct(m.f1Score)}</td></tr>
|
|
32
|
-
<tr><th>TP</th><td>${m.truePositives}</td></tr>
|
|
33
|
-
<tr><th>TN</th><td>${m.trueNegatives}</td></tr>
|
|
34
|
-
<tr><th>FP</th><td>${m.falsePositives}</td></tr>
|
|
35
|
-
<tr><th>FN</th><td>${m.falseNegatives}</td></tr>
|
|
36
|
-
<tr><th>Regressions</th><td>${m.regressionCount}</td></tr>
|
|
37
|
-
</table>`;
|
|
38
|
-
}
|
|
39
|
-
function renderTestTable(tests) {
|
|
40
|
-
const rows = tests
|
|
41
|
-
.map((t) => `<tr class="${t.correct ? 'pass' : 'fail'}">
|
|
42
|
-
<td>${esc(t.prompt)}</td>
|
|
43
|
-
<td>${t.expectedTriggered ? 'Yes' : 'No'}</td>
|
|
44
|
-
<td>${t.actualTriggered ? 'Yes' : 'No'}</td>
|
|
45
|
-
<td>${t.correct ? 'Pass' : 'Fail'}</td>
|
|
46
|
-
<td>${esc(t.category)}</td>
|
|
47
|
-
<td>${t.source ? esc(t.source) : '-'}</td>
|
|
48
|
-
<td>${t.scanAction}</td>
|
|
49
|
-
</tr>`)
|
|
50
|
-
.join('\n');
|
|
51
|
-
return `<table class="tests">
|
|
52
|
-
<thead><tr>
|
|
53
|
-
<th>Prompt</th><th>Expected</th><th>Actual</th><th>Result</th>
|
|
54
|
-
<th>Category</th><th>Source</th><th>Action</th>
|
|
55
|
-
</tr></thead>
|
|
56
|
-
<tbody>${rows}</tbody>
|
|
57
|
-
</table>`;
|
|
58
|
-
}
|
|
59
|
-
function renderIteration(iter) {
|
|
60
|
-
const examplesHtml = iter.topic.examples.length > 0
|
|
61
|
-
? `<ul>${iter.topic.examples.map((e) => `<li>${esc(e)}</li>`).join('')}</ul>`
|
|
62
|
-
: '<p>None</p>';
|
|
63
|
-
const analysisHtml = `
|
|
64
|
-
<p>${esc(iter.analysis.summary)}</p>
|
|
65
|
-
${iter.analysis.falsePositivePatterns.length > 0 ? `<p><strong>FP Patterns:</strong> ${iter.analysis.falsePositivePatterns.map(esc).join('; ')}</p>` : ''}
|
|
66
|
-
${iter.analysis.falseNegativePatterns.length > 0 ? `<p><strong>FN Patterns:</strong> ${iter.analysis.falseNegativePatterns.map(esc).join('; ')}</p>` : ''}
|
|
67
|
-
${iter.analysis.suggestions.length > 0 ? `<p><strong>Suggestions:</strong> ${iter.analysis.suggestions.map(esc).join('; ')}</p>` : ''}
|
|
68
|
-
`;
|
|
69
|
-
const testsHtml = iter.tests ? `<h4>Test Results</h4>${renderTestTable(iter.tests)}` : '';
|
|
70
|
-
return `<section class="iteration">
|
|
71
|
-
<h3>Iteration ${iter.iteration}</h3>
|
|
72
|
-
<p class="meta">Duration: ${(iter.durationMs / 1000).toFixed(1)}s | ${iter.timestamp}</p>
|
|
73
|
-
<h4>Topic</h4>
|
|
74
|
-
<p><strong>${esc(iter.topic.name)}</strong></p>
|
|
75
|
-
<p>${esc(iter.topic.description)}</p>
|
|
76
|
-
<h4>Examples</h4>
|
|
77
|
-
${examplesHtml}
|
|
78
|
-
<h4>Metrics</h4>
|
|
79
|
-
${renderMetricsTable(iter.metrics)}
|
|
80
|
-
<h4>Analysis</h4>
|
|
81
|
-
${analysisHtml}
|
|
82
|
-
${testsHtml}
|
|
83
|
-
</section>`;
|
|
84
|
-
}
|
|
85
|
-
function renderTrends(iterations) {
|
|
86
|
-
if (iterations.length < 2)
|
|
87
|
-
return '';
|
|
88
|
-
const rows = iterations
|
|
89
|
-
.map((iter) => `<tr>
|
|
90
|
-
<td>${iter.iteration}</td>
|
|
91
|
-
<td>${pct(iter.metrics.coverage)}</td>
|
|
92
|
-
<td>${pct(iter.metrics.truePositiveRate)}</td>
|
|
93
|
-
<td>${pct(iter.metrics.trueNegativeRate)}</td>
|
|
94
|
-
<td>${pct(iter.metrics.accuracy)}</td>
|
|
95
|
-
<td>${pct(iter.metrics.f1Score)}</td>
|
|
96
|
-
<td>${iter.metrics.falsePositives}</td>
|
|
97
|
-
<td>${iter.metrics.falseNegatives}</td>
|
|
98
|
-
</tr>`)
|
|
99
|
-
.join('\n');
|
|
100
|
-
return `<section class="trends">
|
|
101
|
-
<h2>Iteration Trends</h2>
|
|
102
|
-
<table class="metrics">
|
|
103
|
-
<thead><tr>
|
|
104
|
-
<th>Iter</th><th>Coverage</th><th>TPR</th><th>TNR</th>
|
|
105
|
-
<th>Accuracy</th><th>F1</th><th>FP</th><th>FN</th>
|
|
106
|
-
</tr></thead>
|
|
107
|
-
<tbody>${rows}</tbody>
|
|
108
|
-
</table>
|
|
109
|
-
</section>`;
|
|
110
|
-
}
|
|
111
|
-
function renderDiff(diff) {
|
|
112
|
-
const d = diff.metricsDelta;
|
|
113
|
-
return `<section class="diff">
|
|
114
|
-
<h2>Run Comparison</h2>
|
|
115
|
-
<table class="metrics">
|
|
116
|
-
<thead><tr><th>Metric</th><th>${esc(diff.baseRunId)}</th><th>${esc(diff.compareRunId)}</th><th>Delta</th></tr></thead>
|
|
117
|
-
<tbody>
|
|
118
|
-
<tr><td>Coverage</td><td>${pct(diff.baseMetrics.coverage)}</td><td>${pct(diff.compareMetrics.coverage)}</td><td class="${deltaClass(d.coverage)}">${delta(d.coverage)}</td></tr>
|
|
119
|
-
<tr><td>TPR</td><td>${pct(diff.baseMetrics.truePositiveRate)}</td><td>${pct(diff.compareMetrics.truePositiveRate)}</td><td class="${deltaClass(d.tpr)}">${delta(d.tpr)}</td></tr>
|
|
120
|
-
<tr><td>TNR</td><td>${pct(diff.baseMetrics.trueNegativeRate)}</td><td>${pct(diff.compareMetrics.trueNegativeRate)}</td><td class="${deltaClass(d.tnr)}">${delta(d.tnr)}</td></tr>
|
|
121
|
-
<tr><td>Accuracy</td><td>${pct(diff.baseMetrics.accuracy)}</td><td>${pct(diff.compareMetrics.accuracy)}</td><td class="${deltaClass(d.accuracy)}">${delta(d.accuracy)}</td></tr>
|
|
122
|
-
<tr><td>F1</td><td>${pct(diff.baseMetrics.f1Score)}</td><td>${pct(diff.compareMetrics.f1Score)}</td><td class="${deltaClass(d.f1)}">${delta(d.f1)}</td></tr>
|
|
123
|
-
</tbody>
|
|
124
|
-
</table>
|
|
125
|
-
<h3>Topic Comparison</h3>
|
|
126
|
-
<div class="topic-diff">
|
|
127
|
-
<div><h4>Base</h4><p><strong>${esc(diff.baseTopic.name)}</strong></p><p>${esc(diff.baseTopic.description)}</p></div>
|
|
128
|
-
<div><h4>Compare</h4><p><strong>${esc(diff.compareTopic.name)}</strong></p><p>${esc(diff.compareTopic.description)}</p></div>
|
|
129
|
-
</div>
|
|
130
|
-
</section>`;
|
|
131
|
-
}
|
|
132
|
-
export function buildReportHtml(report) {
|
|
133
|
-
const iterationsHtml = report.iterations.map(renderIteration).join('\n');
|
|
134
|
-
const trendsHtml = renderTrends(report.iterations);
|
|
135
|
-
const diffHtml = report.diff ? renderDiff(report.diff) : '';
|
|
136
|
-
return `<!DOCTYPE html>
|
|
137
|
-
<html lang="en">
|
|
138
|
-
<head>
|
|
139
|
-
<meta charset="UTF-8">
|
|
140
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
141
|
-
<title>Prisma AIRS CLI Report — ${esc(report.run.id)}</title>
|
|
142
|
-
<style>
|
|
143
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
144
|
-
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; max-width: 1200px; margin: 0 auto; padding: 2rem; background: #f8f9fa; color: #212529; }
|
|
145
|
-
h1 { font-size: 1.8rem; margin-bottom: 0.5rem; }
|
|
146
|
-
h2 { font-size: 1.4rem; margin: 1.5rem 0 0.75rem; border-bottom: 2px solid #dee2e6; padding-bottom: 0.25rem; }
|
|
147
|
-
h3 { font-size: 1.1rem; margin: 1rem 0 0.5rem; }
|
|
148
|
-
h4 { font-size: 0.95rem; margin: 0.75rem 0 0.25rem; color: #495057; }
|
|
149
|
-
.header { background: #212529; color: #fff; padding: 1.5rem; border-radius: 8px; margin-bottom: 1.5rem; }
|
|
150
|
-
.header h1 { color: #fff; }
|
|
151
|
-
.header .meta { color: #adb5bd; font-size: 0.9rem; }
|
|
152
|
-
.summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin-bottom: 1.5rem; }
|
|
153
|
-
.summary-card { background: #fff; padding: 1rem; border-radius: 6px; border: 1px solid #dee2e6; }
|
|
154
|
-
.summary-card .label { font-size: 0.8rem; color: #6c757d; text-transform: uppercase; }
|
|
155
|
-
.summary-card .value { font-size: 1.3rem; font-weight: 600; }
|
|
156
|
-
table { width: 100%; border-collapse: collapse; margin: 0.5rem 0 1rem; }
|
|
157
|
-
th, td { padding: 0.5rem 0.75rem; text-align: left; border-bottom: 1px solid #dee2e6; }
|
|
158
|
-
th { background: #f1f3f5; font-size: 0.85rem; text-transform: uppercase; color: #495057; }
|
|
159
|
-
.pass td:nth-child(4) { color: #2b8a3e; font-weight: 600; }
|
|
160
|
-
.fail td:nth-child(4) { color: #c92a2a; font-weight: 600; }
|
|
161
|
-
.iteration { background: #fff; padding: 1.25rem; border-radius: 6px; border: 1px solid #dee2e6; margin-bottom: 1rem; }
|
|
162
|
-
.meta { font-size: 0.85rem; color: #868e96; }
|
|
163
|
-
.positive { color: #2b8a3e; }
|
|
164
|
-
.negative { color: #c92a2a; }
|
|
165
|
-
.neutral { color: #868e96; }
|
|
166
|
-
.trends { background: #fff; padding: 1.25rem; border-radius: 6px; border: 1px solid #dee2e6; margin-bottom: 1rem; }
|
|
167
|
-
.diff { background: #fff; padding: 1.25rem; border-radius: 6px; border: 1px solid #dee2e6; margin-bottom: 1rem; }
|
|
168
|
-
.topic-diff { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
|
|
169
|
-
.tests { font-size: 0.85rem; }
|
|
170
|
-
.tests td:first-child { max-width: 400px; word-break: break-word; }
|
|
171
|
-
</style>
|
|
172
|
-
</head>
|
|
173
|
-
<body>
|
|
174
|
-
<div class="header">
|
|
175
|
-
<h1>Prisma AIRS CLI Evaluation Report</h1>
|
|
176
|
-
<p class="meta">Generated ${esc(report.generatedAt)} | Run ${esc(report.run.id)}</p>
|
|
177
|
-
</div>
|
|
178
|
-
|
|
179
|
-
<div class="summary">
|
|
180
|
-
<div class="summary-card"><div class="label">Status</div><div class="value">${esc(report.run.status)}</div></div>
|
|
181
|
-
<div class="summary-card"><div class="label">Intent</div><div class="value">${esc(report.run.intent)}</div></div>
|
|
182
|
-
<div class="summary-card"><div class="label">Best Coverage</div><div class="value">${pct(report.run.bestCoverage)}</div></div>
|
|
183
|
-
<div class="summary-card"><div class="label">Iterations</div><div class="value">${report.run.totalIterations}</div></div>
|
|
184
|
-
<div class="summary-card"><div class="label">Best Iteration</div><div class="value">#${report.run.bestIteration}</div></div>
|
|
185
|
-
<div class="summary-card"><div class="label">Profile</div><div class="value">${esc(report.run.profileName)}</div></div>
|
|
186
|
-
</div>
|
|
187
|
-
|
|
188
|
-
<h2>Topic</h2>
|
|
189
|
-
<p>${esc(report.run.topicDescription)}</p>
|
|
190
|
-
|
|
191
|
-
${trendsHtml}
|
|
192
|
-
|
|
193
|
-
<h2>Iterations</h2>
|
|
194
|
-
${iterationsHtml}
|
|
195
|
-
|
|
196
|
-
${diffHtml}
|
|
197
|
-
</body>
|
|
198
|
-
</html>`;
|
|
199
|
-
}
|
|
200
|
-
//# sourceMappingURL=html.js.map
|
package/dist/report/html.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"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"}
|
package/dist/report/json.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JSON report builder — pure function mapping RunState to structured ReportOutput.
|
|
3
|
-
*/
|
|
4
|
-
import type { RunState } from '../core/types.js';
|
|
5
|
-
import type { ReportOutput } from './types.js';
|
|
6
|
-
export interface BuildReportOptions {
|
|
7
|
-
includeTests?: boolean;
|
|
8
|
-
diffRun?: RunState | null;
|
|
9
|
-
}
|
|
10
|
-
export declare function buildReportJson(run: RunState, options?: BuildReportOptions): ReportOutput;
|
|
11
|
-
//# sourceMappingURL=json.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/report/json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAoB,YAAY,EAAuB,MAAM,YAAY,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,GAAE,kBAAuB,GAAG,YAAY,CAqD7F"}
|
package/dist/report/json.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JSON report builder — pure function mapping RunState to structured ReportOutput.
|
|
3
|
-
*/
|
|
4
|
-
export function buildReportJson(run, options = {}) {
|
|
5
|
-
const iterations = run.iterations.map((iter) => {
|
|
6
|
-
const summary = {
|
|
7
|
-
iteration: iter.iteration,
|
|
8
|
-
timestamp: iter.timestamp,
|
|
9
|
-
durationMs: iter.durationMs,
|
|
10
|
-
topic: iter.topic,
|
|
11
|
-
metrics: iter.metrics,
|
|
12
|
-
analysis: iter.analysis,
|
|
13
|
-
};
|
|
14
|
-
if (options.includeTests) {
|
|
15
|
-
summary.tests = iter.testResults.map((r) => {
|
|
16
|
-
const detail = {
|
|
17
|
-
prompt: r.testCase.prompt,
|
|
18
|
-
expectedTriggered: r.testCase.expectedTriggered,
|
|
19
|
-
actualTriggered: r.actualTriggered,
|
|
20
|
-
correct: r.correct,
|
|
21
|
-
category: r.testCase.category,
|
|
22
|
-
scanAction: r.scanAction,
|
|
23
|
-
};
|
|
24
|
-
if (r.testCase.source) {
|
|
25
|
-
detail.source = r.testCase.source;
|
|
26
|
-
}
|
|
27
|
-
return detail;
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
return summary;
|
|
31
|
-
});
|
|
32
|
-
const report = {
|
|
33
|
-
version: 1,
|
|
34
|
-
generatedAt: new Date().toISOString(),
|
|
35
|
-
run: {
|
|
36
|
-
id: run.id,
|
|
37
|
-
createdAt: run.createdAt,
|
|
38
|
-
status: run.status,
|
|
39
|
-
intent: run.userInput.intent,
|
|
40
|
-
topicDescription: run.userInput.topicDescription,
|
|
41
|
-
profileName: run.userInput.profileName,
|
|
42
|
-
bestIteration: run.bestIteration,
|
|
43
|
-
bestCoverage: run.bestCoverage,
|
|
44
|
-
totalIterations: run.iterations.length,
|
|
45
|
-
},
|
|
46
|
-
iterations,
|
|
47
|
-
};
|
|
48
|
-
if (options.diffRun) {
|
|
49
|
-
report.diff = buildDiff(run, options.diffRun);
|
|
50
|
-
}
|
|
51
|
-
return report;
|
|
52
|
-
}
|
|
53
|
-
function buildDiff(baseRun, compareRun) {
|
|
54
|
-
const baseIter = baseRun.iterations[baseRun.bestIteration - 1];
|
|
55
|
-
const compareIter = compareRun.iterations[compareRun.bestIteration - 1];
|
|
56
|
-
const baseMetrics = baseIter.metrics;
|
|
57
|
-
const compareMetrics = compareIter.metrics;
|
|
58
|
-
return {
|
|
59
|
-
baseRunId: baseRun.id,
|
|
60
|
-
compareRunId: compareRun.id,
|
|
61
|
-
metricsDelta: {
|
|
62
|
-
coverage: compareMetrics.coverage - baseMetrics.coverage,
|
|
63
|
-
tpr: compareMetrics.truePositiveRate - baseMetrics.truePositiveRate,
|
|
64
|
-
tnr: compareMetrics.trueNegativeRate - baseMetrics.trueNegativeRate,
|
|
65
|
-
accuracy: compareMetrics.accuracy - baseMetrics.accuracy,
|
|
66
|
-
f1: compareMetrics.f1Score - baseMetrics.f1Score,
|
|
67
|
-
},
|
|
68
|
-
baseMetrics,
|
|
69
|
-
compareMetrics,
|
|
70
|
-
baseTopic: baseIter.topic,
|
|
71
|
-
compareTopic: compareIter.topic,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=json.js.map
|