@cdot65/prisma-airs-cli 1.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.
Files changed (234) hide show
  1. package/README.md +42 -0
  2. package/dist/airs/management.d.ts +58 -0
  3. package/dist/airs/management.d.ts.map +1 -0
  4. package/dist/airs/management.js +287 -0
  5. package/dist/airs/management.js.map +1 -0
  6. package/dist/airs/modelsecurity.d.ts +74 -0
  7. package/dist/airs/modelsecurity.d.ts.map +1 -0
  8. package/dist/airs/modelsecurity.js +337 -0
  9. package/dist/airs/modelsecurity.js.map +1 -0
  10. package/dist/airs/promptsets.d.ts +50 -0
  11. package/dist/airs/promptsets.d.ts.map +1 -0
  12. package/dist/airs/promptsets.js +133 -0
  13. package/dist/airs/promptsets.js.map +1 -0
  14. package/dist/airs/redteam.d.ts +45 -0
  15. package/dist/airs/redteam.d.ts.map +1 -0
  16. package/dist/airs/redteam.js +219 -0
  17. package/dist/airs/redteam.js.map +1 -0
  18. package/dist/airs/runtime.d.ts +27 -0
  19. package/dist/airs/runtime.d.ts.map +1 -0
  20. package/dist/airs/runtime.js +158 -0
  21. package/dist/airs/runtime.js.map +1 -0
  22. package/dist/airs/scanner.d.ts +22 -0
  23. package/dist/airs/scanner.d.ts.map +1 -0
  24. package/dist/airs/scanner.js +62 -0
  25. package/dist/airs/scanner.js.map +1 -0
  26. package/dist/airs/types.d.ts +683 -0
  27. package/dist/airs/types.d.ts.map +1 -0
  28. package/dist/airs/types.js +6 -0
  29. package/dist/airs/types.js.map +1 -0
  30. package/dist/audit/evaluator.d.ts +17 -0
  31. package/dist/audit/evaluator.d.ts.map +1 -0
  32. package/dist/audit/evaluator.js +82 -0
  33. package/dist/audit/evaluator.js.map +1 -0
  34. package/dist/audit/report.d.ts +38 -0
  35. package/dist/audit/report.d.ts.map +1 -0
  36. package/dist/audit/report.js +141 -0
  37. package/dist/audit/report.js.map +1 -0
  38. package/dist/audit/runner.d.ts +18 -0
  39. package/dist/audit/runner.d.ts.map +1 -0
  40. package/dist/audit/runner.js +60 -0
  41. package/dist/audit/runner.js.map +1 -0
  42. package/dist/audit/types.d.ts +53 -0
  43. package/dist/audit/types.d.ts.map +1 -0
  44. package/dist/audit/types.js +5 -0
  45. package/dist/audit/types.js.map +1 -0
  46. package/dist/cli/bulk-scan-state.d.ts +15 -0
  47. package/dist/cli/bulk-scan-state.d.ts.map +1 -0
  48. package/dist/cli/bulk-scan-state.js +20 -0
  49. package/dist/cli/bulk-scan-state.js.map +1 -0
  50. package/dist/cli/commands/audit.d.ts +4 -0
  51. package/dist/cli/commands/audit.d.ts.map +1 -0
  52. package/dist/cli/commands/audit.js +113 -0
  53. package/dist/cli/commands/audit.js.map +1 -0
  54. package/dist/cli/commands/generate.d.ts +4 -0
  55. package/dist/cli/commands/generate.d.ts.map +1 -0
  56. package/dist/cli/commands/generate.js +231 -0
  57. package/dist/cli/commands/generate.js.map +1 -0
  58. package/dist/cli/commands/list.d.ts +4 -0
  59. package/dist/cli/commands/list.d.ts.map +1 -0
  60. package/dist/cli/commands/list.js +23 -0
  61. package/dist/cli/commands/list.js.map +1 -0
  62. package/dist/cli/commands/modelsecurity.d.ts +4 -0
  63. package/dist/cli/commands/modelsecurity.d.ts.map +1 -0
  64. package/dist/cli/commands/modelsecurity.js +499 -0
  65. package/dist/cli/commands/modelsecurity.js.map +1 -0
  66. package/dist/cli/commands/redteam.d.ts +4 -0
  67. package/dist/cli/commands/redteam.d.ts.map +1 -0
  68. package/dist/cli/commands/redteam.js +630 -0
  69. package/dist/cli/commands/redteam.js.map +1 -0
  70. package/dist/cli/commands/report.d.ts +4 -0
  71. package/dist/cli/commands/report.d.ts.map +1 -0
  72. package/dist/cli/commands/report.js +116 -0
  73. package/dist/cli/commands/report.js.map +1 -0
  74. package/dist/cli/commands/resume.d.ts +4 -0
  75. package/dist/cli/commands/resume.d.ts.map +1 -0
  76. package/dist/cli/commands/resume.js +138 -0
  77. package/dist/cli/commands/resume.js.map +1 -0
  78. package/dist/cli/commands/runtime.d.ts +3 -0
  79. package/dist/cli/commands/runtime.d.ts.map +1 -0
  80. package/dist/cli/commands/runtime.js +582 -0
  81. package/dist/cli/commands/runtime.js.map +1 -0
  82. package/dist/cli/index.d.ts +3 -0
  83. package/dist/cli/index.d.ts.map +1 -0
  84. package/dist/cli/index.js +46 -0
  85. package/dist/cli/index.js.map +1 -0
  86. package/dist/cli/parse-input.d.ts +9 -0
  87. package/dist/cli/parse-input.d.ts.map +1 -0
  88. package/dist/cli/parse-input.js +109 -0
  89. package/dist/cli/parse-input.js.map +1 -0
  90. package/dist/cli/prompts.d.ts +9 -0
  91. package/dist/cli/prompts.d.ts.map +1 -0
  92. package/dist/cli/prompts.js +90 -0
  93. package/dist/cli/prompts.js.map +1 -0
  94. package/dist/cli/renderer/audit.d.ts +8 -0
  95. package/dist/cli/renderer/audit.d.ts.map +1 -0
  96. package/dist/cli/renderer/audit.js +44 -0
  97. package/dist/cli/renderer/audit.js.map +1 -0
  98. package/dist/cli/renderer/common.d.ts +3 -0
  99. package/dist/cli/renderer/common.d.ts.map +1 -0
  100. package/dist/cli/renderer/common.js +6 -0
  101. package/dist/cli/renderer/common.js.map +1 -0
  102. package/dist/cli/renderer/generate.d.ts +29 -0
  103. package/dist/cli/renderer/generate.d.ts.map +1 -0
  104. package/dist/cli/renderer/generate.js +132 -0
  105. package/dist/cli/renderer/generate.js.map +1 -0
  106. package/dist/cli/renderer/index.d.ts +7 -0
  107. package/dist/cli/renderer/index.d.ts.map +1 -0
  108. package/dist/cli/renderer/index.js +7 -0
  109. package/dist/cli/renderer/index.js.map +1 -0
  110. package/dist/cli/renderer/modelsecurity.d.ts +34 -0
  111. package/dist/cli/renderer/modelsecurity.d.ts.map +1 -0
  112. package/dist/cli/renderer/modelsecurity.js +285 -0
  113. package/dist/cli/renderer/modelsecurity.js.map +1 -0
  114. package/dist/cli/renderer/redteam.d.ts +152 -0
  115. package/dist/cli/renderer/redteam.d.ts.map +1 -0
  116. package/dist/cli/renderer/redteam.js +294 -0
  117. package/dist/cli/renderer/redteam.js.map +1 -0
  118. package/dist/cli/renderer/runtime.d.ts +87 -0
  119. package/dist/cli/renderer/runtime.d.ts.map +1 -0
  120. package/dist/cli/renderer/runtime.js +230 -0
  121. package/dist/cli/renderer/runtime.js.map +1 -0
  122. package/dist/config/loader.d.ts +3 -0
  123. package/dist/config/loader.d.ts.map +1 -0
  124. package/dist/config/loader.js +65 -0
  125. package/dist/config/loader.js.map +1 -0
  126. package/dist/config/schema.d.ts +78 -0
  127. package/dist/config/schema.d.ts.map +1 -0
  128. package/dist/config/schema.js +44 -0
  129. package/dist/config/schema.js.map +1 -0
  130. package/dist/core/constraints.d.ts +18 -0
  131. package/dist/core/constraints.d.ts.map +1 -0
  132. package/dist/core/constraints.js +75 -0
  133. package/dist/core/constraints.js.map +1 -0
  134. package/dist/core/loop.d.ts +54 -0
  135. package/dist/core/loop.d.ts.map +1 -0
  136. package/dist/core/loop.js +462 -0
  137. package/dist/core/loop.js.map +1 -0
  138. package/dist/core/metrics.d.ts +13 -0
  139. package/dist/core/metrics.d.ts.map +1 -0
  140. package/dist/core/metrics.js +73 -0
  141. package/dist/core/metrics.js.map +1 -0
  142. package/dist/core/types.d.ts +175 -0
  143. package/dist/core/types.d.ts.map +1 -0
  144. package/dist/core/types.js +5 -0
  145. package/dist/core/types.js.map +1 -0
  146. package/dist/index.d.ts +35 -0
  147. package/dist/index.d.ts.map +1 -0
  148. package/dist/index.js +49 -0
  149. package/dist/index.js.map +1 -0
  150. package/dist/llm/prompts/analyze-results.d.ts +3 -0
  151. package/dist/llm/prompts/analyze-results.d.ts.map +1 -0
  152. package/dist/llm/prompts/analyze-results.js +52 -0
  153. package/dist/llm/prompts/analyze-results.js.map +1 -0
  154. package/dist/llm/prompts/generate-companion.d.ts +3 -0
  155. package/dist/llm/prompts/generate-companion.d.ts.map +1 -0
  156. package/dist/llm/prompts/generate-companion.js +42 -0
  157. package/dist/llm/prompts/generate-companion.js.map +1 -0
  158. package/dist/llm/prompts/generate-tests.d.ts +3 -0
  159. package/dist/llm/prompts/generate-tests.d.ts.map +1 -0
  160. package/dist/llm/prompts/generate-tests.js +46 -0
  161. package/dist/llm/prompts/generate-tests.js.map +1 -0
  162. package/dist/llm/prompts/generate-topic.d.ts +4 -0
  163. package/dist/llm/prompts/generate-topic.d.ts.map +1 -0
  164. package/dist/llm/prompts/generate-topic.js +41 -0
  165. package/dist/llm/prompts/generate-topic.js.map +1 -0
  166. package/dist/llm/prompts/improve-topic.d.ts +3 -0
  167. package/dist/llm/prompts/improve-topic.d.ts.map +1 -0
  168. package/dist/llm/prompts/improve-topic.js +77 -0
  169. package/dist/llm/prompts/improve-topic.js.map +1 -0
  170. package/dist/llm/prompts/simplify-topic.d.ts +3 -0
  171. package/dist/llm/prompts/simplify-topic.d.ts.map +1 -0
  172. package/dist/llm/prompts/simplify-topic.js +50 -0
  173. package/dist/llm/prompts/simplify-topic.js.map +1 -0
  174. package/dist/llm/provider.d.ts +21 -0
  175. package/dist/llm/provider.d.ts.map +1 -0
  176. package/dist/llm/provider.js +76 -0
  177. package/dist/llm/provider.js.map +1 -0
  178. package/dist/llm/schemas.d.ts +97 -0
  179. package/dist/llm/schemas.d.ts.map +1 -0
  180. package/dist/llm/schemas.js +24 -0
  181. package/dist/llm/schemas.js.map +1 -0
  182. package/dist/llm/service.d.ts +30 -0
  183. package/dist/llm/service.d.ts.map +1 -0
  184. package/dist/llm/service.js +273 -0
  185. package/dist/llm/service.js.map +1 -0
  186. package/dist/memory/diff.d.ts +4 -0
  187. package/dist/memory/diff.d.ts.map +1 -0
  188. package/dist/memory/diff.js +24 -0
  189. package/dist/memory/diff.js.map +1 -0
  190. package/dist/memory/extractor.d.ts +15 -0
  191. package/dist/memory/extractor.d.ts.map +1 -0
  192. package/dist/memory/extractor.js +133 -0
  193. package/dist/memory/extractor.js.map +1 -0
  194. package/dist/memory/injector.d.ts +22 -0
  195. package/dist/memory/injector.d.ts.map +1 -0
  196. package/dist/memory/injector.js +90 -0
  197. package/dist/memory/injector.js.map +1 -0
  198. package/dist/memory/prompts/extract-learnings.d.ts +3 -0
  199. package/dist/memory/prompts/extract-learnings.d.ts.map +1 -0
  200. package/dist/memory/prompts/extract-learnings.js +40 -0
  201. package/dist/memory/prompts/extract-learnings.js.map +1 -0
  202. package/dist/memory/schemas.d.ts +63 -0
  203. package/dist/memory/schemas.d.ts.map +1 -0
  204. package/dist/memory/schemas.js +13 -0
  205. package/dist/memory/schemas.js.map +1 -0
  206. package/dist/memory/store.d.ts +28 -0
  207. package/dist/memory/store.d.ts.map +1 -0
  208. package/dist/memory/store.js +103 -0
  209. package/dist/memory/store.js.map +1 -0
  210. package/dist/memory/types.d.ts +55 -0
  211. package/dist/memory/types.d.ts.map +1 -0
  212. package/dist/memory/types.js +6 -0
  213. package/dist/memory/types.js.map +1 -0
  214. package/dist/persistence/store.d.ts +21 -0
  215. package/dist/persistence/store.d.ts.map +1 -0
  216. package/dist/persistence/store.js +77 -0
  217. package/dist/persistence/store.js.map +1 -0
  218. package/dist/persistence/types.d.ts +23 -0
  219. package/dist/persistence/types.d.ts.map +1 -0
  220. package/dist/persistence/types.js +2 -0
  221. package/dist/persistence/types.js.map +1 -0
  222. package/dist/report/html.d.ts +6 -0
  223. package/dist/report/html.d.ts.map +1 -0
  224. package/dist/report/html.js +200 -0
  225. package/dist/report/html.js.map +1 -0
  226. package/dist/report/json.d.ts +11 -0
  227. package/dist/report/json.d.ts.map +1 -0
  228. package/dist/report/json.js +74 -0
  229. package/dist/report/json.js.map +1 -0
  230. package/dist/report/types.d.ts +58 -0
  231. package/dist/report/types.d.ts.map +1 -0
  232. package/dist/report/types.js +5 -0
  233. package/dist/report/types.js.map +1 -0
  234. package/package.json +67 -0
