@cdot65/prisma-airs-cli 2.9.0 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/airs/promptsets.d.ts.map +1 -1
  2. package/dist/airs/promptsets.js +4 -1
  3. package/dist/airs/promptsets.js.map +1 -1
  4. package/dist/airs/redteam.d.ts +11 -1
  5. package/dist/airs/redteam.d.ts.map +1 -1
  6. package/dist/airs/redteam.js +61 -12
  7. package/dist/airs/redteam.js.map +1 -1
  8. package/dist/airs/types.d.ts +5 -1
  9. package/dist/airs/types.d.ts.map +1 -1
  10. package/dist/cli/commands/dlp/build-body.d.ts +28 -0
  11. package/dist/cli/commands/dlp/build-body.d.ts.map +1 -0
  12. package/dist/cli/commands/dlp/build-body.js +174 -0
  13. package/dist/cli/commands/dlp/build-body.js.map +1 -0
  14. package/dist/cli/commands/dlp/dictionaries.d.ts.map +1 -1
  15. package/dist/cli/commands/dlp/dictionaries.js +2 -1
  16. package/dist/cli/commands/dlp/dictionaries.js.map +1 -1
  17. package/dist/cli/commands/dlp/filtering-profiles.d.ts.map +1 -1
  18. package/dist/cli/commands/dlp/filtering-profiles.js +26 -10
  19. package/dist/cli/commands/dlp/filtering-profiles.js.map +1 -1
  20. package/dist/cli/commands/dlp/patterns.d.ts.map +1 -1
  21. package/dist/cli/commands/dlp/patterns.js +37 -30
  22. package/dist/cli/commands/dlp/patterns.js.map +1 -1
  23. package/dist/cli/commands/dlp/profiles.d.ts.map +1 -1
  24. package/dist/cli/commands/dlp/profiles.js +35 -33
  25. package/dist/cli/commands/dlp/profiles.js.map +1 -1
  26. package/dist/cli/commands/redteam.d.ts.map +1 -1
  27. package/dist/cli/commands/redteam.js +38 -21
  28. package/dist/cli/commands/redteam.js.map +1 -1
  29. package/dist/cli/index.d.ts.map +1 -1
  30. package/dist/cli/index.js +2 -31
  31. package/dist/cli/index.js.map +1 -1
  32. package/dist/cli/program.d.ts +3 -0
  33. package/dist/cli/program.d.ts.map +1 -0
  34. package/dist/cli/program.js +32 -0
  35. package/dist/cli/program.js.map +1 -0
  36. package/dist/cli/renderer/dlp.d.ts +22 -19
  37. package/dist/cli/renderer/dlp.d.ts.map +1 -1
  38. package/dist/cli/renderer/dlp.js +299 -58
  39. package/dist/cli/renderer/dlp.js.map +1 -1
  40. package/dist/cli/renderer/redteam.d.ts +30 -4
  41. package/dist/cli/renderer/redteam.d.ts.map +1 -1
  42. package/dist/cli/renderer/redteam.js +70 -10
  43. package/dist/cli/renderer/redteam.js.map +1 -1
  44. package/dist/dlp/embed/docx.d.ts.map +1 -1
  45. package/dist/dlp/embed/docx.js +17 -10
  46. package/dist/dlp/embed/docx.js.map +1 -1
  47. package/dist/dlp/generate/docx.d.ts.map +1 -1
  48. package/dist/dlp/generate/docx.js +5 -1
  49. package/dist/dlp/generate/docx.js.map +1 -1
  50. package/package.json +10 -3
