@cdot65/prisma-airs-cli 1.4.2 → 2.2.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 +8 -6
- package/dist/airs/management.d.ts +2 -0
- package/dist/airs/management.d.ts.map +1 -1
- package/dist/airs/management.js +14 -0
- package/dist/airs/management.js.map +1 -1
- package/dist/airs/redteam.d.ts +15 -1
- package/dist/airs/redteam.d.ts.map +1 -1
- package/dist/airs/redteam.js +105 -0
- package/dist/airs/redteam.js.map +1 -1
- package/dist/airs/runtime.js +3 -3
- package/dist/airs/runtime.js.map +1 -1
- package/dist/airs/types.d.ts +80 -0
- package/dist/airs/types.d.ts.map +1 -1
- package/dist/audit/runner.d.ts +1 -1
- package/dist/audit/runner.d.ts.map +1 -1
- package/dist/cli/commands/redteam.d.ts.map +1 -1
- package/dist/cli/commands/redteam.js +268 -1
- 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 +83 -50
- package/dist/cli/commands/runtime.js.map +1 -1
- package/dist/cli/commands/topics-apply.d.ts +16 -0
- package/dist/cli/commands/topics-apply.d.ts.map +1 -0
- package/dist/cli/commands/topics-apply.js +69 -0
- package/dist/cli/commands/topics-apply.js.map +1 -0
- package/dist/cli/commands/topics-create.d.ts +16 -0
- package/dist/cli/commands/topics-create.d.ts.map +1 -0
- package/dist/cli/commands/topics-create.js +71 -0
- package/dist/cli/commands/topics-create.js.map +1 -0
- package/dist/cli/commands/topics-eval.d.ts +7 -0
- package/dist/cli/commands/topics-eval.d.ts.map +1 -0
- package/dist/cli/commands/topics-eval.js +65 -0
- package/dist/cli/commands/topics-eval.js.map +1 -0
- package/dist/cli/commands/topics-revert.d.ts +9 -0
- package/dist/cli/commands/topics-revert.d.ts.map +1 -0
- package/dist/cli/commands/topics-revert.js +52 -0
- package/dist/cli/commands/topics-revert.js.map +1 -0
- package/dist/cli/commands/topics-sample.d.ts +4 -0
- package/dist/cli/commands/topics-sample.d.ts.map +1 -0
- package/dist/cli/commands/topics-sample.js +27 -0
- package/dist/cli/commands/topics-sample.js.map +1 -0
- package/dist/cli/renderer/audit.d.ts +3 -0
- package/dist/cli/renderer/audit.d.ts.map +1 -1
- package/dist/cli/renderer/audit.js +14 -0
- package/dist/cli/renderer/audit.js.map +1 -1
- package/dist/cli/renderer/eval.d.ts +30 -0
- package/dist/cli/renderer/eval.d.ts.map +1 -0
- package/dist/cli/renderer/eval.js +61 -0
- package/dist/cli/renderer/eval.js.map +1 -0
- package/dist/cli/renderer/index.d.ts +1 -1
- package/dist/cli/renderer/index.d.ts.map +1 -1
- package/dist/cli/renderer/index.js +1 -1
- package/dist/cli/renderer/index.js.map +1 -1
- package/dist/cli/renderer/redteam.d.ts +37 -0
- package/dist/cli/renderer/redteam.d.ts.map +1 -1
- package/dist/cli/renderer/redteam.js +64 -0
- package/dist/cli/renderer/redteam.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +0 -6
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +0 -15
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +0 -6
- package/dist/config/schema.js.map +1 -1
- package/dist/core/constraints.d.ts +1 -0
- package/dist/core/constraints.d.ts.map +1 -1
- package/dist/core/constraints.js +7 -0
- package/dist/core/constraints.js.map +1 -1
- package/dist/core/prompt-loader.d.ts +14 -0
- package/dist/core/prompt-loader.d.ts.map +1 -0
- package/dist/core/prompt-loader.js +122 -0
- package/dist/core/prompt-loader.js.map +1 -0
- package/dist/core/types.d.ts +0 -74
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -16
- package/dist/index.js.map +1 -1
- package/dist/llm/service.d.ts +6 -2
- package/dist/llm/service.d.ts.map +1 -1
- package/dist/llm/service.js +0 -5
- package/dist/llm/service.js.map +1 -1
- package/dist/llm/types.d.ts +18 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/{persistence → llm}/types.js.map +1 -1
- package/package.json +2 -2
- package/dist/cli/commands/generate.d.ts +0 -4
- package/dist/cli/commands/generate.d.ts.map +0 -1
- package/dist/cli/commands/generate.js +0 -228
- package/dist/cli/commands/generate.js.map +0 -1
- package/dist/cli/commands/list.d.ts +0 -4
- package/dist/cli/commands/list.d.ts.map +0 -1
- package/dist/cli/commands/list.js +0 -23
- package/dist/cli/commands/list.js.map +0 -1
- package/dist/cli/commands/report.d.ts +0 -4
- package/dist/cli/commands/report.d.ts.map +0 -1
- package/dist/cli/commands/report.js +0 -116
- package/dist/cli/commands/report.js.map +0 -1
- package/dist/cli/commands/resume.d.ts +0 -4
- package/dist/cli/commands/resume.d.ts.map +0 -1
- package/dist/cli/commands/resume.js +0 -135
- package/dist/cli/commands/resume.js.map +0 -1
- package/dist/cli/prompts.d.ts +0 -9
- package/dist/cli/prompts.d.ts.map +0 -1
- package/dist/cli/prompts.js +0 -90
- package/dist/cli/prompts.js.map +0 -1
- package/dist/cli/renderer/generate.d.ts +0 -29
- package/dist/cli/renderer/generate.d.ts.map +0 -1
- package/dist/cli/renderer/generate.js +0 -132
- package/dist/cli/renderer/generate.js.map +0 -1
- package/dist/core/loop.d.ts +0 -48
- package/dist/core/loop.d.ts.map +0 -1
- package/dist/core/loop.js +0 -430
- package/dist/core/loop.js.map +0 -1
- package/dist/memory/diff.d.ts +0 -4
- package/dist/memory/diff.d.ts.map +0 -1
- package/dist/memory/diff.js +0 -24
- package/dist/memory/diff.js.map +0 -1
- package/dist/memory/extractor.d.ts +0 -15
- package/dist/memory/extractor.d.ts.map +0 -1
- package/dist/memory/extractor.js +0 -133
- package/dist/memory/extractor.js.map +0 -1
- package/dist/memory/injector.d.ts +0 -22
- package/dist/memory/injector.d.ts.map +0 -1
- package/dist/memory/injector.js +0 -90
- package/dist/memory/injector.js.map +0 -1
- package/dist/memory/prompts/extract-learnings.d.ts +0 -3
- package/dist/memory/prompts/extract-learnings.d.ts.map +0 -1
- package/dist/memory/prompts/extract-learnings.js +0 -40
- package/dist/memory/prompts/extract-learnings.js.map +0 -1
- package/dist/memory/schemas.d.ts +0 -63
- package/dist/memory/schemas.d.ts.map +0 -1
- package/dist/memory/schemas.js +0 -13
- package/dist/memory/schemas.js.map +0 -1
- package/dist/memory/store.d.ts +0 -28
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js +0 -103
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/types.d.ts +0 -55
- package/dist/memory/types.d.ts.map +0 -1
- package/dist/memory/types.js +0 -6
- package/dist/memory/types.js.map +0 -1
- package/dist/persistence/store.d.ts +0 -21
- package/dist/persistence/store.d.ts.map +0 -1
- package/dist/persistence/store.js +0 -77
- package/dist/persistence/store.js.map +0 -1
- package/dist/persistence/types.d.ts +0 -23
- package/dist/persistence/types.d.ts.map +0 -1
- /package/dist/{persistence → llm}/types.js +0 -0
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
import * as fs from 'node:fs';
|
|
2
|
-
import * as path from 'node:path';
|
|
3
|
-
import { SdkManagementService } from '../../airs/management.js';
|
|
4
|
-
import { SdkPromptSetService } from '../../airs/promptsets.js';
|
|
5
|
-
import { AirsScanService, DebugScanService, RateLimitedScanService } from '../../airs/scanner.js';
|
|
6
|
-
import { loadConfig } from '../../config/loader.js';
|
|
7
|
-
import { runLoop } from '../../core/loop.js';
|
|
8
|
-
import { createLlmProvider } from '../../llm/provider.js';
|
|
9
|
-
import { LangChainLlmService } from '../../llm/service.js';
|
|
10
|
-
import { LearningExtractor } from '../../memory/extractor.js';
|
|
11
|
-
import { MemoryInjector } from '../../memory/injector.js';
|
|
12
|
-
import { MemoryStore } from '../../memory/store.js';
|
|
13
|
-
import { JsonFileStore } from '../../persistence/store.js';
|
|
14
|
-
import { collectUserInput } from '../prompts.js';
|
|
15
|
-
import { renderAnalysis, renderCompanionTopic, renderError, renderHeader, renderIterationStart, renderIterationSummary, renderLoopComplete, renderMemoryExtracted, renderMemoryLoaded, renderMetrics, renderTestProgress, renderTestsAccumulated, renderTestsComposed, renderTopic, } from '../renderer/index.js';
|
|
16
|
-
/** Register the `generate` command — starts a new guardrail generation loop. */
|
|
17
|
-
export function registerGenerateCommand(parent) {
|
|
18
|
-
parent
|
|
19
|
-
.command('generate')
|
|
20
|
-
.description('Start a new guardrail generation loop')
|
|
21
|
-
.option('--provider <provider>', 'LLM provider')
|
|
22
|
-
.option('--model <model>', 'LLM model name')
|
|
23
|
-
.option('--profile <name>', 'AIRS security profile name')
|
|
24
|
-
.option('--topic <description>', 'Topic description')
|
|
25
|
-
.option('--intent <intent>', 'Intent: block or allow')
|
|
26
|
-
.option('--max-iterations <n>', 'Max iterations', '20')
|
|
27
|
-
.option('--target-coverage <n>', 'Target coverage %', '90')
|
|
28
|
-
.option('--max-regressions <n>', 'Stop after N consecutive coverage regressions (0 = disable)', '3')
|
|
29
|
-
.option('--plateau-window <n>', 'Iterations to check for plateau (0 = disable)', '0')
|
|
30
|
-
.option('--plateau-band <pct>', 'Max coverage variance for plateau detection', '0.05')
|
|
31
|
-
.option('--accumulate-tests', 'Carry forward test prompts across iterations', false)
|
|
32
|
-
.option('--max-accumulated-tests <n>', 'Max accumulated test count cap')
|
|
33
|
-
.option('--memory', 'Enable learning memory (default)')
|
|
34
|
-
.option('--no-memory', 'Disable learning memory')
|
|
35
|
-
.option('--debug-scans', 'Dump raw AIRS scan responses to JSONL for debugging', false)
|
|
36
|
-
.option('--create-prompt-set', 'Create custom prompt set from test cases after loop', false)
|
|
37
|
-
.option('--prompt-set-name <name>', 'Override auto-generated prompt set name')
|
|
38
|
-
.option('--rate <n>', 'Max AIRS scan API calls per second (default: unlimited)')
|
|
39
|
-
.option('--save-tests <path>', 'Save best iteration test cases to CSV')
|
|
40
|
-
.action(async (opts) => {
|
|
41
|
-
try {
|
|
42
|
-
renderHeader();
|
|
43
|
-
const config = await loadConfig({
|
|
44
|
-
llmProvider: opts.provider,
|
|
45
|
-
llmModel: opts.model,
|
|
46
|
-
memoryEnabled: opts.memory !== undefined ? String(opts.memory) : undefined,
|
|
47
|
-
});
|
|
48
|
-
// Collect user input (interactive or from CLI flags)
|
|
49
|
-
let userInput;
|
|
50
|
-
if (opts.topic && opts.profile) {
|
|
51
|
-
userInput = {
|
|
52
|
-
topicDescription: opts.topic,
|
|
53
|
-
intent: (opts.intent ?? 'block'),
|
|
54
|
-
profileName: opts.profile,
|
|
55
|
-
maxIterations: Number.parseInt(opts.maxIterations, 10),
|
|
56
|
-
targetCoverage: Number.parseInt(opts.targetCoverage, 10) / 100,
|
|
57
|
-
maxRegressions: Number.parseInt(opts.maxRegressions, 10),
|
|
58
|
-
plateauWindow: Number.parseInt(opts.plateauWindow, 10),
|
|
59
|
-
plateauBand: Number.parseFloat(opts.plateauBand),
|
|
60
|
-
accumulateTests: opts.accumulateTests ?? false,
|
|
61
|
-
maxAccumulatedTests: opts.maxAccumulatedTests
|
|
62
|
-
? Number.parseInt(opts.maxAccumulatedTests, 10)
|
|
63
|
-
: undefined,
|
|
64
|
-
createPromptSet: opts.createPromptSet ?? false,
|
|
65
|
-
promptSetName: opts.promptSetName,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
userInput = await collectUserInput();
|
|
70
|
-
}
|
|
71
|
-
// Initialize services
|
|
72
|
-
const model = await createLlmProvider({
|
|
73
|
-
provider: config.llmProvider,
|
|
74
|
-
model: config.llmModel,
|
|
75
|
-
anthropicApiKey: config.anthropicApiKey,
|
|
76
|
-
googleApiKey: config.googleApiKey,
|
|
77
|
-
googleCloudProject: config.googleCloudProject,
|
|
78
|
-
googleCloudLocation: config.googleCloudLocation,
|
|
79
|
-
awsRegion: config.awsRegion,
|
|
80
|
-
awsAccessKeyId: config.awsAccessKeyId,
|
|
81
|
-
awsSecretAccessKey: config.awsSecretAccessKey,
|
|
82
|
-
});
|
|
83
|
-
// Set up memory system
|
|
84
|
-
const memoryEnabled = config.memoryEnabled;
|
|
85
|
-
const memoryStore = memoryEnabled ? new MemoryStore(config.memoryDir) : undefined;
|
|
86
|
-
const memoryInjector = memoryStore
|
|
87
|
-
? new MemoryInjector(memoryStore, config.maxMemoryChars)
|
|
88
|
-
: undefined;
|
|
89
|
-
const llm = new LangChainLlmService(model, memoryInjector);
|
|
90
|
-
if (!config.airsApiKey)
|
|
91
|
-
throw new Error('PANW_AI_SEC_API_KEY is required');
|
|
92
|
-
let scanner = new AirsScanService(config.airsApiKey);
|
|
93
|
-
if (opts.rate) {
|
|
94
|
-
scanner = new RateLimitedScanService(scanner, Number.parseInt(opts.rate, 10));
|
|
95
|
-
}
|
|
96
|
-
if (opts.debugScans) {
|
|
97
|
-
const debugPath = path.join(config.dataDir, '..', `debug-scans-${Date.now()}.jsonl`);
|
|
98
|
-
scanner = new DebugScanService(scanner, debugPath);
|
|
99
|
-
}
|
|
100
|
-
const management = new SdkManagementService({
|
|
101
|
-
clientId: config.mgmtClientId,
|
|
102
|
-
clientSecret: config.mgmtClientSecret,
|
|
103
|
-
tsgId: config.mgmtTsgId,
|
|
104
|
-
apiEndpoint: config.mgmtEndpoint,
|
|
105
|
-
tokenEndpoint: config.mgmtTokenEndpoint,
|
|
106
|
-
});
|
|
107
|
-
const store = new JsonFileStore(config.dataDir);
|
|
108
|
-
// Load memory before loop
|
|
109
|
-
if (memoryEnabled) {
|
|
110
|
-
const learningCount = await llm.loadMemory(userInput.topicDescription);
|
|
111
|
-
renderMemoryLoaded(learningCount);
|
|
112
|
-
}
|
|
113
|
-
const memoryExtractor = memoryStore ? new LearningExtractor(model, memoryStore) : undefined;
|
|
114
|
-
// Set up prompt set service if requested
|
|
115
|
-
const promptSets = userInput.createPromptSet
|
|
116
|
-
? new SdkPromptSetService({
|
|
117
|
-
clientId: config.mgmtClientId,
|
|
118
|
-
clientSecret: config.mgmtClientSecret,
|
|
119
|
-
tsgId: config.mgmtTsgId,
|
|
120
|
-
tokenEndpoint: config.mgmtTokenEndpoint,
|
|
121
|
-
})
|
|
122
|
-
: undefined;
|
|
123
|
-
// Warn about allow-intent coverage expectations
|
|
124
|
-
if (userInput.intent === 'allow') {
|
|
125
|
-
console.log(' \u26A0 Allow-intent topics typically achieve 40\u201370% coverage due to AIRS semantic matching.');
|
|
126
|
-
console.log(' Consider using --target-coverage 65 for realistic expectations.');
|
|
127
|
-
console.log();
|
|
128
|
-
}
|
|
129
|
-
// Run the loop
|
|
130
|
-
for await (const event of runLoop(userInput, {
|
|
131
|
-
llm,
|
|
132
|
-
management,
|
|
133
|
-
scanner,
|
|
134
|
-
memory: memoryExtractor ? { extractor: memoryExtractor } : undefined,
|
|
135
|
-
promptSets,
|
|
136
|
-
})) {
|
|
137
|
-
switch (event.type) {
|
|
138
|
-
case 'iteration:start':
|
|
139
|
-
renderIterationStart(event.iteration);
|
|
140
|
-
break;
|
|
141
|
-
case 'generate:complete':
|
|
142
|
-
renderTopic(event.topic);
|
|
143
|
-
break;
|
|
144
|
-
case 'companion:generated':
|
|
145
|
-
renderCompanionTopic(event.topic);
|
|
146
|
-
break;
|
|
147
|
-
case 'companion:created':
|
|
148
|
-
console.log(` \u2713 Companion allow topic created (${event.topicId})`);
|
|
149
|
-
break;
|
|
150
|
-
case 'tests:composed':
|
|
151
|
-
renderTestsComposed(event.generated, event.carriedFailures, event.regressionTier, event.total);
|
|
152
|
-
break;
|
|
153
|
-
case 'tests:accumulated':
|
|
154
|
-
renderTestsAccumulated(event.newCount, event.totalCount, event.droppedCount);
|
|
155
|
-
break;
|
|
156
|
-
case 'test:progress':
|
|
157
|
-
renderTestProgress(event.completed, event.total);
|
|
158
|
-
break;
|
|
159
|
-
case 'evaluate:complete':
|
|
160
|
-
renderMetrics(event.metrics);
|
|
161
|
-
break;
|
|
162
|
-
case 'analyze:complete':
|
|
163
|
-
renderAnalysis(event.analysis);
|
|
164
|
-
break;
|
|
165
|
-
case 'iteration:complete':
|
|
166
|
-
renderIterationSummary(event.result);
|
|
167
|
-
break;
|
|
168
|
-
case 'topic:reverted':
|
|
169
|
-
console.log(` ↩ Reverted to best definition (iteration ${event.revertedToIteration})`);
|
|
170
|
-
renderTopic(event.topic);
|
|
171
|
-
break;
|
|
172
|
-
case 'topic:simplified':
|
|
173
|
-
console.log(' ⚡ Topic simplified after consecutive regressions');
|
|
174
|
-
renderTopic(event.topic);
|
|
175
|
-
break;
|
|
176
|
-
case 'topic:duplicate':
|
|
177
|
-
console.log(` ⚠ Topic identical to iteration ${event.duplicateOfIteration} — skipping scan`);
|
|
178
|
-
break;
|
|
179
|
-
case 'loop:plateau':
|
|
180
|
-
console.log(` ⚠ Coverage plateaued at ${(event.band[0] * 100).toFixed(1)}–${(event.band[1] * 100).toFixed(1)}%`);
|
|
181
|
-
console.log(` Platform ceiling likely reached (best: ${(event.bestCoverage * 100).toFixed(1)}%)`);
|
|
182
|
-
break;
|
|
183
|
-
case 'memory:extracted':
|
|
184
|
-
renderMemoryExtracted(event.learningCount);
|
|
185
|
-
break;
|
|
186
|
-
case 'promptset:created':
|
|
187
|
-
console.log(` ✓ Custom prompt set created: ${event.promptSetName} (${event.promptCount} prompts)`);
|
|
188
|
-
break;
|
|
189
|
-
case 'loop:complete':
|
|
190
|
-
await store.save(event.runState);
|
|
191
|
-
renderLoopComplete(event.runState);
|
|
192
|
-
if (opts.saveTests) {
|
|
193
|
-
const bestIdx = event.runState.bestIteration > 0
|
|
194
|
-
? event.runState.bestIteration - 1
|
|
195
|
-
: event.runState.iterations.length - 1;
|
|
196
|
-
const best = event.runState.iterations[bestIdx];
|
|
197
|
-
if (best) {
|
|
198
|
-
const resultMap = new Map(best.testResults.map((r) => [r.testCase.prompt, r]));
|
|
199
|
-
const csvRows = [
|
|
200
|
-
'prompt,expected_triggered,category,source,actual_triggered,correct',
|
|
201
|
-
];
|
|
202
|
-
for (const tc of best.testCases) {
|
|
203
|
-
const tr = resultMap.get(tc.prompt);
|
|
204
|
-
const csvEscape = (s) => `"${s.replace(/"/g, '""')}"`;
|
|
205
|
-
csvRows.push([
|
|
206
|
-
csvEscape(tc.prompt),
|
|
207
|
-
tc.expectedTriggered,
|
|
208
|
-
csvEscape(tc.category),
|
|
209
|
-
tc.source ?? 'generated',
|
|
210
|
-
tr?.actualTriggered ?? '',
|
|
211
|
-
tr?.correct ?? '',
|
|
212
|
-
].join(','));
|
|
213
|
-
}
|
|
214
|
-
fs.writeFileSync(opts.saveTests, csvRows.join('\n'), 'utf-8');
|
|
215
|
-
console.log(` ✓ Test cases saved to ${opts.saveTests} (${best.testCases.length} rows)`);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
break;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
catch (err) {
|
|
223
|
-
renderError(err instanceof Error ? err.message : String(err));
|
|
224
|
-
process.exit(1);
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,SAAS,GAAG,IAAI,CAgB/E"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { loadConfig } from '../../config/loader.js';
|
|
2
|
-
import { JsonFileStore } from '../../persistence/store.js';
|
|
3
|
-
import { renderError, renderHeader, renderRunList } from '../renderer/index.js';
|
|
4
|
-
/** Register the `list` (or `runs`) command — lists all saved runs. */
|
|
5
|
-
export function registerListCommand(parent, commandName = 'list') {
|
|
6
|
-
parent
|
|
7
|
-
.command(commandName)
|
|
8
|
-
.description('List all saved generation runs')
|
|
9
|
-
.action(async () => {
|
|
10
|
-
try {
|
|
11
|
-
renderHeader();
|
|
12
|
-
const config = await loadConfig();
|
|
13
|
-
const store = new JsonFileStore(config.dataDir);
|
|
14
|
-
const runs = await store.list();
|
|
15
|
-
renderRunList(runs);
|
|
16
|
-
}
|
|
17
|
-
catch (err) {
|
|
18
|
-
renderError(err instanceof Error ? err.message : String(err));
|
|
19
|
-
process.exit(1);
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=list.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEhF,sEAAsE;AACtE,MAAM,UAAU,mBAAmB,CAAC,MAAe,EAAE,WAAW,GAAG,MAAM;IACvE,MAAM;SACH,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,YAAY,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YAChC,aAAa,CAAC,IAAI,CAAC,CAAC;QACtB,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;AACP,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAiH3D"}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { writeFile } from 'node:fs/promises';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import { loadConfig } from '../../config/loader.js';
|
|
4
|
-
import { JsonFileStore } from '../../persistence/store.js';
|
|
5
|
-
import { buildReportHtml } from '../../report/html.js';
|
|
6
|
-
import { buildReportJson } from '../../report/json.js';
|
|
7
|
-
import { renderAnalysis, renderError, renderHeader, renderMetrics, renderTestResults, renderTopic, } from '../renderer/index.js';
|
|
8
|
-
/** Register the `report` command — view detailed results for a run. */
|
|
9
|
-
export function registerReportCommand(parent) {
|
|
10
|
-
parent
|
|
11
|
-
.command('report <runId>')
|
|
12
|
-
.description('View detailed report for a run')
|
|
13
|
-
.option('--iteration <n>', 'Show specific iteration')
|
|
14
|
-
.option('--format <format>', 'Output format: terminal, json, html', 'terminal')
|
|
15
|
-
.option('--tests', 'Include per-test-case details')
|
|
16
|
-
.option('--diff <runId>', 'Compare with another run')
|
|
17
|
-
.option('--output <path>', 'Output file path (html format)')
|
|
18
|
-
.action(async (runId, opts) => {
|
|
19
|
-
try {
|
|
20
|
-
const config = await loadConfig();
|
|
21
|
-
const store = new JsonFileStore(config.dataDir);
|
|
22
|
-
const run = await store.load(runId);
|
|
23
|
-
if (!run) {
|
|
24
|
-
renderError(`Run ${runId} not found`);
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
let diffRun = null;
|
|
28
|
-
if (opts.diff) {
|
|
29
|
-
diffRun = await store.load(opts.diff);
|
|
30
|
-
if (!diffRun) {
|
|
31
|
-
renderError(`Diff run ${opts.diff} not found`);
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
const format = opts.format;
|
|
36
|
-
if (format === 'json') {
|
|
37
|
-
const report = buildReportJson(run, {
|
|
38
|
-
includeTests: opts.tests ?? false,
|
|
39
|
-
diffRun,
|
|
40
|
-
});
|
|
41
|
-
console.log(JSON.stringify(report, null, 2));
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
if (format === 'html') {
|
|
45
|
-
const report = buildReportJson(run, {
|
|
46
|
-
includeTests: opts.tests ?? false,
|
|
47
|
-
diffRun,
|
|
48
|
-
});
|
|
49
|
-
const html = buildReportHtml(report);
|
|
50
|
-
const outputPath = opts.output ?? `${runId}-report.html`;
|
|
51
|
-
await writeFile(outputPath, html, 'utf-8');
|
|
52
|
-
console.log(chalk.green(` Report written to ${outputPath}`));
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
// Terminal format (default — unchanged behavior)
|
|
56
|
-
renderHeader();
|
|
57
|
-
console.log(chalk.bold(`\n Run: ${run.id}`));
|
|
58
|
-
console.log(` Status: ${run.status}`);
|
|
59
|
-
console.log(` Created: ${run.createdAt}`);
|
|
60
|
-
console.log(` Topic: ${run.userInput.topicDescription}`);
|
|
61
|
-
console.log(` Intent: ${run.userInput.intent}`);
|
|
62
|
-
console.log(` Best coverage: ${(run.bestCoverage * 100).toFixed(1)}% (iteration ${run.bestIteration})`);
|
|
63
|
-
console.log(` Total iterations: ${run.iterations.length}`);
|
|
64
|
-
if (opts.iteration) {
|
|
65
|
-
const idx = Number.parseInt(opts.iteration, 10) - 1;
|
|
66
|
-
const iter = run.iterations[idx];
|
|
67
|
-
if (!iter) {
|
|
68
|
-
renderError(`Iteration ${opts.iteration} not found`);
|
|
69
|
-
process.exit(1);
|
|
70
|
-
}
|
|
71
|
-
console.log(chalk.bold(`\n Iteration ${iter.iteration}:`));
|
|
72
|
-
renderTopic(iter.topic);
|
|
73
|
-
renderMetrics(iter.metrics);
|
|
74
|
-
renderAnalysis(iter.analysis);
|
|
75
|
-
if (opts.tests)
|
|
76
|
-
renderTestResults(iter.testResults);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
// Show best iteration
|
|
80
|
-
const best = run.iterations[run.bestIteration - 1];
|
|
81
|
-
if (best) {
|
|
82
|
-
console.log(chalk.bold(`\n Best Iteration (${best.iteration}):`));
|
|
83
|
-
renderTopic(best.topic);
|
|
84
|
-
renderMetrics(best.metrics);
|
|
85
|
-
renderAnalysis(best.analysis);
|
|
86
|
-
if (opts.tests)
|
|
87
|
-
renderTestResults(best.testResults);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
if (opts.diff && diffRun) {
|
|
91
|
-
const report = buildReportJson(run, { diffRun });
|
|
92
|
-
if (report.diff) {
|
|
93
|
-
const d = report.diff;
|
|
94
|
-
console.log(chalk.bold('\n Run Comparison:'));
|
|
95
|
-
console.log(` Base: ${d.baseRunId} | Compare: ${d.compareRunId}`);
|
|
96
|
-
const fmtDelta = (label, val) => {
|
|
97
|
-
const sign = val >= 0 ? '+' : '';
|
|
98
|
-
const color = val > 0 ? chalk.green : val < 0 ? chalk.red : chalk.gray;
|
|
99
|
-
console.log(` ${label}: ${color(`${sign}${(val * 100).toFixed(1)}%`)}`);
|
|
100
|
-
};
|
|
101
|
-
fmtDelta('Coverage', d.metricsDelta.coverage);
|
|
102
|
-
fmtDelta('TPR', d.metricsDelta.tpr);
|
|
103
|
-
fmtDelta('TNR', d.metricsDelta.tnr);
|
|
104
|
-
fmtDelta('Accuracy', d.metricsDelta.accuracy);
|
|
105
|
-
fmtDelta('F1', d.metricsDelta.f1);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
console.log();
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
renderError(err instanceof Error ? err.message : String(err));
|
|
112
|
-
process.exit(1);
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=report.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/resume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBzC,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAwI3D"}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import * as path from 'node:path';
|
|
2
|
-
import { SdkManagementService } from '../../airs/management.js';
|
|
3
|
-
import { SdkPromptSetService } from '../../airs/promptsets.js';
|
|
4
|
-
import { AirsScanService, DebugScanService, RateLimitedScanService } from '../../airs/scanner.js';
|
|
5
|
-
import { loadConfig } from '../../config/loader.js';
|
|
6
|
-
import { runLoop } from '../../core/loop.js';
|
|
7
|
-
import { createLlmProvider } from '../../llm/provider.js';
|
|
8
|
-
import { LangChainLlmService } from '../../llm/service.js';
|
|
9
|
-
import { JsonFileStore } from '../../persistence/store.js';
|
|
10
|
-
import { renderAnalysis, renderCompanionTopic, renderError, renderHeader, renderIterationStart, renderIterationSummary, renderLoopComplete, renderMetrics, renderTestProgress, renderTestsAccumulated, renderTestsComposed, renderTopic, } from '../renderer/index.js';
|
|
11
|
-
/** Register the `resume` command — resumes a paused or failed run. */
|
|
12
|
-
export function registerResumeCommand(parent) {
|
|
13
|
-
parent
|
|
14
|
-
.command('resume <runId>')
|
|
15
|
-
.description('Resume a paused or failed run')
|
|
16
|
-
.option('--max-iterations <n>', 'Additional iterations to run', '10')
|
|
17
|
-
.option('--rate <n>', 'Max AIRS scan API calls per second (default: unlimited)')
|
|
18
|
-
.option('--debug-scans', 'Dump raw AIRS scan responses to JSONL for debugging', false)
|
|
19
|
-
.option('--create-prompt-set', 'Create custom prompt set from test cases after loop', false)
|
|
20
|
-
.option('--prompt-set-name <name>', 'Override auto-generated prompt set name')
|
|
21
|
-
.action(async (runId, opts) => {
|
|
22
|
-
try {
|
|
23
|
-
renderHeader();
|
|
24
|
-
const config = await loadConfig();
|
|
25
|
-
const store = new JsonFileStore(config.dataDir);
|
|
26
|
-
const existingRun = await store.load(runId);
|
|
27
|
-
if (!existingRun) {
|
|
28
|
-
renderError(`Run ${runId} not found`);
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
|
-
if (existingRun.status === 'completed') {
|
|
32
|
-
renderError('Run is already completed');
|
|
33
|
-
process.exit(1);
|
|
34
|
-
}
|
|
35
|
-
const additionalIterations = Number.parseInt(opts.maxIterations, 10);
|
|
36
|
-
// Resume with updated max iterations
|
|
37
|
-
const userInput = {
|
|
38
|
-
...existingRun.userInput,
|
|
39
|
-
maxIterations: existingRun.currentIteration + additionalIterations,
|
|
40
|
-
createPromptSet: opts.createPromptSet ?? false,
|
|
41
|
-
promptSetName: opts.promptSetName,
|
|
42
|
-
};
|
|
43
|
-
const model = await createLlmProvider({
|
|
44
|
-
provider: config.llmProvider,
|
|
45
|
-
model: config.llmModel,
|
|
46
|
-
anthropicApiKey: config.anthropicApiKey,
|
|
47
|
-
googleApiKey: config.googleApiKey,
|
|
48
|
-
googleCloudProject: config.googleCloudProject,
|
|
49
|
-
googleCloudLocation: config.googleCloudLocation,
|
|
50
|
-
awsRegion: config.awsRegion,
|
|
51
|
-
awsAccessKeyId: config.awsAccessKeyId,
|
|
52
|
-
awsSecretAccessKey: config.awsSecretAccessKey,
|
|
53
|
-
});
|
|
54
|
-
const llm = new LangChainLlmService(model);
|
|
55
|
-
if (!config.airsApiKey)
|
|
56
|
-
throw new Error('PANW_AI_SEC_API_KEY is required');
|
|
57
|
-
let scanner = new AirsScanService(config.airsApiKey);
|
|
58
|
-
if (opts.rate) {
|
|
59
|
-
scanner = new RateLimitedScanService(scanner, Number.parseInt(opts.rate, 10));
|
|
60
|
-
}
|
|
61
|
-
if (opts.debugScans) {
|
|
62
|
-
const debugPath = path.join(config.dataDir, '..', `debug-scans-${runId}.jsonl`);
|
|
63
|
-
scanner = new DebugScanService(scanner, debugPath);
|
|
64
|
-
}
|
|
65
|
-
const management = new SdkManagementService({
|
|
66
|
-
clientId: config.mgmtClientId,
|
|
67
|
-
clientSecret: config.mgmtClientSecret,
|
|
68
|
-
tsgId: config.mgmtTsgId,
|
|
69
|
-
apiEndpoint: config.mgmtEndpoint,
|
|
70
|
-
tokenEndpoint: config.mgmtTokenEndpoint,
|
|
71
|
-
});
|
|
72
|
-
// Set up prompt set service if requested
|
|
73
|
-
const promptSets = userInput.createPromptSet
|
|
74
|
-
? new SdkPromptSetService({
|
|
75
|
-
clientId: config.mgmtClientId,
|
|
76
|
-
clientSecret: config.mgmtClientSecret,
|
|
77
|
-
tsgId: config.mgmtTsgId,
|
|
78
|
-
tokenEndpoint: config.mgmtTokenEndpoint,
|
|
79
|
-
})
|
|
80
|
-
: undefined;
|
|
81
|
-
console.log(` Resuming run ${runId} from iteration ${existingRun.currentIteration}...`);
|
|
82
|
-
for await (const event of runLoop(userInput, {
|
|
83
|
-
llm,
|
|
84
|
-
management,
|
|
85
|
-
scanner,
|
|
86
|
-
promptSets,
|
|
87
|
-
})) {
|
|
88
|
-
switch (event.type) {
|
|
89
|
-
case 'iteration:start':
|
|
90
|
-
renderIterationStart(event.iteration);
|
|
91
|
-
break;
|
|
92
|
-
case 'generate:complete':
|
|
93
|
-
renderTopic(event.topic);
|
|
94
|
-
break;
|
|
95
|
-
case 'companion:generated':
|
|
96
|
-
renderCompanionTopic(event.topic);
|
|
97
|
-
break;
|
|
98
|
-
case 'companion:created':
|
|
99
|
-
console.log(` \u2713 Companion allow topic created (${event.topicId})`);
|
|
100
|
-
break;
|
|
101
|
-
case 'tests:composed':
|
|
102
|
-
renderTestsComposed(event.generated, event.carriedFailures, event.regressionTier, event.total);
|
|
103
|
-
break;
|
|
104
|
-
case 'tests:accumulated':
|
|
105
|
-
renderTestsAccumulated(event.newCount, event.totalCount, event.droppedCount);
|
|
106
|
-
break;
|
|
107
|
-
case 'test:progress':
|
|
108
|
-
renderTestProgress(event.completed, event.total);
|
|
109
|
-
break;
|
|
110
|
-
case 'evaluate:complete':
|
|
111
|
-
renderMetrics(event.metrics);
|
|
112
|
-
break;
|
|
113
|
-
case 'analyze:complete':
|
|
114
|
-
renderAnalysis(event.analysis);
|
|
115
|
-
break;
|
|
116
|
-
case 'iteration:complete':
|
|
117
|
-
renderIterationSummary(event.result);
|
|
118
|
-
break;
|
|
119
|
-
case 'promptset:created':
|
|
120
|
-
console.log(` ✓ Custom prompt set created: ${event.promptSetName} (${event.promptCount} prompts)`);
|
|
121
|
-
break;
|
|
122
|
-
case 'loop:complete':
|
|
123
|
-
await store.save(event.runState);
|
|
124
|
-
renderLoopComplete(event.runState);
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
catch (err) {
|
|
130
|
-
renderError(err instanceof Error ? err.message : String(err));
|
|
131
|
-
process.exit(1);
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=resume.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/cli/commands/resume.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/prompts.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { LlmProvider } from '../config/schema.js';
|
|
2
|
-
import type { UserInput } from '../core/types.js';
|
|
3
|
-
/** Interactively collect all user inputs for a generation run via Inquirer prompts. */
|
|
4
|
-
export declare function collectUserInput(): Promise<UserInput>;
|
|
5
|
-
/** Prompt the user to select an LLM provider from the supported list. */
|
|
6
|
-
export declare function selectLlmProvider(): Promise<LlmProvider>;
|
|
7
|
-
/** Prompt the user to confirm whether to continue refining after an iteration. */
|
|
8
|
-
export declare function confirmContinue(iteration: number, coverage: number): Promise<boolean>;
|
|
9
|
-
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,uFAAuF;AACvF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,SAAS,CAAC,CA6E3D;AAED,yEAAyE;AACzE,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAY9D;AAED,kFAAkF;AAClF,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK3F"}
|