@@ -0,0 +1,582 @@
1
+ import * as fs from 'node:fs';
2
+ import { readFile, writeFile } from 'node:fs/promises';
3
+ import chalk from 'chalk';
4
+ import { SdkManagementService } from '../../airs/management.js';
5
+ import { SdkRuntimeService } from '../../airs/runtime.js';
6
+ import { loadConfig } from '../../config/loader.js';
7
+ import { loadBulkScanState, saveBulkScanState } from '../bulk-scan-state.js';
8
+ import { parseInputFile } from '../parse-input.js';
9
+ import { renderApiKeyDetail, renderApiKeyList, renderCustomerAppDetail, renderCustomerAppList, renderDeploymentProfileList, renderDlpProfileList, renderError, renderProfileDetail, renderProfileList, renderRuntimeConfigHeader, renderScanLogList, renderTopicDetail, renderTopicList, } from '../renderer/index.js';
10
+ import { registerAuditCommand } from './audit.js';
11
+ import { registerGenerateCommand } from './generate.js';
12
+ import { registerListCommand } from './list.js';
13
+ import { registerReportCommand } from './report.js';
14
+ import { registerResumeCommand } from './resume.js';
15
+ function renderScanResult(result) {
16
+ const actionColor = result.action === 'block' ? chalk.red : chalk.green;
17
+ console.log(chalk.bold('\n Scan Result'));
18
+ console.log(chalk.dim(' ─────────────────────────'));
19
+ console.log(` Action: ${actionColor(result.action.toUpperCase())}`);
20
+ console.log(` Category: ${result.category}`);
21
+ console.log(` Triggered: ${result.triggered ? chalk.red('yes') : chalk.green('no')}`);
22
+ console.log(` Scan ID: ${chalk.dim(result.scanId)}`);
23
+ console.log(` Report ID: ${chalk.dim(result.reportId)}`);
24
+ const flags = Object.entries(result.detections).filter(([, v]) => v);
25
+ if (flags.length > 0) {
26
+ console.log(chalk.bold('\n Detections:'));
27
+ for (const [key] of flags) {
28
+ console.log(` ${chalk.yellow('●')} ${key}`);
29
+ }
30
+ }
31
+ console.log();
32
+ }
33
+ export function registerRuntimeCommand(program) {
34
+ const runtime = program
35
+ .command('runtime')
36
+ .description('Runtime prompt scanning against AIRS profiles');
37
+ runtime
38
+ .command('scan <prompt>')
39
+ .description('Scan a single prompt against an AIRS security profile')
40
+ .requiredOption('--profile <name>', 'Security profile name')
41
+ .option('--response <text>', 'Response text to scan alongside the prompt')
42
+ .action(async (prompt, opts) => {
43
+ try {
44
+ const config = await loadConfig({});
45
+ if (!config.airsApiKey) {
46
+ renderError('PANW_AI_SEC_API_KEY is required');
47
+ process.exit(1);
48
+ }
49
+ const service = new SdkRuntimeService(config.airsApiKey);
50
+ console.log(chalk.bold.cyan('\n Prisma AIRS Runtime Scan'));
51
+ console.log(chalk.dim(` Profile: ${opts.profile}`));
52
+ console.log(chalk.dim(` Prompt: "${prompt.slice(0, 80)}${prompt.length > 80 ? '...' : ''}"`));
53
+ const result = await service.scanPrompt(opts.profile, prompt, opts.response);
54
+ renderScanResult(result);
55
+ }
56
+ catch (err) {
57
+ renderError(err instanceof Error ? err.message : String(err));
58
+ process.exit(1);
59
+ }
60
+ });
61
+ runtime
62
+ .command('bulk-scan')
63
+ .description('Scan multiple prompts via the async AIRS API')
64
+ .requiredOption('--profile <name>', 'Security profile name')
65
+ .requiredOption('--input <file>', 'Input file — .csv (extracts prompt column) or .txt (one per line)')
66
+ .option('--output <file>', 'Output CSV file path')
67
+ .option('--session-id <id>', 'Session ID for grouping scans in AIRS dashboard')
68
+ .action(async (opts) => {
69
+ try {
70
+ const config = await loadConfig({});
71
+ if (!config.airsApiKey) {
72
+ renderError('PANW_AI_SEC_API_KEY is required');
73
+ process.exit(1);
74
+ }
75
+ const raw = await readFile(opts.input, 'utf-8');
76
+ const prompts = parseInputFile(raw, opts.input);
77
+ if (prompts.length === 0) {
78
+ renderError('No prompts found in input file');
79
+ process.exit(1);
80
+ }
81
+ const sessionId = opts.sessionId ?? `prisma-airs-cli-bulk-${Date.now().toString(36)}`;
82
+ const service = new SdkRuntimeService(config.airsApiKey);
83
+ console.log(chalk.bold.cyan('\n Prisma AIRS Bulk Scan'));
84
+ console.log(chalk.dim(` Profile: ${opts.profile}`));
85
+ console.log(chalk.dim(` Session: ${sessionId}`));
86
+ console.log(chalk.dim(` Prompts: ${prompts.length}`));
87
+ console.log(chalk.dim(` Batches: ${Math.ceil(prompts.length / 5)}\n`));
88
+ console.log(chalk.dim(' Submitting async scans...'));
89
+ const scanIds = await service.submitBulkScan(opts.profile, prompts, sessionId);
90
+ const stateDir = config.dataDir.replace(/\/runs$/, '/bulk-scans');
91
+ const statePath = await saveBulkScanState({ scanIds, profile: opts.profile, promptCount: prompts.length, sessionId }, stateDir);
92
+ console.log(chalk.dim(` Scan IDs saved: ${statePath}`));
93
+ console.log(chalk.dim(` Submitted ${scanIds.length} batch(es), polling for results...`));
94
+ const results = await service.pollResults(scanIds, undefined, {
95
+ onRetry: (attempt, delayMs) => {
96
+ console.log(chalk.yellow(` ⚠ Rate limited — retry ${attempt} in ${(delayMs / 1000).toFixed(0)}s...`));
97
+ },
98
+ });
99
+ // Attach prompts to results
100
+ for (let i = 0; i < results.length && i < prompts.length; i++) {
101
+ results[i].prompt = prompts[i];
102
+ }
103
+ const outputPath = opts.output ?? `${opts.profile.replace(/\s+/g, '-')}-bulk-scan.csv`;
104
+ const csv = SdkRuntimeService.formatResultsCsv(results);
105
+ await writeFile(outputPath, csv, 'utf-8');
106
+ const blocked = results.filter((r) => r.action === 'block').length;
107
+ const allowed = results.filter((r) => r.action === 'allow').length;
108
+ console.log(chalk.bold('\n Bulk Scan Complete'));
109
+ console.log(chalk.dim(' ─────────────────────────'));
110
+ console.log(` Total: ${results.length}`);
111
+ console.log(` Blocked: ${chalk.red(String(blocked))}`);
112
+ console.log(` Allowed: ${chalk.green(String(allowed))}`);
113
+ console.log(` Output: ${chalk.cyan(outputPath)}\n`);
114
+ }
115
+ catch (err) {
116
+ renderError(err instanceof Error ? err.message : String(err));
117
+ process.exit(1);
118
+ }
119
+ });
120
+ runtime
121
+ .command('resume-poll <stateFile>')
122
+ .description('Resume polling for a previously submitted bulk scan')
123
+ .option('--output <file>', 'Output CSV file path')
124
+ .action(async (stateFile, opts) => {
125
+ try {
126
+ const config = await loadConfig({});
127
+ if (!config.airsApiKey) {
128
+ renderError('PANW_AI_SEC_API_KEY is required');
129
+ process.exit(1);
130
+ }
131
+ const state = await loadBulkScanState(stateFile);
132
+ const service = new SdkRuntimeService(config.airsApiKey);
133
+ console.log(chalk.bold.cyan('\n Prisma AIRS Resume Poll'));
134
+ console.log(chalk.dim(` Profile: ${state.profile}`));
135
+ console.log(chalk.dim(` Scan IDs: ${state.scanIds.length}`));
136
+ console.log(chalk.dim(` Prompts: ${state.promptCount}\n`));
137
+ console.log(chalk.dim(' Polling for results...'));
138
+ const results = await service.pollResults(state.scanIds, undefined, {
139
+ onRetry: (attempt, delayMs) => {
140
+ console.log(chalk.yellow(` ⚠ Rate limited — retry ${attempt} in ${(delayMs / 1000).toFixed(0)}s...`));
141
+ },
142
+ });
143
+ const outputPath = opts.output ?? `${state.profile.replace(/\s+/g, '-')}-bulk-scan.csv`;
144
+ const csv = SdkRuntimeService.formatResultsCsv(results);
145
+ await writeFile(outputPath, csv, 'utf-8');
146
+ const blocked = results.filter((r) => r.action === 'block').length;
147
+ const allowed = results.filter((r) => r.action === 'allow').length;
148
+ console.log(chalk.bold('\n Resume Poll Complete'));
149
+ console.log(chalk.dim(' ─────────────────────────'));
150
+ console.log(` Total: ${results.length}`);
151
+ console.log(` Blocked: ${chalk.red(String(blocked))}`);
152
+ console.log(` Allowed: ${chalk.green(String(allowed))}`);
153
+ console.log(` Output: ${chalk.cyan(outputPath)}\n`);
154
+ }
155
+ catch (err) {
156
+ renderError(err instanceof Error ? err.message : String(err));
157
+ process.exit(1);
158
+ }
159
+ });
160
+ // -----------------------------------------------------------------------
161
+ // runtime profiles — security profile CRUD subcommands
162
+ // -----------------------------------------------------------------------
163
+ const profiles = runtime.command('profiles').description('Manage AIRS security profiles');
164
+ /** Create a management service from config. */
165
+ async function createMgmtService() {
166
+ const config = await loadConfig();
167
+ return new SdkManagementService({
168
+ clientId: config.mgmtClientId,
169
+ clientSecret: config.mgmtClientSecret,
170
+ tsgId: config.mgmtTsgId,
171
+ tokenEndpoint: config.mgmtTokenEndpoint,
172
+ });
173
+ }
174
+ profiles
175
+ .command('list')
176
+ .description('List security profiles')
177
+ .option('--limit <n>', 'Max results', '100')
178
+ .option('--offset <n>', 'Starting offset', '0')
179
+ .action(async (opts) => {
180
+ try {
181
+ renderRuntimeConfigHeader();
182
+ const service = await createMgmtService();
183
+ const result = await service.listProfiles({
184
+ limit: Number.parseInt(opts.limit, 10),
185
+ offset: Number.parseInt(opts.offset, 10),
186
+ });
187
+ renderProfileList(result.profiles);
188
+ if (result.nextOffset != null) {
189
+ console.log(chalk.dim(` Next offset: ${result.nextOffset}\n`));
190
+ }
191
+ }
192
+ catch (err) {
193
+ renderError(err instanceof Error ? err.message : String(err));
194
+ process.exit(1);
195
+ }
196
+ });
197
+ profiles
198
+ .command('create')
199
+ .description('Create a new security profile')
200
+ .requiredOption('--config <path>', 'JSON file with profile configuration')
201
+ .action(async (opts) => {
202
+ try {
203
+ renderRuntimeConfigHeader();
204
+ const service = await createMgmtService();
205
+ const config = JSON.parse(fs.readFileSync(opts.config, 'utf-8'));
206
+ const profile = await service.createProfile(config);
207
+ console.log(` Profile created: ${profile.profileId}\n`);
208
+ renderProfileDetail(profile);
209
+ }
210
+ catch (err) {
211
+ renderError(err instanceof Error ? err.message : String(err));
212
+ process.exit(1);
213
+ }
214
+ });
215
+ profiles
216
+ .command('update <profileId>')
217
+ .description('Update a security profile')
218
+ .requiredOption('--config <path>', 'JSON file with profile updates')
219
+ .action(async (profileId, opts) => {
220
+ try {
221
+ renderRuntimeConfigHeader();
222
+ const service = await createMgmtService();
223
+ const config = JSON.parse(fs.readFileSync(opts.config, 'utf-8'));
224
+ const profile = await service.updateProfile(profileId, config);
225
+ console.log(` Profile updated: ${profile.profileId}\n`);
226
+ renderProfileDetail(profile);
227
+ }
228
+ catch (err) {
229
+ renderError(err instanceof Error ? err.message : String(err));
230
+ process.exit(1);
231
+ }
232
+ });
233
+ profiles
234
+ .command('delete <profileId>')
235
+ .description('Delete a security profile')
236
+ .option('--force', 'Force delete (removes from referencing policies)')
237
+ .option('--updated-by <email>', 'Email of user performing force deletion')
238
+ .action(async (profileId, opts) => {
239
+ try {
240
+ renderRuntimeConfigHeader();
241
+ const service = await createMgmtService();
242
+ if (opts.force) {
243
+ if (!opts.updatedBy) {
244
+ renderError('--updated-by <email> is required with --force');
245
+ process.exit(1);
246
+ }
247
+ const result = await service.forceDeleteProfile(profileId, opts.updatedBy);
248
+ console.log(` ${result.message}\n`);
249
+ }
250
+ else {
251
+ const result = await service.deleteProfile(profileId);
252
+ console.log(` ${result.message}\n`);
253
+ }
254
+ }
255
+ catch (err) {
256
+ renderError(err instanceof Error ? err.message : String(err));
257
+ process.exit(1);
258
+ }
259
+ });
260
+ // Register audit under profiles
261
+ registerAuditCommand(profiles);
262
+ // -----------------------------------------------------------------------
263
+ // runtime topics — custom topic CRUD + guardrail generation subcommands
264
+ // -----------------------------------------------------------------------
265
+ const topics = runtime
266
+ .command('topics')
267
+ .description('Manage AIRS custom topics and guardrail generation');
268
+ topics
269
+ .command('list')
270
+ .description('List custom topics')
271
+ .option('--limit <n>', 'Max results', '100')
272
+ .option('--offset <n>', 'Starting offset', '0')
273
+ .action(async (opts) => {
274
+ try {
275
+ renderRuntimeConfigHeader();
276
+ const service = await createMgmtService();
277
+ const allTopics = await service.listTopics();
278
+ // Client-side pagination since SDK returns all
279
+ const offset = Number.parseInt(opts.offset, 10);
280
+ const limit = Number.parseInt(opts.limit, 10);
281
+ const page = allTopics.slice(offset, offset + limit);
282
+ renderTopicList(page);
283
+ if (offset + limit < allTopics.length) {
284
+ console.log(chalk.dim(` Showing ${page.length} of ${allTopics.length} topics\n`));
285
+ }
286
+ }
287
+ catch (err) {
288
+ renderError(err instanceof Error ? err.message : String(err));
289
+ process.exit(1);
290
+ }
291
+ });
292
+ topics
293
+ .command('create')
294
+ .description('Create a new custom topic')
295
+ .requiredOption('--config <path>', 'JSON file with topic configuration')
296
+ .action(async (opts) => {
297
+ try {
298
+ renderRuntimeConfigHeader();
299
+ const service = await createMgmtService();
300
+ const config = JSON.parse(fs.readFileSync(opts.config, 'utf-8'));
301
+ const topic = await service.createTopic(config);
302
+ console.log(` Topic created: ${topic.topic_id}\n`);
303
+ renderTopicDetail(topic);
304
+ }
305
+ catch (err) {
306
+ renderError(err instanceof Error ? err.message : String(err));
307
+ process.exit(1);
308
+ }
309
+ });
310
+ topics
311
+ .command('update <topicId>')
312
+ .description('Update a custom topic')
313
+ .requiredOption('--config <path>', 'JSON file with topic updates')
314
+ .action(async (topicId, opts) => {
315
+ try {
316
+ renderRuntimeConfigHeader();
317
+ const service = await createMgmtService();
318
+ const config = JSON.parse(fs.readFileSync(opts.config, 'utf-8'));
319
+ const topic = await service.updateTopic(topicId, config);
320
+ console.log(` Topic updated: ${topic.topic_id}\n`);
321
+ renderTopicDetail(topic);
322
+ }
323
+ catch (err) {
324
+ renderError(err instanceof Error ? err.message : String(err));
325
+ process.exit(1);
326
+ }
327
+ });
328
+ topics
329
+ .command('delete <topicId>')
330
+ .description('Delete a custom topic')
331
+ .option('--force', 'Force delete (removes from all referencing profiles)')
332
+ .option('--updated-by <email>', 'Email of user performing force deletion')
333
+ .action(async (topicId, opts) => {
334
+ try {
335
+ renderRuntimeConfigHeader();
336
+ const service = await createMgmtService();
337
+ if (opts.force) {
338
+ const result = await service.forceDeleteTopic(topicId, opts.updatedBy);
339
+ console.log(` ${result.message}\n`);
340
+ }
341
+ else {
342
+ await service.deleteTopic(topicId);
343
+ console.log(` Topic ${topicId} deleted.\n`);
344
+ }
345
+ }
346
+ catch (err) {
347
+ renderError(err instanceof Error ? err.message : String(err));
348
+ process.exit(1);
349
+ }
350
+ });
351
+ // Register guardrail generation commands under topics
352
+ registerGenerateCommand(topics);
353
+ registerResumeCommand(topics);
354
+ registerReportCommand(topics);
355
+ registerListCommand(topics, 'runs');
356
+ // -----------------------------------------------------------------------
357
+ // runtime api-keys — API key management subcommands
358
+ // -----------------------------------------------------------------------
359
+ const apiKeys = runtime.command('api-keys').description('Manage AIRS API keys');
360
+ apiKeys
361
+ .command('list')
362
+ .description('List API keys')
363
+ .option('--limit <n>', 'Max results', '100')
364
+ .action(async (opts) => {
365
+ try {
366
+ renderRuntimeConfigHeader();
367
+ const service = await createMgmtService();
368
+ const result = await service.listApiKeys({
369
+ limit: Number.parseInt(opts.limit, 10),
370
+ });
371
+ renderApiKeyList(result.apiKeys);
372
+ }
373
+ catch (err) {
374
+ renderError(err instanceof Error ? err.message : String(err));
375
+ process.exit(1);
376
+ }
377
+ });
378
+ apiKeys
379
+ .command('create')
380
+ .description('Create a new API key')
381
+ .requiredOption('--config <path>', 'JSON file with API key configuration')
382
+ .action(async (opts) => {
383
+ try {
384
+ renderRuntimeConfigHeader();
385
+ const service = await createMgmtService();
386
+ const config = JSON.parse(fs.readFileSync(opts.config, 'utf-8'));
387
+ const key = await service.createApiKey(config);
388
+ console.log(` API key created: ${key.id}\n`);
389
+ renderApiKeyDetail(key);
390
+ }
391
+ catch (err) {
392
+ renderError(err instanceof Error ? err.message : String(err));
393
+ process.exit(1);
394
+ }
395
+ });
396
+ apiKeys
397
+ .command('regenerate <apiKeyId>')
398
+ .description('Regenerate an API key')
399
+ .requiredOption('--interval <n>', 'Rotation time interval')
400
+ .requiredOption('--unit <unit>', 'Rotation time unit (hours, days, months)')
401
+ .option('--updated-by <email>', 'Email of user performing regeneration')
402
+ .action(async (apiKeyId, opts) => {
403
+ try {
404
+ renderRuntimeConfigHeader();
405
+ const service = await createMgmtService();
406
+ const request = {
407
+ rotation_time_interval: Number.parseInt(opts.interval, 10),
408
+ rotation_time_unit: opts.unit,
409
+ };
410
+ if (opts.updatedBy)
411
+ request.updated_by = opts.updatedBy;
412
+ const key = await service.regenerateApiKey(apiKeyId, request);
413
+ console.log(` API key regenerated: ${key.id}\n`);
414
+ renderApiKeyDetail(key);
415
+ }
416
+ catch (err) {
417
+ renderError(err instanceof Error ? err.message : String(err));
418
+ process.exit(1);
419
+ }
420
+ });
421
+ apiKeys
422
+ .command('delete <apiKeyName>')
423
+ .description('Delete an API key')
424
+ .requiredOption('--updated-by <email>', 'Email of user performing deletion')
425
+ .action(async (apiKeyName, opts) => {
426
+ try {
427
+ renderRuntimeConfigHeader();
428
+ const service = await createMgmtService();
429
+ const result = await service.deleteApiKey(apiKeyName, opts.updatedBy);
430
+ console.log(` ${result.message}\n`);
431
+ }
432
+ catch (err) {
433
+ renderError(err instanceof Error ? err.message : String(err));
434
+ process.exit(1);
435
+ }
436
+ });
437
+ // -----------------------------------------------------------------------
438
+ // runtime customer-apps — customer app management subcommands
439
+ // -----------------------------------------------------------------------
440
+ const customerApps = runtime.command('customer-apps').description('Manage AIRS customer apps');
441
+ customerApps
442
+ .command('list')
443
+ .description('List customer apps')
444
+ .option('--limit <n>', 'Max results', '100')
445
+ .action(async (opts) => {
446
+ try {
447
+ renderRuntimeConfigHeader();
448
+ const service = await createMgmtService();
449
+ const result = await service.listCustomerApps({
450
+ limit: Number.parseInt(opts.limit, 10),
451
+ });
452
+ renderCustomerAppList(result.apps);
453
+ }
454
+ catch (err) {
455
+ renderError(err instanceof Error ? err.message : String(err));
456
+ process.exit(1);
457
+ }
458
+ });
459
+ customerApps
460
+ .command('get <appName>')
461
+ .description('Get customer app details')
462
+ .action(async (appName) => {
463
+ try {
464
+ renderRuntimeConfigHeader();
465
+ const service = await createMgmtService();
466
+ const app = await service.getCustomerApp(appName);
467
+ renderCustomerAppDetail(app);
468
+ }
469
+ catch (err) {
470
+ renderError(err instanceof Error ? err.message : String(err));
471
+ process.exit(1);
472
+ }
473
+ });
474
+ customerApps
475
+ .command('update <appId>')
476
+ .description('Update a customer app')
477
+ .requiredOption('--config <path>', 'JSON file with app updates')
478
+ .action(async (appId, opts) => {
479
+ try {
480
+ renderRuntimeConfigHeader();
481
+ const service = await createMgmtService();
482
+ const config = JSON.parse(fs.readFileSync(opts.config, 'utf-8'));
483
+ const app = await service.updateCustomerApp(appId, config);
484
+ console.log(` Customer app updated: ${app.name}\n`);
485
+ renderCustomerAppDetail(app);
486
+ }
487
+ catch (err) {
488
+ renderError(err instanceof Error ? err.message : String(err));
489
+ process.exit(1);
490
+ }
491
+ });
492
+ customerApps
493
+ .command('delete <appName>')
494
+ .description('Delete a customer app')
495
+ .requiredOption('--updated-by <email>', 'Email of user performing deletion')
496
+ .action(async (appName, opts) => {
497
+ try {
498
+ renderRuntimeConfigHeader();
499
+ const service = await createMgmtService();
500
+ const app = await service.deleteCustomerApp(appName, opts.updatedBy);
501
+ console.log(` Customer app "${app.name}" deleted.\n`);
502
+ }
503
+ catch (err) {
504
+ renderError(err instanceof Error ? err.message : String(err));
505
+ process.exit(1);
506
+ }
507
+ });
508
+ // -----------------------------------------------------------------------
509
+ // runtime deployment-profiles — read-only listing
510
+ // -----------------------------------------------------------------------
511
+ const deploymentProfiles = runtime
512
+ .command('deployment-profiles')
513
+ .description('List AIRS deployment profiles');
514
+ deploymentProfiles
515
+ .command('list')
516
+ .description('List deployment profiles')
517
+ .option('--unactivated', 'Include unactivated profiles')
518
+ .action(async (opts) => {
519
+ try {
520
+ renderRuntimeConfigHeader();
521
+ const service = await createMgmtService();
522
+ const profiles = await service.listDeploymentProfiles({
523
+ unactivated: opts.unactivated,
524
+ });
525
+ renderDeploymentProfileList(profiles);
526
+ }
527
+ catch (err) {
528
+ renderError(err instanceof Error ? err.message : String(err));
529
+ process.exit(1);
530
+ }
531
+ });
532
+ // -----------------------------------------------------------------------
533
+ // runtime dlp-profiles — read-only listing
534
+ // -----------------------------------------------------------------------
535
+ const dlpProfiles = runtime.command('dlp-profiles').description('List AIRS DLP profiles');
536
+ dlpProfiles
537
+ .command('list')
538
+ .description('List DLP profiles')
539
+ .action(async () => {
540
+ try {
541
+ renderRuntimeConfigHeader();
542
+ const service = await createMgmtService();
543
+ const profiles = await service.listDlpProfiles();
544
+ renderDlpProfileList(profiles);
545
+ }
546
+ catch (err) {
547
+ renderError(err instanceof Error ? err.message : String(err));
548
+ process.exit(1);
549
+ }
550
+ });
551
+ // -----------------------------------------------------------------------
552
+ // runtime scan-logs — scan log query
553
+ // -----------------------------------------------------------------------
554
+ const scanLogs = runtime.command('scan-logs').description('Query AIRS scan logs');
555
+ scanLogs
556
+ .command('query')
557
+ .description('Query scan logs')
558
+ .requiredOption('--interval <n>', 'Time interval')
559
+ .requiredOption('--unit <unit>', 'Time unit (hours)')
560
+ .option('--filter <filter>', 'Filter: all, benign, threat', 'all')
561
+ .option('--page <n>', 'Page number', '1')
562
+ .option('--page-size <n>', 'Page size', '50')
563
+ .action(async (opts) => {
564
+ try {
565
+ renderRuntimeConfigHeader();
566
+ const service = await createMgmtService();
567
+ const result = await service.queryScanLogs({
568
+ timeInterval: Number.parseInt(opts.interval, 10),
569
+ timeUnit: opts.unit,
570
+ pageNumber: Number.parseInt(opts.page, 10),
571
+ pageSize: Number.parseInt(opts.pageSize, 10),
572
+ filter: opts.filter,
573
+ });
574
+ renderScanLogList(result.results, result.pageToken);
575
+ }
576
+ catch (err) {
577
+ renderError(err instanceof Error ? err.message : String(err));
578
+ process.exit(1);
579
+ }
580
+ });
581
+ }
582
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/cli/commands/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import 'dotenv/config';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAKA,OAAO,eAAe,CAAC"}