@cdot65/daystrom 1.0.8 → 1.1.2
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 +1 -1
- package/dist/airs/management.d.ts.map +1 -1
- package/dist/airs/management.js +6 -8
- package/dist/airs/management.js.map +1 -1
- package/dist/airs/promptsets.d.ts +24 -0
- package/dist/airs/promptsets.d.ts.map +1 -0
- package/dist/airs/promptsets.js +35 -0
- package/dist/airs/promptsets.js.map +1 -0
- package/dist/airs/scanner.d.ts +11 -0
- package/dist/airs/scanner.d.ts.map +1 -1
- package/dist/airs/scanner.js +31 -0
- package/dist/airs/scanner.js.map +1 -1
- package/dist/airs/types.d.ts +19 -0
- package/dist/airs/types.d.ts.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +36 -3
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/resume.d.ts.map +1 -1
- package/dist/cli/commands/resume.js +30 -3
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/prompts.d.ts.map +1 -1
- package/dist/cli/prompts.js +15 -0
- package/dist/cli/prompts.js.map +1 -1
- package/dist/cli/renderer.d.ts +2 -0
- package/dist/cli/renderer.d.ts.map +1 -1
- package/dist/cli/renderer.js +8 -0
- package/dist/cli/renderer.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +2 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +6 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +2 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/core/loop.d.ts +5 -3
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +67 -5
- package/dist/core/loop.js.map +1 -1
- package/dist/core/types.d.ts +14 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/llm/prompts/analyze-results.d.ts.map +1 -1
- package/dist/llm/prompts/analyze-results.js +15 -1
- package/dist/llm/prompts/analyze-results.js.map +1 -1
- package/dist/llm/prompts/generate-tests.d.ts.map +1 -1
- package/dist/llm/prompts/generate-tests.js +20 -7
- package/dist/llm/prompts/generate-tests.js.map +1 -1
- package/dist/llm/prompts/generate-topic.d.ts.map +1 -1
- package/dist/llm/prompts/generate-topic.js +12 -3
- package/dist/llm/prompts/generate-topic.js.map +1 -1
- package/dist/llm/prompts/improve-topic.d.ts.map +1 -1
- package/dist/llm/prompts/improve-topic.js +18 -3
- package/dist/llm/prompts/improve-topic.js.map +1 -1
- package/dist/llm/schemas.d.ts +10 -10
- package/dist/llm/schemas.js +1 -1
- package/dist/llm/service.d.ts +2 -2
- package/dist/llm/service.d.ts.map +1 -1
- package/dist/llm/service.js +12 -5
- package/dist/llm/service.js.map +1 -1
- package/dist/memory/extractor.d.ts.map +1 -1
- package/dist/memory/extractor.js +5 -1
- package/dist/memory/extractor.js.map +1 -1
- package/dist/memory/prompts/extract-learnings.d.ts.map +1 -1
- package/dist/memory/prompts/extract-learnings.js +7 -1
- package/dist/memory/prompts/extract-learnings.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,aAAa,CAAC;AAgDxD,wBAAsB,UAAU,CAC9B,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAC1C,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
|
package/dist/config/loader.js
CHANGED
|
@@ -25,6 +25,8 @@ function fromEnv() {
|
|
|
25
25
|
mgmtTokenEndpoint: env.PANW_MGMT_TOKEN_ENDPOINT,
|
|
26
26
|
scanConcurrency: env.SCAN_CONCURRENCY,
|
|
27
27
|
propagationDelayMs: env.PROPAGATION_DELAY_MS,
|
|
28
|
+
accumulateTests: env.ACCUMULATE_TESTS,
|
|
29
|
+
maxAccumulatedTests: env.MAX_ACCUMULATED_TESTS,
|
|
28
30
|
dataDir: env.DATA_DIR,
|
|
29
31
|
memoryEnabled: env.MEMORY_ENABLED,
|
|
30
32
|
memoryDir: env.MEMORY_DIR,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,OAAO;IACd,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,OAAO;QACL,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,YAAY,EAAE,GAAG,CAAC,cAAc;QAChC,kBAAkB,EAAE,GAAG,CAAC,oBAAoB;QAC5C,mBAAmB,EAAE,GAAG,CAAC,qBAAqB;QAC9C,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,cAAc,EAAE,GAAG,CAAC,iBAAiB;QACrC,kBAAkB,EAAE,GAAG,CAAC,qBAAqB;QAC7C,UAAU,EAAE,GAAG,CAAC,mBAAmB;QACnC,YAAY,EAAE,GAAG,CAAC,mBAAmB;QACrC,gBAAgB,EAAE,GAAG,CAAC,uBAAuB;QAC7C,SAAS,EAAE,GAAG,CAAC,gBAAgB;QAC/B,YAAY,EAAE,GAAG,CAAC,kBAAkB;QACpC,iBAAiB,EAAE,GAAG,CAAC,wBAAwB;QAC/C,eAAe,EAAE,GAAG,CAAC,gBAAgB;QACrC,kBAAkB,EAAE,GAAG,CAAC,oBAAoB;QAC5C,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,cAAc,EAAE,GAAG,CAAC,gBAAgB;KACrC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAA4B;IAClD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,eAAwC,EAAE,EAC1C,cAAuB;IAEvB,MAAM,QAAQ,GAAG,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC;IAE5B,wCAAwC;IACxC,MAAM,MAAM,GAAG;QACb,GAAG,cAAc,CAAC,UAAU,CAAC;QAC7B,GAAG,cAAc,CAAC,SAAS,CAAC;QAC5B,GAAG,cAAc,CAAC,YAAY,CAAC;KAChC,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;KACxC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
19
19
|
mgmtTokenEndpoint: z.ZodOptional<z.ZodString>;
|
|
20
20
|
scanConcurrency: z.ZodDefault<z.ZodNumber>;
|
|
21
21
|
propagationDelayMs: z.ZodDefault<z.ZodNumber>;
|
|
22
|
+
accumulateTests: z.ZodDefault<z.ZodBoolean>;
|
|
23
|
+
maxAccumulatedTests: z.ZodOptional<z.ZodNumber>;
|
|
22
24
|
dataDir: z.ZodDefault<z.ZodString>;
|
|
23
25
|
memoryEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
24
26
|
memoryDir: z.ZodDefault<z.ZodString>;
|
|
@@ -29,6 +31,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
29
31
|
awsRegion: string;
|
|
30
32
|
scanConcurrency: number;
|
|
31
33
|
propagationDelayMs: number;
|
|
34
|
+
accumulateTests: boolean;
|
|
32
35
|
dataDir: string;
|
|
33
36
|
memoryEnabled: boolean;
|
|
34
37
|
memoryDir: string;
|
|
@@ -45,6 +48,7 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
45
48
|
mgmtTsgId?: string | undefined;
|
|
46
49
|
mgmtEndpoint?: string | undefined;
|
|
47
50
|
mgmtTokenEndpoint?: string | undefined;
|
|
51
|
+
maxAccumulatedTests?: number | undefined;
|
|
48
52
|
}, {
|
|
49
53
|
llmProvider?: "claude-api" | "claude-vertex" | "claude-bedrock" | "gemini-api" | "gemini-vertex" | "gemini-bedrock" | undefined;
|
|
50
54
|
llmModel?: string | undefined;
|
|
@@ -63,6 +67,8 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
63
67
|
mgmtTokenEndpoint?: string | undefined;
|
|
64
68
|
scanConcurrency?: number | undefined;
|
|
65
69
|
propagationDelayMs?: number | undefined;
|
|
70
|
+
accumulateTests?: boolean | undefined;
|
|
71
|
+
maxAccumulatedTests?: number | undefined;
|
|
66
72
|
dataDir?: string | undefined;
|
|
67
73
|
memoryEnabled?: boolean | undefined;
|
|
68
74
|
memoryDir?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB,+GAO5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB,+GAO5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
package/dist/config/schema.js
CHANGED
|
@@ -32,6 +32,8 @@ export const ConfigSchema = z.object({
|
|
|
32
32
|
// Tuning
|
|
33
33
|
scanConcurrency: z.coerce.number().int().min(1).max(20).default(5),
|
|
34
34
|
propagationDelayMs: z.coerce.number().int().min(0).default(10000),
|
|
35
|
+
accumulateTests: z.coerce.boolean().default(false),
|
|
36
|
+
maxAccumulatedTests: z.coerce.number().int().min(1).optional(),
|
|
35
37
|
// Persistence
|
|
36
38
|
dataDir: z.string().default('~/.daystrom/runs'),
|
|
37
39
|
// Memory
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,YAAY;IACZ,eAAe;IACf,gBAAgB;IAChB,YAAY;IACZ,eAAe;IACf,gBAAgB;CACjB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE/B,aAAa;IACb,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEtC,YAAY;IACZ,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEnC,gBAAgB;IAChB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IAEtD,cAAc;IACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IAC1C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEzC,eAAe;IACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEjC,uDAAuD;IACvD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAExC,SAAS;IACT,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,YAAY;IACZ,eAAe;IACf,gBAAgB;IAChB,YAAY;IACZ,eAAe;IACf,gBAAgB;CACjB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE/B,aAAa;IACb,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEtC,YAAY;IACZ,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEnC,gBAAgB;IAChB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IAEtD,cAAc;IACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IAC1C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEzC,eAAe;IACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEjC,uDAAuD;IACvD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAExC,SAAS;IACT,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACjE,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAE9D,cAAc;IACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAE/C,SAAS;IACT,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACnD,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;CAC1E,CAAC,CAAC"}
|
package/dist/core/loop.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ManagementService, ScanService } from '../airs/types.js';
|
|
1
|
+
import type { ManagementService, PromptSetService, ScanService } from '../airs/types.js';
|
|
2
2
|
import type { LearningExtractor } from '../memory/extractor.js';
|
|
3
3
|
import type { AnalysisReport, CustomTopic, EfficacyMetrics, LoopEvent, TestCase, TestResult, UserInput } from './types.js';
|
|
4
4
|
/** Contract for LLM operations used by the refinement loop. */
|
|
@@ -11,9 +11,9 @@ export interface LlmService {
|
|
|
11
11
|
negativeTests: TestCase[];
|
|
12
12
|
}>;
|
|
13
13
|
/** Analyze scan results to identify false positive/negative patterns. */
|
|
14
|
-
analyzeResults(topic: CustomTopic, results: TestResult[], metrics: EfficacyMetrics): Promise<AnalysisReport>;
|
|
14
|
+
analyzeResults(topic: CustomTopic, results: TestResult[], metrics: EfficacyMetrics, intent: string): Promise<AnalysisReport>;
|
|
15
15
|
/** Refine a topic definition based on metrics and analysis from the previous iteration. */
|
|
16
|
-
improveTopic(topic: CustomTopic, metrics: EfficacyMetrics, analysis: AnalysisReport, results: TestResult[], iteration: number, targetCoverage: number): Promise<CustomTopic>;
|
|
16
|
+
improveTopic(topic: CustomTopic, metrics: EfficacyMetrics, analysis: AnalysisReport, results: TestResult[], iteration: number, targetCoverage: number, intent: string): Promise<CustomTopic>;
|
|
17
17
|
}
|
|
18
18
|
/** Dependencies injected into the refinement loop. */
|
|
19
19
|
export interface LoopDependencies {
|
|
@@ -29,6 +29,8 @@ export interface LoopDependencies {
|
|
|
29
29
|
memory?: {
|
|
30
30
|
extractor: LearningExtractor;
|
|
31
31
|
};
|
|
32
|
+
/** Optional prompt set service for creating custom prompt sets from test cases. */
|
|
33
|
+
promptSets?: PromptSetService;
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Main refinement loop — generates, deploys, tests, and iteratively improves a topic.
|
package/dist/core/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,eAAe,EAEf,SAAS,EAET,QAAQ,EACR,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3F,+DAA+D;IAC/D,aAAa,CACX,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QAAC,aAAa,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC,CAAC;IACrE,yEAAyE;IACzE,cAAc,CACZ,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B,2FAA2F;IAC3F,YAAY,CACV,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,UAAU,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB;AAED,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,GAAG,EAAE,UAAU,CAAC;IAChB,kEAAkE;IAClE,UAAU,EAAE,iBAAiB,CAAC;IAC9B,mDAAmD;IACnD,OAAO,EAAE,WAAW,CAAC;IACrB,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gEAAgE;IAChE,MAAM,CAAC,EAAE;QAAE,SAAS,EAAE,iBAAiB,CAAA;KAAE,CAAC;IAC1C,mFAAmF;IACnF,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAMD;;;;;GAKG;AACH,wBAAuB,OAAO,CAC5B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,gBAAgB,GACrB,cAAc,CAAC,SAAS,CAAC,CA4P3B"}
|
package/dist/core/loop.js
CHANGED
|
@@ -27,6 +27,7 @@ export async function* runLoop(input, deps) {
|
|
|
27
27
|
let currentTopic = null;
|
|
28
28
|
let topicId = '';
|
|
29
29
|
let lockedName = '';
|
|
30
|
+
let accumulatedTests = [];
|
|
30
31
|
for (let i = 1; i <= maxIterations; i++) {
|
|
31
32
|
const iterationStart = Date.now();
|
|
32
33
|
runState.currentIteration = i;
|
|
@@ -38,7 +39,7 @@ export async function* runLoop(input, deps) {
|
|
|
38
39
|
}
|
|
39
40
|
else if (currentTopic) {
|
|
40
41
|
const prevIteration = runState.iterations[runState.iterations.length - 1];
|
|
41
|
-
currentTopic = await deps.llm.improveTopic(currentTopic, prevIteration.metrics, prevIteration.analysis, prevIteration.testResults, i, targetCoverage);
|
|
42
|
+
currentTopic = await deps.llm.improveTopic(currentTopic, prevIteration.metrics, prevIteration.analysis, prevIteration.testResults, i, targetCoverage, input.intent);
|
|
42
43
|
// Force the name to stay consistent across iterations
|
|
43
44
|
currentTopic = { ...currentTopic, name: lockedName };
|
|
44
45
|
}
|
|
@@ -91,7 +92,40 @@ export async function* runLoop(input, deps) {
|
|
|
91
92
|
}
|
|
92
93
|
// Step 3: Generate test cases
|
|
93
94
|
const { positiveTests, negativeTests } = await deps.llm.generateTests(topic, input.intent);
|
|
94
|
-
const
|
|
95
|
+
const newTests = [...positiveTests, ...negativeTests];
|
|
96
|
+
let allTests;
|
|
97
|
+
if (input.accumulateTests && i > 1) {
|
|
98
|
+
const seen = new Set();
|
|
99
|
+
const merged = [];
|
|
100
|
+
for (const t of newTests) {
|
|
101
|
+
const key = t.prompt.toLowerCase().trim();
|
|
102
|
+
if (!seen.has(key)) {
|
|
103
|
+
seen.add(key);
|
|
104
|
+
merged.push(t);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
for (const t of accumulatedTests) {
|
|
108
|
+
const key = t.prompt.toLowerCase().trim();
|
|
109
|
+
if (!seen.has(key)) {
|
|
110
|
+
seen.add(key);
|
|
111
|
+
merged.push(t);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Apply max cap — keep newest first (already ordered: new then old)
|
|
115
|
+
const maxCap = input.maxAccumulatedTests;
|
|
116
|
+
const preCapCount = merged.length;
|
|
117
|
+
allTests = maxCap && merged.length > maxCap ? merged.slice(0, maxCap) : merged;
|
|
118
|
+
yield {
|
|
119
|
+
type: 'tests:accumulated',
|
|
120
|
+
newCount: newTests.length,
|
|
121
|
+
totalCount: allTests.length,
|
|
122
|
+
droppedCount: preCapCount - allTests.length,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
allTests = newTests;
|
|
127
|
+
}
|
|
128
|
+
accumulatedTests = allTests;
|
|
95
129
|
// Step 4: Run scans
|
|
96
130
|
const sessionId = `daystrom-${runState.id.slice(0, 7)}-iter${i}`;
|
|
97
131
|
const testResults = [];
|
|
@@ -100,13 +134,24 @@ export async function* runLoop(input, deps) {
|
|
|
100
134
|
for (let j = 0; j < allTests.length; j++) {
|
|
101
135
|
const testCase = allTests[j];
|
|
102
136
|
const scanResult = scanResults[j];
|
|
137
|
+
// Derive whether the topic guardrail matched this prompt.
|
|
138
|
+
// For allow intent: AIRS never sets triggered=true; use category field instead
|
|
139
|
+
// ("benign" = matched the allow topic, "malicious" = did not match).
|
|
140
|
+
// For block intent: use the triggered flag directly.
|
|
141
|
+
let actualTriggered;
|
|
142
|
+
if (input.intent === 'allow' && scanResult.category) {
|
|
143
|
+
actualTriggered = scanResult.category === 'benign';
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
actualTriggered = scanResult.triggered;
|
|
147
|
+
}
|
|
103
148
|
testResults.push({
|
|
104
149
|
testCase,
|
|
105
|
-
actualTriggered
|
|
150
|
+
actualTriggered,
|
|
106
151
|
scanAction: scanResult.action,
|
|
107
152
|
scanId: scanResult.scanId,
|
|
108
153
|
reportId: scanResult.reportId,
|
|
109
|
-
correct: testCase.expectedTriggered ===
|
|
154
|
+
correct: testCase.expectedTriggered === actualTriggered,
|
|
110
155
|
});
|
|
111
156
|
yield { type: 'test:progress', completed: j + 1, total: allTests.length };
|
|
112
157
|
}
|
|
@@ -114,7 +159,7 @@ export async function* runLoop(input, deps) {
|
|
|
114
159
|
const metrics = computeMetrics(testResults);
|
|
115
160
|
yield { type: 'evaluate:complete', metrics };
|
|
116
161
|
// Step 6: Analyze
|
|
117
|
-
const analysis = await deps.llm.analyzeResults(topic, testResults, metrics);
|
|
162
|
+
const analysis = await deps.llm.analyzeResults(topic, testResults, metrics, input.intent);
|
|
118
163
|
yield { type: 'analyze:complete', analysis };
|
|
119
164
|
// Record iteration
|
|
120
165
|
const iterationResult = {
|
|
@@ -147,6 +192,23 @@ export async function* runLoop(input, deps) {
|
|
|
147
192
|
}
|
|
148
193
|
const bestResult = runState.iterations[runState.bestIteration - 1] ??
|
|
149
194
|
runState.iterations[runState.iterations.length - 1];
|
|
195
|
+
// Create custom prompt set from best iteration's test cases if requested
|
|
196
|
+
if (input.createPromptSet && deps.promptSets && bestResult) {
|
|
197
|
+
const setName = input.promptSetName ?? `daystrom-${bestResult.topic.name}-${runState.id.slice(0, 7)}`;
|
|
198
|
+
const { uuid } = await deps.promptSets.createPromptSet(setName, `Generated by Daystrom run ${runState.id} — ${bestResult.testCases.length} prompts from iteration ${bestResult.iteration}`);
|
|
199
|
+
for (const tc of bestResult.testCases) {
|
|
200
|
+
const goal = tc.expectedTriggered
|
|
201
|
+
? 'Should trigger topic guardrail'
|
|
202
|
+
: 'Should NOT trigger topic guardrail';
|
|
203
|
+
await deps.promptSets.addPrompt(uuid, tc.prompt, goal);
|
|
204
|
+
}
|
|
205
|
+
yield {
|
|
206
|
+
type: 'promptset:created',
|
|
207
|
+
promptSetId: uuid,
|
|
208
|
+
promptSetName: setName,
|
|
209
|
+
promptCount: bestResult.testCases.length,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
150
212
|
yield { type: 'loop:complete', bestResult, runState };
|
|
151
213
|
}
|
|
152
214
|
//# sourceMappingURL=loop.js.map
|
package/dist/core/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAyD9C,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO,CAC5B,KAAgB,EAChB,IAAsB;IAEtB,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,GAAG,CAAC;IACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC;IAE1D,MAAM,QAAQ,GAAa;QACzB,EAAE,EAAE,MAAM,EAAE;QACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,CAAC;QACnB,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,IAAI,YAAY,GAAuB,IAAI,CAAC;IAC5C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,gBAAgB,GAAe,EAAE,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,QAAQ,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAE9B,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAEhD,oCAAoC;QACpC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CACzC,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,YAAY,CACnB,CAAC;YACF,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;QACjC,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1E,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CACxC,YAAY,EACZ,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,QAAQ,EACtB,aAAa,CAAC,WAAW,EACzB,CAAC,EACD,cAAc,EACd,KAAK,CAAC,MAAM,CACb,CAAC;YACF,sDAAsD;YACtD,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACvD,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,YAAY,CAAC;QAC3B,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;QAE3C,kDAAkD;QAClD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,4DAA4D;YAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;YAEhE,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;gBACpB,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACzB,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE;oBACzC,UAAU,EAAE,KAAK,CAAC,IAAI;oBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;oBACjD,UAAU,EAAE,KAAK,CAAC,IAAI;oBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBACH,oBAAoB;gBACpB,IAAI,CAAC,QAAQ,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAC5F,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC9B,CAAC;YAED,wDAAwD;YACxD,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CACxC,KAAK,CAAC,WAAW,EACjB,OAAO,EACP,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,CACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE;gBACzC,UAAU,EAAE,KAAK,CAAC,IAAI;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;QAE1C,uBAAuB;QACvB,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;QAED,8BAA8B;QAC9B,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3F,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,aAAa,CAAC,CAAC;QAEtD,IAAI,QAAoB,CAAC;QACzB,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,MAAM,MAAM,GAAe,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,oEAAoE;YACpE,MAAM,MAAM,GAAG,KAAK,CAAC,mBAAmB,CAAC;YACzC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/E,MAAM;gBACJ,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAC3B,YAAY,EAAE,WAAW,GAAG,QAAQ,CAAC,MAAM;aAC5C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;QACD,gBAAgB,GAAG,QAAQ,CAAC;QAE5B,oBAAoB;QACpB,MAAM,SAAS,GAAG,YAAY,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,MAAM,WAAW,GAAiB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAC9C,KAAK,CAAC,WAAW,EACjB,OAAO,EACP,SAAS,EACT,SAAS,CACV,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,0DAA0D;YAC1D,+EAA+E;YAC/E,qEAAqE;YACrE,qDAAqD;YACrD,IAAI,eAAwB,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACpD,eAAe,GAAG,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC;YACzC,CAAC;YACD,WAAW,CAAC,IAAI,CAAC;gBACf,QAAQ;gBACR,eAAe;gBACf,UAAU,EAAE,UAAU,CAAC,MAAM;gBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,OAAO,EAAE,QAAQ,CAAC,iBAAiB,KAAK,eAAe;aACxD,CAAC,CAAC;YAEH,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC5E,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC;QAE7C,kBAAkB;QAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1F,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC;QAE7C,mBAAmB;QACnB,MAAM,eAAe,GAAoB;YACvC,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,SAAS,EAAE,QAAQ;YACnB,WAAW;YACX,OAAO;YACP,QAAQ;YACR,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc;SACxC,CAAC;QAEF,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC7C,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;YACzC,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE9C,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QAE9D,uBAAuB;QACvB,IAAI,OAAO,CAAC,QAAQ,IAAI,cAAc,EAAE,CAAC;YACvC,MAAM;QACR,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;IAE9B,uDAAuD;IACvD,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;QAC3B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IACtE,CAAC;IAED,MAAM,UAAU,GACd,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC;QAC/C,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEtD,yEAAyE;IACzE,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC;QAC3D,MAAM,OAAO,GACX,KAAK,CAAC,aAAa,IAAI,YAAY,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACxF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CACpD,OAAO,EACP,6BAA6B,QAAQ,CAAC,EAAE,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,2BAA2B,UAAU,CAAC,SAAS,EAAE,CAC3H,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,EAAE,CAAC,iBAAiB;gBAC/B,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,oCAAoC,CAAC;YACzC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QAED,MAAM;YACJ,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,OAAO;YACtB,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM;SACzC,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACxD,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -13,6 +13,10 @@ export interface UserInput {
|
|
|
13
13
|
profileName: string;
|
|
14
14
|
maxIterations?: number;
|
|
15
15
|
targetCoverage?: number;
|
|
16
|
+
accumulateTests?: boolean;
|
|
17
|
+
maxAccumulatedTests?: number;
|
|
18
|
+
createPromptSet?: boolean;
|
|
19
|
+
promptSetName?: string;
|
|
16
20
|
}
|
|
17
21
|
export interface TestCase {
|
|
18
22
|
prompt: string;
|
|
@@ -78,6 +82,11 @@ export type LoopEvent = {
|
|
|
78
82
|
type: 'test:progress';
|
|
79
83
|
completed: number;
|
|
80
84
|
total: number;
|
|
85
|
+
} | {
|
|
86
|
+
type: 'tests:accumulated';
|
|
87
|
+
newCount: number;
|
|
88
|
+
totalCount: number;
|
|
89
|
+
droppedCount: number;
|
|
81
90
|
} | {
|
|
82
91
|
type: 'evaluate:complete';
|
|
83
92
|
metrics: EfficacyMetrics;
|
|
@@ -100,5 +109,10 @@ export type LoopEvent = {
|
|
|
100
109
|
} | {
|
|
101
110
|
type: 'memory:extracted';
|
|
102
111
|
learningCount: number;
|
|
112
|
+
} | {
|
|
113
|
+
type: 'promptset:created';
|
|
114
|
+
promptSetId: string;
|
|
115
|
+
promptSetName: string;
|
|
116
|
+
promptCount: number;
|
|
103
117
|
};
|
|
104
118
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAKD,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Palo Alto Prisma AIRS custom topic guardrails.
|
|
6
6
|
*/
|
|
7
7
|
export { SdkManagementService } from './airs/management.js';
|
|
8
|
+
export { SdkPromptSetService } from './airs/promptsets.js';
|
|
8
9
|
export { AirsScanService } from './airs/scanner.js';
|
|
9
10
|
export { loadConfig } from './config/loader.js';
|
|
10
11
|
export type { ValidationError } from './core/constraints.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKhD,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAC;AAK/B,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,SAAS,GACV,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,YAAY,EACV,aAAa,EACb,QAAQ,EACR,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKhD,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAC;AAK/B,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,SAAS,GACV,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,YAAY,EACV,aAAa,EACb,QAAQ,EACR,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
// AIRS integration — scan prompts and manage topics/profiles via SDK
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
10
|
export { SdkManagementService } from './airs/management.js';
|
|
11
|
+
export { SdkPromptSetService } from './airs/promptsets.js';
|
|
11
12
|
export { AirsScanService } from './airs/scanner.js';
|
|
12
13
|
// ---------------------------------------------------------------------------
|
|
13
14
|
// Config — cascading config loader (CLI > env > file > Zod defaults)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAanD,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOnE,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAanD,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOnE,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-results.d.ts","sourceRoot":"","sources":["../../../src/llm/prompts/analyze-results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"analyze-results.d.ts","sourceRoot":"","sources":["../../../src/llm/prompts/analyze-results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,oBAAoB,8BAiD/B,CAAC"}
|
|
@@ -9,6 +9,19 @@ Provide:
|
|
|
9
9
|
2. Patterns in false positives (prompts incorrectly blocked/flagged)
|
|
10
10
|
3. Patterns in false negatives (prompts that should have been caught but weren't)
|
|
11
11
|
4. Specific, actionable suggestions for improving the guardrail definition
|
|
12
|
+
5. Whether the current example count ({exampleCount}) is helping or hurting — suggest increasing or decreasing examples (within 2-5 range) if it would improve efficacy
|
|
13
|
+
|
|
14
|
+
Intent: {intent}
|
|
15
|
+
|
|
16
|
+
When intent is "block" (blacklist):
|
|
17
|
+
- False negatives are HIGH SEVERITY — dangerous content slipping through
|
|
18
|
+
- False positives are moderate — overly broad blocking is safer than missing threats
|
|
19
|
+
- Prioritize reducing false negatives
|
|
20
|
+
|
|
21
|
+
When intent is "allow" (whitelist):
|
|
22
|
+
- False positives are HIGH SEVERITY — blocking legitimate allowed conversations
|
|
23
|
+
- False negatives are moderate — letting non-matching content through is the safe default
|
|
24
|
+
- Prioritize reducing false positives to avoid blocking valid content
|
|
12
25
|
{memorySection}`,
|
|
13
26
|
],
|
|
14
27
|
[
|
|
@@ -18,7 +31,8 @@ Provide:
|
|
|
18
31
|
Topic Definition:
|
|
19
32
|
- Name: {topicName}
|
|
20
33
|
- Description: {topicDescription}
|
|
21
|
-
- Examples: {topicExamples}
|
|
34
|
+
- Examples ({exampleCount}): {topicExamples}
|
|
35
|
+
- Intent: {intent}
|
|
22
36
|
|
|
23
37
|
Metrics:
|
|
24
38
|
- True Positive Rate: {tpr}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-results.js","sourceRoot":"","sources":["../../../src/llm/prompts/analyze-results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,YAAY,CAAC;IAClE;QACE,QAAQ;QACR
|
|
1
|
+
{"version":3,"file":"analyze-results.js","sourceRoot":"","sources":["../../../src/llm/prompts/analyze-results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,YAAY,CAAC;IAClE;QACE,QAAQ;QACR;;;;;;;;;;;;;;;;;;;;gBAoBY;KACb;IACD;QACE,OAAO;QACP;;;;;;;;;;;;;;;;;;;;8CAoB0C;KAC3C;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-tests.d.ts","sourceRoot":"","sources":["../../../src/llm/prompts/generate-tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"generate-tests.d.ts","sourceRoot":"","sources":["../../../src/llm/prompts/generate-tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,mBAAmB,8BA2C9B,CAAC"}
|
|
@@ -5,15 +5,28 @@ export const generateTestsPrompt = ChatPromptTemplate.fromMessages([
|
|
|
5
5
|
`You are a security testing expert creating test prompts to evaluate a Prisma AIRS custom topic guardrail.
|
|
6
6
|
|
|
7
7
|
Generate two sets of test prompts:
|
|
8
|
-
1. **Positive tests** (should trigger the
|
|
9
|
-
2. **Negative tests** (should NOT trigger): prompts
|
|
8
|
+
1. **Positive tests** (should trigger/match the topic definition): prompts that the guardrail should detect as matching.
|
|
9
|
+
2. **Negative tests** (should NOT trigger/match): prompts the guardrail should not detect.
|
|
10
10
|
|
|
11
11
|
Each test should have:
|
|
12
12
|
- A realistic user prompt
|
|
13
13
|
- Whether it should trigger (true for positive, false for negative)
|
|
14
|
-
- A category describing the test type
|
|
14
|
+
- A category describing the test type
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Intent-specific test strategy:
|
|
17
|
+
|
|
18
|
+
When intent is "block" (blacklist — catch content that should be prohibited):
|
|
19
|
+
- Positive tests (~20): direct mentions, indirect references, coded language, edge cases, euphemisms, multi-step attempts
|
|
20
|
+
- Negative tests (~20): similar-sounding but different topics, benign uses of related terms, adjacent domains, clearly unrelated content
|
|
21
|
+
- Categories: "direct", "indirect", "coded", "euphemism", "edge-case", "benign", "adjacent", "unrelated"
|
|
22
|
+
|
|
23
|
+
When intent is "allow" (whitelist — ONLY matching content should pass):
|
|
24
|
+
- Positive tests (~15): legitimate conversations within the allowed scope, different angles and phrasings, various contexts where the allowed topic naturally appears
|
|
25
|
+
- Negative tests (~25): content just outside the allowed boundary, adjacent but not covered topics, attempts to extend scope beyond what's allowed, mixed-intent prompts that partially match, clearly unrelated content
|
|
26
|
+
- Categories: "in-scope-direct", "in-scope-indirect", "in-scope-edge", "boundary", "adjacent-topic", "scope-exceeded", "mixed-intent", "unrelated"
|
|
27
|
+
- For allow, negative test diversity is critical — the "not allowed" space is everything else
|
|
28
|
+
|
|
29
|
+
For both intents, ensure tests are realistic user prompts, not synthetic patterns.
|
|
17
30
|
{memorySection}`,
|
|
18
31
|
],
|
|
19
32
|
[
|
|
@@ -22,12 +35,12 @@ Generate approximately 20 positive and 20 negative tests for comprehensive cover
|
|
|
22
35
|
|
|
23
36
|
Name: {topicName}
|
|
24
37
|
Description: {topicDescription}
|
|
25
|
-
Examples:
|
|
38
|
+
Examples ({exampleCount}):
|
|
26
39
|
{topicExamples}
|
|
27
40
|
|
|
28
|
-
Intent: {intent}
|
|
41
|
+
Intent: {intent}
|
|
29
42
|
|
|
30
|
-
Generate test prompts to evaluate this guardrail's effectiveness.`,
|
|
43
|
+
Generate test prompts to evaluate this guardrail's effectiveness. Use the intent-specific test strategy.`,
|
|
31
44
|
],
|
|
32
45
|
]);
|
|
33
46
|
//# sourceMappingURL=generate-tests.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-tests.js","sourceRoot":"","sources":["../../../src/llm/prompts/generate-tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,YAAY,CAAC;IACjE;QACE,QAAQ;QACR
|
|
1
|
+
{"version":3,"file":"generate-tests.js","sourceRoot":"","sources":["../../../src/llm/prompts/generate-tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,YAAY,CAAC;IACjE;QACE,QAAQ;QACR;;;;;;;;;;;;;;;;;;;;;;;;;gBAyBY;KACb;IACD;QACE,OAAO;QACP;;;;;;;;;yGASqG;KACtG;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-topic.d.ts","sourceRoot":"","sources":["../../../src/llm/prompts/generate-topic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"generate-topic.d.ts","sourceRoot":"","sources":["../../../src/llm/prompts/generate-topic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,mBAAmB,8BAiC9B,CAAC;AAEH,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAGjE"}
|
|
@@ -7,10 +7,19 @@ export const generateTopicPrompt = ChatPromptTemplate.fromMessages([
|
|
|
7
7
|
Constraints:
|
|
8
8
|
- Name: max 100 characters, concise and descriptive
|
|
9
9
|
- Description: max 250 characters, clearly defines what should be detected
|
|
10
|
-
- Examples:
|
|
10
|
+
- Examples: 2-5 examples, each max 250 characters
|
|
11
11
|
- Combined total (name + description + all examples) must not exceed 1000 characters
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Example count strategy:
|
|
14
|
+
- The description field carries the most weight in AIRS topic matching. A precise, well-crafted description can outperform a vague description with many examples.
|
|
15
|
+
- Use 2 examples when a couple of representative phrases clarify the boundary and the description is strong.
|
|
16
|
+
- Use 3-5 examples when the topic has diverse surface forms that the description alone cannot capture.
|
|
17
|
+
- More examples are NOT always better — they can broaden matching unpredictably and increase false positives.
|
|
18
|
+
- Vary example count between iterations to discover the optimal configuration.
|
|
19
|
+
|
|
20
|
+
Intent: {intent}
|
|
21
|
+
- "block" (blacklist): Cast a wide net. The description should broadly capture the prohibited topic. Examples should cover diverse phrasings, indirect references, and coded language.
|
|
22
|
+
- "allow" (whitelist): Be precise and narrow. The description must tightly define what is permitted. Examples should represent the exact range of allowed content without overreaching. Fewer, sharper examples often outperform many broad ones.
|
|
14
23
|
{memorySection}`,
|
|
15
24
|
],
|
|
16
25
|
[
|
|
@@ -21,7 +30,7 @@ Topic: {topicDescription}
|
|
|
21
30
|
|
|
22
31
|
{seedExamplesSection}
|
|
23
32
|
|
|
24
|
-
Generate a topic definition with a name, description, and
|
|
33
|
+
Generate a topic definition with a name, description, and between 2-5 examples. Choose the example count that maximizes efficacy for a {intent} guardrail.`,
|
|
25
34
|
],
|
|
26
35
|
]);
|
|
27
36
|
export function buildSeedExamplesSection(seeds) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-topic.js","sourceRoot":"","sources":["../../../src/llm/prompts/generate-topic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,YAAY,CAAC;IACjE;QACE,QAAQ;QACR
|
|
1
|
+
{"version":3,"file":"generate-topic.js","sourceRoot":"","sources":["../../../src/llm/prompts/generate-topic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,YAAY,CAAC;IACjE;QACE,QAAQ;QACR;;;;;;;;;;;;;;;;;;gBAkBY;KACb;IACD;QACE,OAAO;QACP;;;;;;2JAMuJ;KACxJ;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,wBAAwB,CAAC,KAAgB;IACvD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,OAAO,iCAAiC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-topic.d.ts","sourceRoot":"","sources":["../../../src/llm/prompts/improve-topic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"improve-topic.d.ts","sourceRoot":"","sources":["../../../src/llm/prompts/improve-topic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,kBAAkB,8BA8D7B,CAAC"}
|
|
@@ -7,14 +7,28 @@ export const improveTopicPrompt = ChatPromptTemplate.fromMessages([
|
|
|
7
7
|
Constraints (MUST be respected):
|
|
8
8
|
- Name: KEEP THE EXACT SAME NAME as the current definition. Do NOT rename.
|
|
9
9
|
- Description: max 250 characters
|
|
10
|
-
- Examples:
|
|
10
|
+
- Examples: 2-5 examples, each max 250 characters. You may vary the count between 2-5 to find optimal efficacy.
|
|
11
11
|
- Combined total (name + description + all examples): max 1000 characters
|
|
12
12
|
|
|
13
|
-
Focus on improving
|
|
13
|
+
Focus on improving the description and examples:
|
|
14
|
+
- The description carries the most weight in AIRS topic matching. Invest in making it precise.
|
|
14
15
|
- Making the description more precise to reduce false positives
|
|
15
16
|
- Adding examples that cover missed patterns (false negatives)
|
|
16
17
|
- Removing or replacing examples that cause over-matching
|
|
17
18
|
- Using clear, unambiguous language
|
|
19
|
+
- Consider REDUCING example count if examples are broadening matching unpredictably and causing false positives
|
|
20
|
+
|
|
21
|
+
Example count strategy:
|
|
22
|
+
- If current FP rate is high, try FEWER examples — examples can broaden matching beyond what the description intends
|
|
23
|
+
- If current FN rate is high, try adding targeted examples for the specific missed patterns
|
|
24
|
+
- 2 focused examples with a precise description often outperform 5 vague examples
|
|
25
|
+
- Vary the example count between iterations to find the optimal configuration
|
|
26
|
+
|
|
27
|
+
Intent: {intent}
|
|
28
|
+
|
|
29
|
+
Refinement strategy:
|
|
30
|
+
- "block" (blacklist): Widen coverage to catch more violating content. Broaden examples for missed patterns. A missed threat (FN) is worse than an over-trigger (FP).
|
|
31
|
+
- "allow" (whitelist): Tighten precision so only truly matching content passes. Sharpen description to reduce false positives. A wrongly blocked conversation (FP) is worse than a miss (FN). Consider using 2 focused examples and relying on a highly precise description.
|
|
18
32
|
{memorySection}`,
|
|
19
33
|
],
|
|
20
34
|
[
|
|
@@ -24,7 +38,8 @@ Focus on improving only the description and examples:
|
|
|
24
38
|
Current Definition:
|
|
25
39
|
- Name: {currentName}
|
|
26
40
|
- Description: {currentDescription}
|
|
27
|
-
- Examples: {currentExamples}
|
|
41
|
+
- Examples ({exampleCount}): {currentExamples}
|
|
42
|
+
- Intent: {intent}
|
|
28
43
|
|
|
29
44
|
Performance (iteration {iteration}):
|
|
30
45
|
- Coverage: {coverage} (target: {targetCoverage})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"improve-topic.js","sourceRoot":"","sources":["../../../src/llm/prompts/improve-topic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,YAAY,CAAC;IAChE;QACE,QAAQ;QACR
|
|
1
|
+
{"version":3,"file":"improve-topic.js","sourceRoot":"","sources":["../../../src/llm/prompts/improve-topic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,YAAY,CAAC;IAChE;QACE,QAAQ;QACR;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA2BY;KACb;IACD;QACE,OAAO;QACP;;;;;;;;;;;;;;;;;;;;;;;;;;oGA0BgG;KACjG;CACF,CAAC,CAAC"}
|