@@ -57,6 +57,7 @@ export function register(dlp) {
57
57
  .option('--file <path>', 'Keyword file')
58
58
  .option('--metadata-file <path>', 'JSON metadata file (overrides --name/--category/...)')
59
59
  .option('--include-keywords', 'Include keywords in response')
60
+ .option('--output <fmt>', 'Output format', 'pretty')
60
61
  .action(async (opts) => {
61
62
  try {
62
63
  const metadata = await buildMetadata(opts);
@@ -68,7 +69,7 @@ export function register(dlp) {
68
69
  file,
69
70
  includeKeywords: opts.includeKeywords,
70
71
  });
71
- dlpDictionaries.renderCreated(r, 'pretty');
72
+ dlpDictionaries.renderCreated(r, opts.output);
72
73
  }
73
74
  catch (err) {
74
75
  renderError(err instanceof Error ? err.message : String(err));
@@ -1 +1 @@
1
- {"version":3,"file":"dictionaries.js","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/dictionaries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dictionaries.js","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/dictionaries.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"filtering-profiles.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/filtering-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAsD3C"}
1
+ {"version":3,"file":"filtering-profiles.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/filtering-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBzC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAgE3C"}
@@ -1,16 +1,23 @@
1
1
  import { SdkDataFilteringProfilesService } from '../../../airs/dlp/data-filtering-profiles.js';
2
2
  import { dlpFilteringProfiles, renderError } from '../../renderer/index.js';
3
+ import { buildFilteringProfileBody, repeatable } from './build-body.js';
3
4
  import { parseBody } from './patch.js';
4
5
  function listFlags(cmd) {
5
6
  return cmd
6
7
  .option('--page <n>', 'Zero-indexed page number', (v) => Number.parseInt(v, 10))
7
8
  .option('--size <n>', 'Page size', (v) => Number.parseInt(v, 10))
8
- .option('--sort <field,dir>', 'Sort criteria (repeatable)', (v, prev = []) => [
9
- ...prev,
10
- v,
11
- ])
9
+ .option('--sort <field,dir>', 'Sort criteria (repeatable)', repeatable)
12
10
  .option('--output <fmt>', 'Output format', 'pretty');
13
11
  }
12
+ async function resolveReplaceBody(opts) {
13
+ if (opts.body || opts.bodyFile) {
14
+ const body = await parseBody({ body: opts.body, bodyFile: opts.bodyFile });
15
+ if (!body)
16
+ throw new Error('--body or --body-file was empty');
17
+ return body;
18
+ }
19
+ return buildFilteringProfileBody(opts);
20
+ }
14
21
  export function register(dlp) {
15
22
  const group = dlp
16
23
  .command('filtering-profiles')
@@ -44,17 +51,26 @@ export function register(dlp) {
44
51
  group
45
52
  .command('replace <id>')
46
53
  .description('Full-replace a filtering profile (PUT)')
47
- .option('--body <json|->', 'JSON body (or "-" for stdin)')
48
- .option('--body-file <path>', 'Path to JSON body file')
54
+ .option('--file-based', 'Apply to file-based scans (boolean)')
55
+ .option('--non-file-based', 'Apply to non-file-based scans (boolean)')
56
+ .option('--description <s>', 'Description')
57
+ .option('--direction <s>', 'Direction: BOTH|UPLOAD|DOWNLOAD')
58
+ .option('--log-severity <s>', 'Severity: CRITICAL|HIGH|MEDIUM|LOW|INFORMATIONAL')
59
+ .option('--scan-type <s>', 'Scan type: include|exclude')
60
+ .option('--data-profile-id <n>', 'Data profile ID', (v) => Number(v))
61
+ .option('--euc-template-id <s>', 'EUC template ID')
62
+ .option('--end-user-coaching', 'Enable end-user coaching')
63
+ .option('--granular', 'Granular profile')
64
+ .option('--file-type <s>', 'File type (repeatable)', repeatable)
65
+ .option('--body <json|->', 'Raw JSON body (escape hatch; or "-" for stdin)')
66
+ .option('--body-file <path>', 'Raw JSON body file (escape hatch)')
49
67
  .option('--output <fmt>', 'Output format', 'pretty')
50
68
  .action(async (id, opts) => {
51
69
  try {
52
- const body = await parseBody({ body: opts.body, bodyFile: opts.bodyFile });
53
- if (!body)
54
- throw new Error('--body or --body-file is required');
70
+ const body = await resolveReplaceBody(opts);
55
71
  const svc = new SdkDataFilteringProfilesService();
56
72
  dlpFilteringProfiles.renderReplaced(
57
- // biome-ignore lint/suspicious/noExplicitAny: parseBody returns unknown, cast for replace()
73
+ // biome-ignore lint/suspicious/noExplicitAny: body shape verified by SDK Zod
58
74
  await svc.replace(id, body), opts.output);
59
75
  }
60
76
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"filtering-profiles.js","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/filtering-profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filtering-profiles.js","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/filtering-profiles.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAyH3C"}
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCzC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAwG3C"}
@@ -1,16 +1,40 @@
1
1
  import { SdkDataPatternsService } from '../../../airs/dlp/data-patterns.js';
2
2
  import { dlpPatterns, renderError } from '../../renderer/index.js';
3
+ import { buildPatternBody, repeatable } from './build-body.js';
3
4
  import { buildMergePatch, parseBody } from './patch.js';
4
5
  function listFlags(cmd) {
5
6
  return cmd
6
7
  .option('--page <n>', 'Zero-indexed page number', (v) => Number.parseInt(v, 10))
7
8
  .option('--size <n>', 'Page size', (v) => Number.parseInt(v, 10))
8
- .option('--sort <field,dir>', 'Sort criteria (repeatable)', (v, prev = []) => [
9
- ...prev,
10
- v,
11
- ])
9
+ .option('--sort <field,dir>', 'Sort criteria (repeatable)', repeatable)
12
10
  .option('--output <fmt>', 'Output format', 'pretty');
13
11
  }
12
+ function writeFlags(cmd) {
13
+ return cmd
14
+ .option('--name <s>', 'Pattern name (required unless --body-file)')
15
+ .option('--type <s>', 'Pattern type: predefined|custom|file_property (default: custom)')
16
+ .option('--description <s>', 'Pattern description')
17
+ .option('--technique <s>', 'Detection technique (default: regex)')
18
+ .option('--confidence-levels <csv>', 'Confidence levels CSV: e.g. high,low')
19
+ .option('--regex <pattern>', 'Regex with weight=1 (repeatable)', repeatable)
20
+ .option('--weighted-regex <PATTERN|N>', 'Regex with explicit weight (repeatable)', repeatable)
21
+ .option('--delimiter <s>', 'Delimiter for proximity matching')
22
+ .option('--proximity-distance <n>', 'Proximity window (2..1000)')
23
+ .option('--proximity-keyword <s>', 'Proximity keyword (repeatable)', repeatable)
24
+ .option('--tag <k=v>', 'Tag (repeatable, value can be CSV)', repeatable)
25
+ .option('--body <json|->', 'Raw JSON body (escape hatch; or "-" for stdin)')
26
+ .option('--body-file <path>', 'Raw JSON body file (escape hatch)')
27
+ .option('--output <fmt>', 'Output format', 'pretty');
28
+ }
29
+ async function resolveWriteBody(opts) {
30
+ if (opts.body || opts.bodyFile) {
31
+ const body = await parseBody({ body: opts.body, bodyFile: opts.bodyFile });
32
+ if (!body)
33
+ throw new Error('--body or --body-file was empty');
34
+ return body;
35
+ }
36
+ return buildPatternBody(opts);
37
+ }
14
38
  export function register(dlp) {
15
39
  const group = dlp.command('patterns').description('DLP data patterns (full CRUD)');
16
40
  listFlags(group.command('list').description('List data patterns')).action(async (opts) => {
@@ -23,21 +47,12 @@ export function register(dlp) {
23
47
  process.exit(1);
24
48
  }
25
49
  });
26
- group
27
- .command('create')
28
- .description('Create a data pattern')
29
- .option('--body <json|->', 'JSON body (or "-" for stdin)')
30
- .option('--body-file <path>', 'Path to JSON body file')
31
- .option('--output <fmt>', 'Output format', 'pretty')
32
- .action(async (opts) => {
50
+ writeFlags(group.command('create').description('Create a data pattern')).action(async (opts) => {
33
51
  try {
34
- const body = await parseBody({ body: opts.body, bodyFile: opts.bodyFile });
35
- if (!body)
36
- throw new Error('--body or --body-file is required');
37
- const svc = new SdkDataPatternsService();
52
+ const body = await resolveWriteBody(opts);
38
53
  dlpPatterns.renderCreated(
39
- // biome-ignore lint/suspicious/noExplicitAny: parseBody returns unknown, cast for create()
40
- await svc.create(body), opts.output);
54
+ // biome-ignore lint/suspicious/noExplicitAny: body shape verified by SDK Zod
55
+ await new SdkDataPatternsService().create(body), opts.output);
41
56
  }
42
57
  catch (err) {
43
58
  renderError(err instanceof Error ? err.message : String(err));
@@ -57,19 +72,11 @@ export function register(dlp) {
57
72
  process.exit(1);
58
73
  }
59
74
  });
60
- group
61
- .command('replace <id>')
62
- .description('Full-replace a data pattern (PUT)')
63
- .option('--body <json|->', 'JSON body (or "-" for stdin)')
64
- .option('--body-file <path>', 'Path to JSON body file')
65
- .option('--output <fmt>', 'Output format', 'pretty')
66
- .action(async (id, opts) => {
75
+ writeFlags(group.command('replace <id>').description('Full-replace a data pattern (PUT)')).action(async (id, opts) => {
67
76
  try {
68
- const body = await parseBody({ body: opts.body, bodyFile: opts.bodyFile });
69
- if (!body)
70
- throw new Error('--body or --body-file is required');
77
+ const body = await resolveWriteBody(opts);
71
78
  dlpPatterns.renderReplaced(
72
- // biome-ignore lint/suspicious/noExplicitAny: parseBody returns unknown, cast for replace()
79
+ // biome-ignore lint/suspicious/noExplicitAny: body shape verified by SDK Zod
73
80
  await new SdkDataPatternsService().replace(id, body), opts.output);
74
81
  }
75
82
  catch (err) {
@@ -83,8 +90,8 @@ export function register(dlp) {
83
90
  '--set/--clear coerce values: numbers/booleans/JSON literals. ' +
84
91
  'To force a string, quote: --set count=\'"5"\'.')
85
92
  .option('--body-file <path>', 'JSON merge-patch body file')
86
- .option('--set <k=v...>', 'Set scalar field (repeatable)', (v, p = []) => [...p, v])
87
- .option('--clear <key...>', 'Clear field via merge-patch null (repeatable)', (v, p = []) => [...p, v])
93
+ .option('--set <k=v...>', 'Set scalar field (repeatable)', repeatable)
94
+ .option('--clear <key...>', 'Clear field via merge-patch null (repeatable)', repeatable)
88
95
  .option('--output <fmt>', 'Output format', 'pretty')
89
96
  .action(async (id, opts) => {
90
97
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/patterns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/patterns.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAgI3C"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+CzC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA8G3C"}
@@ -1,16 +1,36 @@
1
1
  import { SdkDataProfilesService } from '../../../airs/dlp/data-profiles.js';
2
2
  import { dlpProfiles, renderError } from '../../renderer/index.js';
3
+ import { buildProfileBody, repeatable } from './build-body.js';
3
4
  import { buildMergePatch, parseBody } from './patch.js';
4
5
  function listFlags(cmd) {
5
6
  return cmd
6
7
  .option('--page <n>', 'Zero-indexed page number', (v) => Number.parseInt(v, 10))
7
8
  .option('--size <n>', 'Page size', (v) => Number.parseInt(v, 10))
8
- .option('--sort <field,dir>', 'Sort criteria (repeatable)', (v, prev = []) => [
9
- ...prev,
10
- v,
11
- ])
9
+ .option('--sort <field,dir>', 'Sort criteria (repeatable)', repeatable)
12
10
  .option('--output <fmt>', 'Output format', 'pretty');
13
11
  }
12
+ function writeFlags(cmd) {
13
+ return cmd
14
+ .option('--name <s>', 'Profile name (required unless --body-file)')
15
+ .option('--profile-type <s>', 'Profile type: basic|advanced (default: advanced)')
16
+ .option('--description <s>', 'Description')
17
+ .option('--granular', 'Granular data profile')
18
+ .option('--pattern-id <id>', 'Data pattern ID to include (repeatable). Builds a simple expression_tree.', repeatable)
19
+ .option('--combinator <op>', 'Combinator for --pattern-id: or|and|not|and_not|or_not (default: or)')
20
+ .option('--confidence <level>', 'Confidence level for --pattern-id leaves (default: high)')
21
+ .option('--body <json|->', 'Raw JSON body (escape hatch; or "-" for stdin)')
22
+ .option('--body-file <path>', 'Raw JSON body file (escape hatch; required for complex rule trees)')
23
+ .option('--output <fmt>', 'Output format', 'pretty');
24
+ }
25
+ async function resolveWriteBody(opts) {
26
+ if (opts.body || opts.bodyFile) {
27
+ const body = await parseBody({ body: opts.body, bodyFile: opts.bodyFile });
28
+ if (!body)
29
+ throw new Error('--body or --body-file was empty');
30
+ return body;
31
+ }
32
+ return buildProfileBody(opts);
33
+ }
14
34
  export function register(dlp) {
15
35
  const group = dlp
16
36
  .command('profiles')
@@ -25,21 +45,12 @@ export function register(dlp) {
25
45
  process.exit(1);
26
46
  }
27
47
  });
28
- group
29
- .command('create')
30
- .description('Create a data profile')
31
- .option('--body <json|->', 'JSON body (or "-" for stdin)')
32
- .option('--body-file <path>', 'Path to JSON body file')
33
- .option('--output <fmt>', 'Output format', 'pretty')
34
- .action(async (opts) => {
48
+ writeFlags(group.command('create').description('Create a data profile')).action(async (opts) => {
35
49
  try {
36
- const body = await parseBody({ body: opts.body, bodyFile: opts.bodyFile });
37
- if (!body)
38
- throw new Error('--body or --body-file is required');
39
- const svc = new SdkDataProfilesService();
50
+ const body = await resolveWriteBody(opts);
40
51
  dlpProfiles.renderCreated(
41
- // biome-ignore lint/suspicious/noExplicitAny: parseBody returns unknown, cast for create()
42
- await svc.create(body), opts.output);
52
+ // biome-ignore lint/suspicious/noExplicitAny: body shape verified by SDK Zod
53
+ await new SdkDataProfilesService().create(body), opts.output);
43
54
  }
44
55
  catch (err) {
45
56
  renderError(err instanceof Error ? err.message : String(err));
@@ -59,19 +70,11 @@ export function register(dlp) {
59
70
  process.exit(1);
60
71
  }
61
72
  });
62
- group
63
- .command('replace <id>')
64
- .description('Full-replace a data profile (PUT)')
65
- .option('--body <json|->', 'JSON body (or "-" for stdin)')
66
- .option('--body-file <path>', 'Path to JSON body file')
67
- .option('--output <fmt>', 'Output format', 'pretty')
68
- .action(async (id, opts) => {
73
+ writeFlags(group.command('replace <id>').description('Full-replace a data profile (PUT)')).action(async (id, opts) => {
69
74
  try {
70
- const body = await parseBody({ body: opts.body, bodyFile: opts.bodyFile });
71
- if (!body)
72
- throw new Error('--body or --body-file is required');
75
+ const body = await resolveWriteBody(opts);
73
76
  dlpProfiles.renderReplaced(
74
- // biome-ignore lint/suspicious/noExplicitAny: parseBody returns unknown, cast for replace()
77
+ // biome-ignore lint/suspicious/noExplicitAny: body shape verified by SDK Zod
75
78
  await new SdkDataProfilesService().replace(id, body), opts.output);
76
79
  }
77
80
  catch (err) {
@@ -85,8 +88,8 @@ export function register(dlp) {
85
88
  '--set/--clear coerce values: numbers/booleans/JSON literals. ' +
86
89
  'To force a string, quote: --set count=\'"5"\'.')
87
90
  .option('--body-file <path>', 'JSON merge-patch body file')
88
- .option('--set <k=v...>', 'Set scalar field (repeatable)', (v, p = []) => [...p, v])
89
- .option('--clear <key...>', 'Clear field via merge-patch null (repeatable)', (v, p = []) => [...p, v])
91
+ .option('--set <k=v...>', 'Set scalar field (repeatable)', repeatable)
92
+ .option('--clear <key...>', 'Clear field via merge-patch null (repeatable)', repeatable)
90
93
  .option('--output <fmt>', 'Output format', 'pretty')
91
94
  .action(async (id, opts) => {
92
95
  try {
@@ -114,9 +117,8 @@ This DLP API has no DELETE for data profiles.
114
117
  To soft-delete, fetch the profile to get its name + profile_type, then patch:
115
118
 
116
119
  airs runtime dlp profiles get ${id} --output json
117
- airs runtime dlp profiles patch ${id} --body-file - <<EOF
118
- { "name": "...", "profile_type": "...", "profile_status": "deleted" }
119
- EOF
120
+ airs runtime dlp profiles patch ${id} --set profile_status='"deleted"' \\
121
+ --set name='"<existing-name>"' --set profile_type='"<existing-type>"'
120
122
  `);
121
123
  process.exit(2);
122
124
  });
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/profiles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAqB,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,SAAS,SAAS,CAAoB,GAAM;IAC1C,OAAO,GAAG;SACP,MAAM,CAAC,YAAY,EAAE,0BAA0B,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAC/E,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAChE,MAAM,CAAC,oBAAoB,EAAE,4BAA4B,EAAE,CAAC,CAAC,EAAE,OAAiB,EAAE,EAAE,EAAE,CAAC;QACtF,GAAG,IAAI;QACP,CAAC;KACF,CAAC;SACD,MAAM,CAAC,gBAAgB,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,MAAM,KAAK,GAAG,GAAG;SACd,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CACV,qHAAqH,CACtH,CAAC;IAEJ,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACvF,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,sBAAsB,EAAE,CAAC;YACzC,WAAW,CAAC,UAAU,CACpB,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EACrE,IAAI,CAAC,MAAsB,CAC5B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;SACzD,MAAM,CAAC,oBAAoB,EAAE,wBAAwB,CAAC;SACtD,MAAM,CAAC,gBAAgB,EAAE,eAAe,EAAE,QAAQ,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3E,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAChE,MAAM,GAAG,GAAG,IAAI,sBAAsB,EAAE,CAAC;YACzC,WAAW,CAAC,aAAa;YACvB,2FAA2F;YAC3F,MAAM,GAAG,CAAC,MAAM,CAAC,IAAW,CAAC,EAC7B,IAAI,CAAC,MAAsB,CAC5B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,gBAAgB,EAAE,eAAe,EAAE,QAAQ,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,WAAW,CAAC,SAAS,CACnB,MAAM,IAAI,sBAAsB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAC1C,IAAI,CAAC,MAAsB,CAC5B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;SACzD,MAAM,CAAC,oBAAoB,EAAE,wBAAwB,CAAC;SACtD,MAAM,CAAC,gBAAgB,EAAE,eAAe,EAAE,QAAQ,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3E,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAChE,WAAW,CAAC,cAAc;YACxB,4FAA4F;YAC5F,MAAM,IAAI,sBAAsB,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAW,CAAC,EAC3D,IAAI,CAAC,MAAsB,CAC5B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CACV,8FAA8F;QAC5F,+DAA+D;QAC/D,gDAAgD,CACnD;SACA,MAAM,CAAC,oBAAoB,EAAE,4BAA4B,CAAC;SAC1D,MAAM,CAAC,gBAAgB,EAAE,+BAA+B,EAAE,CAAC,CAAC,EAAE,IAAc,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7F,MAAM,CACL,kBAAkB,EAClB,+CAA+C,EAC/C,CAAC,CAAC,EAAE,IAAc,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CACnC;SACA,MAAM,CAAC,gBAAgB,EAAE,eAAe,EAAE,QAAQ,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;gBACxB,CAAC,CAAC,MAAM,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9C,CAAC,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1D,WAAW,CAAC,aAAa;YACvB,gHAAgH;YAChH,MAAM,IAAI,sBAAsB,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAW,CAAC,EACzD,IAAI,CAAC,MAAsB,CAC5B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QACb,OAAO,CAAC,KAAK,CAAC;;;;kCAIc,EAAE;oCACA,EAAE;;;CAGrC,CAAC,CAAC;QACG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/cli/commands/dlp/profiles.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"redteam.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/redteam.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DzC,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAaxD;AAED,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,mFAOzB,CAAC;AAEX,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB;AAED,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAg+B7D"}
1
+ {"version":3,"file":"redteam.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/redteam.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEzC,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAaxD;AAED,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,mFAOzB,CAAC;AAEX,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB;AAED,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6+B7D"}
@@ -5,7 +5,7 @@ import { SdkPromptSetService } from '../../airs/promptsets.js';
5
5
  import { SdkRedTeamService } from '../../airs/redteam.js';
6
6
  import { resolveOutputDir } from '../../backup/io.js';
7
7
  import { loadConfig } from '../../config/loader.js';
8
- import { renderAttackList, renderAuthValidation, renderBackupHeader, renderBackupSummary, renderCategories, renderCustomAttackList, renderCustomReport, renderError, renderEulaContent, renderEulaStatus, renderInstanceDetail, renderInstanceResponse, renderPromptDetail, renderPromptList, renderPromptSetDetail, renderPromptSetList, renderPropertyNames, renderPropertyValues, renderRedteamHeader, renderRegistryCredentials, renderRestoreSummary, renderScanList, renderScanProgress, renderScanStatus, renderStaticReport, renderTargetDetail, renderTargetList, renderTargetTemplates, renderVersionInfo, } from '../renderer/index.js';
8
+ import { buildAttackListFootnote, renderAttackList, renderAuthValidation, renderBackupHeader, renderBackupSummary, renderCategories, renderCustomAttackList, renderCustomReport, renderError, renderEulaContent, renderEulaStatus, renderInstanceDetail, renderInstanceResponse, renderPromptDetail, renderPromptList, renderPromptSetDetail, renderPromptSetList, renderPropertyNames, renderPropertyValues, renderRedteamHeader, renderRegistryCredentials, renderRestoreSummary, renderScanList, renderScanProgress, renderScanStatus, renderStaticReport, renderTargetDetail, renderTargetList, renderTargetTemplates, renderVersionInfo, } from '../renderer/index.js';
9
9
  import { backupTargets } from './backup.js';
10
10
  import { restoreTargets } from './restore.js';
11
11
  /** Create an SdkRedTeamService from config. */
@@ -384,14 +384,22 @@ export function registerRedteamCommand(program) {
384
384
  promptSets
385
385
  .command('get <uuid>')
386
386
  .description('Get prompt set details')
387
- .action(async (uuid) => {
387
+ .option('--output <format>', 'Output format: pretty, json, yaml', 'pretty')
388
+ .action(async (uuid, opts) => {
388
389
  try {
389
- renderRedteamHeader();
390
+ const fmt = opts.output;
391
+ if (fmt === 'pretty')
392
+ renderRedteamHeader();
390
393
  const service = await createPromptSetService();
391
394
  const ps = await service.getPromptSet(uuid);
392
- renderPromptSetDetail(ps);
393
395
  const info = await service.getPromptSetVersionInfo(uuid);
394
- renderVersionInfo(info);
396
+ if (fmt === 'pretty') {
397
+ renderPromptSetDetail(ps);
398
+ renderVersionInfo(info);
399
+ }
400
+ else {
401
+ renderPromptSetDetail(ps, fmt, info);
402
+ }
395
403
  }
396
404
  catch (err) {
397
405
  renderError(err instanceof Error ? err.message : String(err));
@@ -623,12 +631,15 @@ export function registerRedteamCommand(program) {
623
631
  properties
624
632
  .command('values <name>')
625
633
  .description('List values for a property')
626
- .action(async (name) => {
634
+ .option('--output <format>', 'Output format: pretty, json, yaml', 'pretty')
635
+ .action(async (name, opts) => {
627
636
  try {
628
- renderRedteamHeader();
637
+ const fmt = opts.output;
638
+ if (fmt === 'pretty')
639
+ renderRedteamHeader();
629
640
  const service = await createPromptSetService();
630
641
  const values = await service.getPropertyValues(name);
631
- renderPropertyValues(values);
642
+ renderPropertyValues(values, fmt);
632
643
  }
633
644
  catch (err) {
634
645
  renderError(err instanceof Error ? err.message : String(err));
@@ -670,24 +681,27 @@ export function registerRedteamCommand(program) {
670
681
  if (job.jobType === 'CUSTOM') {
671
682
  const report = await service.getCustomReport(jobId);
672
683
  renderCustomReport(report);
673
- }
674
- else {
675
- const report = await service.getStaticReport(jobId);
676
- renderStaticReport(report);
677
- }
678
- if (opts.attacks) {
679
- if (job.jobType === 'CUSTOM') {
684
+ if (opts.attacks) {
680
685
  const attacks = await service.listCustomAttacks(jobId, {
681
686
  limit: Number.parseInt(opts.limit, 10),
682
687
  });
683
688
  renderCustomAttackList(attacks);
684
689
  }
685
- else {
686
- const attacks = await service.listAttacks(jobId, {
690
+ }
691
+ else {
692
+ const report = await service.getStaticReport(jobId);
693
+ renderStaticReport(report);
694
+ if (opts.attacks) {
695
+ const { attacks, totalItems } = await service.listAttacks(jobId, {
687
696
  severity: opts.severity,
688
697
  limit: Number.parseInt(opts.limit, 10),
689
698
  });
690
- renderAttackList(attacks);
699
+ const footnote = buildAttackListFootnote({
700
+ severity: opts.severity,
701
+ totalItems,
702
+ severityBreakdown: report.severityBreakdown,
703
+ });
704
+ renderAttackList(attacks, { footnote });
691
705
  }
692
706
  }
693
707
  }
@@ -798,12 +812,15 @@ export function registerRedteamCommand(program) {
798
812
  targets
799
813
  .command('get <uuid>')
800
814
  .description('Get target details')
801
- .action(async (uuid) => {
815
+ .option('--output <format>', 'Output format: pretty, json, yaml', 'pretty')
816
+ .action(async (uuid, opts) => {
802
817
  try {
803
- renderRedteamHeader();
818
+ const fmt = opts.output;
819
+ if (fmt === 'pretty')
820
+ renderRedteamHeader();
804
821
  const service = await createService();
805
822
  const target = await service.getTarget(uuid);
806
- renderTargetDetail(target);
823
+ renderTargetDetail(target, fmt);
807
824
  }
808
825
  catch (err) {
809
826
  renderError(err instanceof Error ? err.message : String(err));