@cdot65/prisma-airs-cli 2.10.0 → 2.11.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/dist/airs/management.d.ts +1 -2
- package/dist/airs/management.d.ts.map +1 -1
- package/dist/airs/management.js +0 -9
- package/dist/airs/management.js.map +1 -1
- package/dist/airs/promptsets.d.ts.map +1 -1
- package/dist/airs/promptsets.js +4 -1
- package/dist/airs/promptsets.js.map +1 -1
- package/dist/airs/redteam.d.ts +11 -1
- package/dist/airs/redteam.d.ts.map +1 -1
- package/dist/airs/redteam.js +61 -12
- package/dist/airs/redteam.js.map +1 -1
- package/dist/airs/types.d.ts +5 -6
- package/dist/airs/types.d.ts.map +1 -1
- package/dist/cli/commands/dlp/generate.d.ts +3 -0
- package/dist/cli/commands/dlp/generate.d.ts.map +1 -0
- package/dist/cli/commands/{dlp-gen.js → dlp/generate.js} +4 -4
- package/dist/cli/commands/dlp/generate.js.map +1 -0
- package/dist/cli/commands/dlp/index.d.ts.map +1 -1
- package/dist/cli/commands/dlp/index.js +3 -2
- package/dist/cli/commands/dlp/index.js.map +1 -1
- package/dist/cli/commands/redteam.d.ts.map +1 -1
- package/dist/cli/commands/redteam.js +38 -21
- package/dist/cli/commands/redteam.js.map +1 -1
- package/dist/cli/commands/runtime.d.ts.map +1 -1
- package/dist/cli/commands/runtime.js +2 -29
- package/dist/cli/commands/runtime.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -31
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/program.d.ts +3 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +32 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/renderer/dlp.d.ts +1 -0
- package/dist/cli/renderer/dlp.d.ts.map +1 -1
- package/dist/cli/renderer/dlp.js +3 -3
- package/dist/cli/renderer/dlp.js.map +1 -1
- package/dist/cli/renderer/redteam.d.ts +30 -4
- package/dist/cli/renderer/redteam.d.ts.map +1 -1
- package/dist/cli/renderer/redteam.js +70 -10
- package/dist/cli/renderer/redteam.js.map +1 -1
- package/dist/cli/renderer/runtime.d.ts +0 -4
- package/dist/cli/renderer/runtime.d.ts.map +1 -1
- package/dist/cli/renderer/runtime.js +0 -27
- package/dist/cli/renderer/runtime.js.map +1 -1
- package/dist/dlp/embed/docx.d.ts.map +1 -1
- package/dist/dlp/embed/docx.js +17 -10
- package/dist/dlp/embed/docx.js.map +1 -1
- package/dist/dlp/generate/docx.d.ts.map +1 -1
- package/dist/dlp/generate/docx.js +5 -1
- package/dist/dlp/generate/docx.js.map +1 -1
- package/package.json +11 -3
- package/dist/cli/commands/dlp-gen.d.ts +0 -3
- package/dist/cli/commands/dlp-gen.d.ts.map +0 -1
- package/dist/cli/commands/dlp-gen.js.map +0 -1
package/dist/dlp/embed/docx.js
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
|
-
import { Document, HeadingLevel, Packer, Paragraph, TextRun } from 'docx';
|
|
2
1
|
import { lorem } from '../lorem.js';
|
|
3
2
|
import { makeRng } from '../rng.js';
|
|
4
3
|
const join = (p) => p.map((v) => `${v.category}: ${v.value}`).join(' | ');
|
|
5
|
-
function
|
|
6
|
-
|
|
4
|
+
async function build(extra, core = {}) {
|
|
5
|
+
// Lazy-load docx: importing it eagerly pulls in browserify polyfills whose
|
|
6
|
+
// util-deprecate shim reads localStorage at import time, triggering a Node
|
|
7
|
+
// Web Storage warning on every CLI command. Deferring the import to here
|
|
8
|
+
// means docx (and the warning) only loads when DOCX output is actually built.
|
|
9
|
+
const { Document, HeadingLevel, Packer, Paragraph, TextRun } = await import('docx');
|
|
10
|
+
const body = lorem(makeRng(1), 2)
|
|
7
11
|
.split('\n\n')
|
|
8
12
|
.map((t) => new Paragraph({ children: [new TextRun(t)] }));
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
const extraParagraphs = extra.kind === 'hidden'
|
|
14
|
+
? [new Paragraph({ children: [new TextRun({ text: extra.text, vanish: true })] })]
|
|
15
|
+
: extra.kind === 'visible'
|
|
16
|
+
? [new Paragraph({ children: [new TextRun(extra.text)] })]
|
|
17
|
+
: [];
|
|
11
18
|
const doc = new Document({
|
|
12
19
|
title: core.title,
|
|
13
20
|
subject: core.subject,
|
|
@@ -16,8 +23,8 @@ async function build(extra, core = {}) {
|
|
|
16
23
|
{
|
|
17
24
|
children: [
|
|
18
25
|
new Paragraph({ text: 'Generated Document', heading: HeadingLevel.HEADING_1 }),
|
|
19
|
-
...
|
|
20
|
-
...
|
|
26
|
+
...body,
|
|
27
|
+
...extraParagraphs,
|
|
21
28
|
],
|
|
22
29
|
},
|
|
23
30
|
],
|
|
@@ -29,19 +36,19 @@ export const docxTechniques = {
|
|
|
29
36
|
id: 'core-props',
|
|
30
37
|
format: 'docx',
|
|
31
38
|
label: 'core document properties',
|
|
32
|
-
embed: (_clean, p) => build(
|
|
39
|
+
embed: (_clean, p) => build({ kind: 'none' }, { title: join(p), subject: join(p), keywords: join(p) }),
|
|
33
40
|
},
|
|
34
41
|
'hidden-run': {
|
|
35
42
|
id: 'hidden-run',
|
|
36
43
|
format: 'docx',
|
|
37
44
|
label: 'hidden (vanish) run',
|
|
38
|
-
embed: (_clean, p) => build(
|
|
45
|
+
embed: (_clean, p) => build({ kind: 'hidden', text: join(p) }),
|
|
39
46
|
},
|
|
40
47
|
visible: {
|
|
41
48
|
id: 'visible',
|
|
42
49
|
format: 'docx',
|
|
43
50
|
label: 'visible body line',
|
|
44
|
-
embed: (_clean, p) => build(
|
|
51
|
+
embed: (_clean, p) => build({ kind: 'visible', text: join(p) }),
|
|
45
52
|
},
|
|
46
53
|
};
|
|
47
54
|
//# sourceMappingURL=docx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../../src/dlp/embed/docx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../../src/dlp/embed/docx.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docx.d.ts","sourceRoot":"","sources":["../../../src/dlp/generate/docx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"docx.d.ts","sourceRoot":"","sources":["../../../src/dlp/generate/docx.ts"],"names":[],"mappings":"AAEA,2DAA2D;AAC3D,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB7D"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import { Document, HeadingLevel, Packer, Paragraph, TextRun } from 'docx';
|
|
2
1
|
import { lorem } from '../lorem.js';
|
|
3
2
|
/** Generate a valid DOCX (zip) filled with lorem ipsum. */
|
|
4
3
|
export async function docx(rng) {
|
|
4
|
+
// Lazy-load docx: importing it eagerly pulls in browserify polyfills whose
|
|
5
|
+
// util-deprecate shim reads localStorage at import time, triggering a Node
|
|
6
|
+
// Web Storage warning on every CLI command. Deferring the import to here
|
|
7
|
+
// means docx (and the warning) only loads when DOCX output is actually built.
|
|
8
|
+
const { Document, HeadingLevel, Packer, Paragraph, TextRun } = await import('docx');
|
|
5
9
|
const paragraphs = lorem(rng, 3)
|
|
6
10
|
.split('\n\n')
|
|
7
11
|
.map((p) => new Paragraph({ children: [new TextRun(p)] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../../src/dlp/generate/docx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../../src/dlp/generate/docx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAiB;IAC1C,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,8EAA8E;IAC9E,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;SAC7B,KAAK,CAAC,MAAM,CAAC;SACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC;QACvB,QAAQ,EAAE;YACR;gBACE,QAAQ,EAAE;oBACR,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;oBAC9E,GAAG,UAAU;iBACd;aACF;SACF;KACF,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdot65/prisma-airs-cli",
|
|
3
3
|
"packageManager": "pnpm@10.6.5",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.11.0",
|
|
5
5
|
"description": "CLI and library for Palo Alto Prisma AIRS — guardrail refinement, AI red teaming, model security scanning, profile audits",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -28,7 +28,12 @@
|
|
|
28
28
|
"docker:build:amd64": "docker buildx build --platform linux/amd64 --load -t prisma-airs-cli:local-amd64 .",
|
|
29
29
|
"docker:build:arm64": "docker buildx build --platform linux/arm64 --load -t prisma-airs-cli:local-arm64 .",
|
|
30
30
|
"docker:run": "docker run --rm -v ~/.prisma-airs:/root/.prisma-airs prisma-airs-cli:local",
|
|
31
|
-
"docker:push:arm64": "./scripts/docker-push-arm64.sh"
|
|
31
|
+
"docker:push:arm64": "./scripts/docker-push-arm64.sh",
|
|
32
|
+
"docs:gen": "tsx scripts/gen-cli-docs.ts",
|
|
33
|
+
"docs:api": "typedoc",
|
|
34
|
+
"docs:build": "pnpm docs:gen && pnpm docs:api && mkdocs build --strict",
|
|
35
|
+
"docs:serve": "pnpm docs:gen && pnpm docs:api && mkdocs serve",
|
|
36
|
+
"docs:check": "tsx scripts/check-cli-docs.ts"
|
|
32
37
|
},
|
|
33
38
|
"engines": {
|
|
34
39
|
"node": ">=20.0.0"
|
|
@@ -40,7 +45,7 @@
|
|
|
40
45
|
"license": "MIT",
|
|
41
46
|
"dependencies": {
|
|
42
47
|
"@anthropic-ai/vertex-sdk": "^0.14.4",
|
|
43
|
-
"@cdot65/prisma-airs-sdk": "^0.
|
|
48
|
+
"@cdot65/prisma-airs-sdk": "^0.10.0",
|
|
44
49
|
"@inquirer/prompts": "^8.3.0",
|
|
45
50
|
"@langchain/anthropic": "^1.3.25",
|
|
46
51
|
"@langchain/aws": "^1.3.3",
|
|
@@ -61,10 +66,13 @@
|
|
|
61
66
|
},
|
|
62
67
|
"devDependencies": {
|
|
63
68
|
"@biomejs/biome": "^2.4.4",
|
|
69
|
+
"@changesets/cli": "^2.31.0",
|
|
64
70
|
"@types/js-yaml": "^4.0.9",
|
|
65
71
|
"@types/node": "^22.0.0",
|
|
66
72
|
"@vitest/coverage-v8": "^3.0.0",
|
|
67
73
|
"tsx": "^4.0.0",
|
|
74
|
+
"typedoc": "^0.28.19",
|
|
75
|
+
"typedoc-plugin-markdown": "^4.11.0",
|
|
68
76
|
"typescript": "^5.7.0",
|
|
69
77
|
"vitest": "^3.0.0"
|
|
70
78
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dlp-gen.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dlp-gen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAyC3D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dlp-gen.js","sourceRoot":"","sources":["../../../src/cli/commands/dlp-gen.ts"],"names":[],"mappings":"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"}
|