@kindgi/guardrails 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/checks.d.ts.map +1 -1
- package/dist/checks.js +102 -8
- package/dist/checks.js.map +1 -1
- package/dist/config-problems.d.ts +37 -0
- package/dist/config-problems.d.ts.map +1 -0
- package/dist/config-problems.js +74 -0
- package/dist/config-problems.js.map +1 -0
- package/dist/define.d.ts +6 -0
- package/dist/define.d.ts.map +1 -1
- package/dist/define.js +6 -0
- package/dist/define.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +26 -1
- package/dist/engine.js.map +1 -1
- package/dist/errors.d.ts +11 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/execution-strategy.d.ts.map +1 -1
- package/dist/execution-strategy.js +14 -0
- package/dist/execution-strategy.js.map +1 -1
- package/dist/guardrail.schema.json +4 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +6 -6
- package/src/checks.ts +112 -8
- package/src/config-problems.ts +111 -0
- package/src/define.ts +7 -0
- package/src/engine.ts +25 -1
- package/src/errors.ts +13 -1
- package/src/execution-strategy.ts +14 -0
- package/src/guardrail.schema.json +4 -0
- package/src/index.ts +9 -1
- package/src/types.ts +16 -0
package/dist/checks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAiB,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyThF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,SAAS,eAAe,EAAO,GAAG,aAAa,CAexF;AAED,qDAAqD;AACrD,eAAO,MAAM,kBAAkB,UAAmC,CAAC"}
|
package/dist/checks.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { guardrailConfigProblems } from './config-problems.js';
|
|
3
4
|
/**
|
|
4
5
|
* Built-in check library. Every entry is `kind: 'zero-llm'` — pure
|
|
5
6
|
* functions over the run trace, no external calls, deterministic. See
|
|
6
7
|
* `judge.ts` for LLM-judge evaluation.
|
|
7
8
|
*
|
|
8
9
|
* Adding a new built-in check: implement the function, add it to
|
|
9
|
-
* `BUILT_IN_CHECKS
|
|
10
|
+
* `BUILT_IN_CHECKS` with its config's JSON Schema (which also refuses a
|
|
11
|
+
* config it doesn't know: a misspelt setting is never silently ignored),
|
|
12
|
+
* and document it in the JSDoc block.
|
|
10
13
|
*/
|
|
11
14
|
/**
|
|
12
15
|
* `must-cite`: assistant output must include at least N matches of the
|
|
@@ -199,14 +202,105 @@ const forbiddenSubstring = async (config, trace) => {
|
|
|
199
202
|
attributes: { violated },
|
|
200
203
|
};
|
|
201
204
|
};
|
|
205
|
+
const nonEmptyStrings = {
|
|
206
|
+
type: 'array',
|
|
207
|
+
minItems: 1,
|
|
208
|
+
items: { type: 'string', minLength: 1 },
|
|
209
|
+
};
|
|
210
|
+
const object = (properties, required = []) => ({
|
|
211
|
+
type: 'object',
|
|
212
|
+
properties,
|
|
213
|
+
...(required.length > 0 && { required }),
|
|
214
|
+
additionalProperties: false,
|
|
215
|
+
});
|
|
216
|
+
/** Each built-in's config, as JSON Schema: what registration and evaluation check it against. */
|
|
217
|
+
const CONFIG_SCHEMAS = {
|
|
218
|
+
'must-cite': object({
|
|
219
|
+
minCitations: { type: 'integer', minimum: 1 },
|
|
220
|
+
sourcePattern: { type: 'string', minLength: 1 },
|
|
221
|
+
}),
|
|
222
|
+
'never-call-tool': object({
|
|
223
|
+
tools: {
|
|
224
|
+
type: 'array',
|
|
225
|
+
minItems: 1,
|
|
226
|
+
items: {
|
|
227
|
+
anyOf: [
|
|
228
|
+
{ type: 'string', minLength: 1 },
|
|
229
|
+
{
|
|
230
|
+
type: 'object',
|
|
231
|
+
properties: { id: { type: 'string', minLength: 1 }, version: { type: 'string' } },
|
|
232
|
+
required: ['id'],
|
|
233
|
+
},
|
|
234
|
+
],
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
}, ['tools']),
|
|
238
|
+
'max-tool-calls': object({ max: { type: 'integer', minimum: 0 } }),
|
|
239
|
+
'output-matches': object({
|
|
240
|
+
pattern: { type: 'string', minLength: 1 },
|
|
241
|
+
flags: { type: 'string', pattern: '^[dgimsuyv]*$' },
|
|
242
|
+
negate: { type: 'boolean' },
|
|
243
|
+
}, ['pattern']),
|
|
244
|
+
'tool-order': object({ sequence: nonEmptyStrings }, ['sequence']),
|
|
245
|
+
'required-substring': object({ patterns: nonEmptyStrings, caseSensitive: { type: 'boolean' } }, [
|
|
246
|
+
'patterns',
|
|
247
|
+
]),
|
|
248
|
+
'forbidden-substring': object({ patterns: nonEmptyStrings, caseSensitive: { type: 'boolean' } }, [
|
|
249
|
+
'patterns',
|
|
250
|
+
]),
|
|
251
|
+
};
|
|
252
|
+
/** The settings that are regular expressions, by check: each must compile. */
|
|
253
|
+
const REGEX_SETTINGS = {
|
|
254
|
+
'must-cite': ['sourcePattern'],
|
|
255
|
+
'output-matches': ['pattern', 'flags'],
|
|
256
|
+
};
|
|
257
|
+
/** Every way `config` doesn't fit built-in `id`: its schema's problems, then a regex that won't compile. */
|
|
258
|
+
function builtInConfigProblems(id, config) {
|
|
259
|
+
const schema = CONFIG_SCHEMAS[id];
|
|
260
|
+
const problems = guardrailConfigProblems({ configSchema: schema, config });
|
|
261
|
+
if (problems.length > 0)
|
|
262
|
+
return problems;
|
|
263
|
+
const regex = REGEX_SETTINGS[id];
|
|
264
|
+
if (regex === undefined)
|
|
265
|
+
return [];
|
|
266
|
+
const [patternKey, flagsKey] = regex;
|
|
267
|
+
const settings = (config ?? {});
|
|
268
|
+
const pattern = settings[patternKey];
|
|
269
|
+
if (typeof pattern !== 'string')
|
|
270
|
+
return [];
|
|
271
|
+
const flags = flagsKey !== undefined ? settings[flagsKey] : undefined;
|
|
272
|
+
try {
|
|
273
|
+
new RegExp(pattern, typeof flags === 'string' ? flags : '');
|
|
274
|
+
return [];
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
return [
|
|
278
|
+
{
|
|
279
|
+
path: `/config/${patternKey}`,
|
|
280
|
+
message: `config.${patternKey} isn't a regular expression that compiles: ${error.message}.`,
|
|
281
|
+
},
|
|
282
|
+
];
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
function builtIn(id, evaluate) {
|
|
286
|
+
const configProblems = (config) => builtInConfigProblems(id, config);
|
|
287
|
+
return {
|
|
288
|
+
id,
|
|
289
|
+
kind: 'zero-llm',
|
|
290
|
+
evaluate,
|
|
291
|
+
configSchema: CONFIG_SCHEMAS[id],
|
|
292
|
+
configProblems,
|
|
293
|
+
validateConfig: (config) => configProblems(config)[0]?.message,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
202
296
|
const BUILT_IN_CHECKS = [
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
297
|
+
builtIn('must-cite', mustCite),
|
|
298
|
+
builtIn('never-call-tool', neverCallTool),
|
|
299
|
+
builtIn('max-tool-calls', maxToolCalls),
|
|
300
|
+
builtIn('output-matches', outputMatches),
|
|
301
|
+
builtIn('tool-order', toolOrder),
|
|
302
|
+
builtIn('required-substring', requiredSubstring),
|
|
303
|
+
builtIn('forbidden-substring', forbiddenSubstring),
|
|
210
304
|
];
|
|
211
305
|
/**
|
|
212
306
|
* Create a fresh CheckRegistry pre-populated with built-in checks.
|
package/dist/checks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../src/checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One way a guardrail's config doesn't fit its check: `path` is a JSON
|
|
3
|
+
* pointer into the guardrail (`/config/maxChars`, `/config` at the root),
|
|
4
|
+
* `message` the setting and what it takes (`config.maxChars must be > 0.`).
|
|
5
|
+
* The shape of `details.issues` in an API error, as the provider check's
|
|
6
|
+
* (`provider-config-invalid`); `describeGuardrailConfigProblems` words the
|
|
7
|
+
* error's message.
|
|
8
|
+
*/
|
|
9
|
+
export interface GuardrailConfigProblem {
|
|
10
|
+
readonly path: string;
|
|
11
|
+
readonly message: string;
|
|
12
|
+
}
|
|
13
|
+
export interface GuardrailConfigProblemsInput {
|
|
14
|
+
/** The config schema of the check the guardrail names (JSON Schema Draft 2020-12). */
|
|
15
|
+
readonly configSchema: Readonly<Record<string, unknown>>;
|
|
16
|
+
/** The guardrail's config; absent is checked as `{}`. */
|
|
17
|
+
readonly config: unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Every way `config` doesn't fit `configSchema`, checked as declared (the
|
|
21
|
+
* schema's defaults not filled in, as the indexer and the pack service
|
|
22
|
+
* check it). Empty when it fits, and when the schema doesn't compile: that
|
|
23
|
+
* is the pack's to fix, and its pack service refuses every call already.
|
|
24
|
+
*/
|
|
25
|
+
export declare function guardrailConfigProblems(input: GuardrailConfigProblemsInput): readonly GuardrailConfigProblem[];
|
|
26
|
+
/**
|
|
27
|
+
* An error message for `problems`, one sentence as the provider check's:
|
|
28
|
+
* the guardrail, the check, the first problem and how many more
|
|
29
|
+
* (`Guardrail "acme.strict" doesn't fit check "my-pack.checks.answer-length":
|
|
30
|
+
* config.maxChars must be > 0 (and 1 more).`). A CLI prints it before each
|
|
31
|
+
* problem's line.
|
|
32
|
+
*/
|
|
33
|
+
export declare function describeGuardrailConfigProblems(input: {
|
|
34
|
+
readonly guardrailId: string;
|
|
35
|
+
readonly check: string;
|
|
36
|
+
}, problems: readonly GuardrailConfigProblem[]): string;
|
|
37
|
+
//# sourceMappingURL=config-problems.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-problems.d.ts","sourceRoot":"","sources":["../src/config-problems.ts"],"names":[],"mappings":"AAsBA;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,sFAAsF;IACtF,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,SAAS,sBAAsB,EAAE,CAOnC;AAWD;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAC/D,QAAQ,EAAE,SAAS,sBAAsB,EAAE,GAC1C,MAAM,CAMR"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import * as addFormatsModule from 'ajv-formats';
|
|
4
|
+
import { Ajv2020 } from 'ajv/dist/2020.js';
|
|
5
|
+
const addFormatsRaw = addFormatsModule;
|
|
6
|
+
const addFormats = typeof addFormatsRaw === 'function'
|
|
7
|
+
? addFormatsRaw
|
|
8
|
+
: addFormatsRaw.default;
|
|
9
|
+
/** Compiled validators by schema, oldest first. */
|
|
10
|
+
const compiled = new Map();
|
|
11
|
+
const MAX_COMPILED = 256;
|
|
12
|
+
/**
|
|
13
|
+
* Every way `config` doesn't fit `configSchema`, checked as declared (the
|
|
14
|
+
* schema's defaults not filled in, as the indexer and the pack service
|
|
15
|
+
* check it). Empty when it fits, and when the schema doesn't compile: that
|
|
16
|
+
* is the pack's to fix, and its pack service refuses every call already.
|
|
17
|
+
*/
|
|
18
|
+
export function guardrailConfigProblems(input) {
|
|
19
|
+
const validate = validatorFor(input.configSchema);
|
|
20
|
+
if (validate === null || validate(input.config ?? {}))
|
|
21
|
+
return [];
|
|
22
|
+
return (validate.errors ?? []).map((issue) => {
|
|
23
|
+
const path = `/config${issue.instancePath}`;
|
|
24
|
+
return { path, message: `${settingName(path)} ${issue.message ?? 'is invalid'}.` };
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/** `/config/rules/0/pattern` → `config.rules.0.pattern`, as a message names it. */
|
|
28
|
+
function settingName(pointer) {
|
|
29
|
+
return pointer
|
|
30
|
+
.slice(1)
|
|
31
|
+
.split('/')
|
|
32
|
+
.map((step) => step.replaceAll('~1', '/').replaceAll('~0', '~'))
|
|
33
|
+
.join('.');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* An error message for `problems`, one sentence as the provider check's:
|
|
37
|
+
* the guardrail, the check, the first problem and how many more
|
|
38
|
+
* (`Guardrail "acme.strict" doesn't fit check "my-pack.checks.answer-length":
|
|
39
|
+
* config.maxChars must be > 0 (and 1 more).`). A CLI prints it before each
|
|
40
|
+
* problem's line.
|
|
41
|
+
*/
|
|
42
|
+
export function describeGuardrailConfigProblems(input, problems) {
|
|
43
|
+
const first = problems[0];
|
|
44
|
+
const head = `Guardrail "${input.guardrailId}"`;
|
|
45
|
+
if (first === undefined)
|
|
46
|
+
return `${head} fits check "${input.check}".`;
|
|
47
|
+
const more = problems.length > 1 ? ` (and ${problems.length - 1} more)` : '';
|
|
48
|
+
return `${head} doesn't fit check "${input.check}": ${first.message.replace(/\.$/, '')}${more}.`;
|
|
49
|
+
}
|
|
50
|
+
function validatorFor(schema) {
|
|
51
|
+
const key = JSON.stringify(schema);
|
|
52
|
+
const cached = compiled.get(key);
|
|
53
|
+
if (cached !== undefined)
|
|
54
|
+
return cached;
|
|
55
|
+
let validate;
|
|
56
|
+
try {
|
|
57
|
+
// Not strict: a schema keyword Ajv doesn't know (a generator's
|
|
58
|
+
// annotation) mustn't stop the check of the keywords it does.
|
|
59
|
+
const ajv = new Ajv2020({ strict: false, allErrors: true });
|
|
60
|
+
addFormats(ajv);
|
|
61
|
+
validate = ajv.compile(schema);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
validate = null;
|
|
65
|
+
}
|
|
66
|
+
if (compiled.size >= MAX_COMPILED) {
|
|
67
|
+
const oldest = compiled.keys().next().value;
|
|
68
|
+
if (oldest !== undefined)
|
|
69
|
+
compiled.delete(oldest);
|
|
70
|
+
}
|
|
71
|
+
compiled.set(key, validate);
|
|
72
|
+
return validate;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=config-problems.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-problems.js","sourceRoot":"","sources":["../src/config-problems.ts"],"names":[],"mappings":"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"}
|
package/dist/define.d.ts
CHANGED
|
@@ -24,4 +24,10 @@ export declare function defineGuardrail(spec: Guardrail, checks: CheckRegistry):
|
|
|
24
24
|
export declare function validateGuardrailSpec(spec: unknown): Result<Guardrail, InvalidGuardrailError>;
|
|
25
25
|
/** The `$id` of the JSON Schema this loader validates against. */
|
|
26
26
|
export declare const GUARDRAIL_SCHEMA_URI = "https://kindgi.com/schemas/v1/guardrail.schema.json";
|
|
27
|
+
/**
|
|
28
|
+
* The fields a guardrail spec may carry (`guardrail.schema.json`'s properties). A reader that
|
|
29
|
+
* builds a spec from a source a newer version may extend (a pack index) keeps only these, so a
|
|
30
|
+
* field it doesn't know never fails the spec; a direct registration stays strict.
|
|
31
|
+
*/
|
|
32
|
+
export declare const GUARDRAIL_SPEC_KEYS: readonly string[];
|
|
27
33
|
//# sourceMappingURL=define.d.ts.map
|
package/dist/define.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAe3D;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,aAAa,GACpB,MAAM,CAAC,SAAS,EAAE,qBAAqB,GAAG,iBAAiB,GAAG,uBAAuB,CAAC,CA4DxF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC,CA8B7F;AAED,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,wDAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAe3D;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,aAAa,GACpB,MAAM,CAAC,SAAS,EAAE,qBAAqB,GAAG,iBAAiB,GAAG,uBAAuB,CAAC,CA4DxF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC,CA8B7F;AAED,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,wDAAsB,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAA4C,CAAC"}
|
package/dist/define.js
CHANGED
|
@@ -123,4 +123,10 @@ export function validateGuardrailSpec(spec) {
|
|
|
123
123
|
}
|
|
124
124
|
/** The `$id` of the JSON Schema this loader validates against. */
|
|
125
125
|
export const GUARDRAIL_SCHEMA_URI = GUARDRAIL_SCHEMA_ID;
|
|
126
|
+
/**
|
|
127
|
+
* The fields a guardrail spec may carry (`guardrail.schema.json`'s properties). A reader that
|
|
128
|
+
* builds a spec from a source a newer version may extend (a pack index) keeps only these, so a
|
|
129
|
+
* field it doesn't know never fails the spec; a direct registration stays strict.
|
|
130
|
+
*/
|
|
131
|
+
export const GUARDRAIL_SPEC_KEYS = Object.keys(guardrailSchema.properties);
|
|
126
132
|
//# sourceMappingURL=define.js.map
|
package/dist/define.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EACL,KAAK,iBAAiB,EAMvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EAET,MAAM,YAAY,CAAC;AAqBpB,qFAAqF;AACrF,wBAAgB,iBAAiB,IAAI,SAAS,iBAAiB,EAAE,CAEhE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,iBAAiB,CAAA;CAAE,CAAC;AAEjF,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,QAAQ,EACf,QAAQ,GAAE,kBAAuB,GAChC,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EACL,KAAK,iBAAiB,EAMvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EAET,MAAM,YAAY,CAAC;AAqBpB,qFAAqF;AACrF,wBAAgB,iBAAiB,IAAI,SAAS,iBAAiB,EAAE,CAEhE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,iBAAiB,CAAA;CAAE,CAAC;AAEjF,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,QAAQ,EACf,QAAQ,GAAE,kBAAuB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CA0H5B;AAUD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,QAAQ,EACf,QAAQ,GAAE,kBAAuB,GAChC,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAEvC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,gBAAgB,EAAE,CAM9F"}
|
package/dist/engine.js
CHANGED
|
@@ -42,7 +42,25 @@ export async function evaluateGuardrail(guardrail, checks, trace, bindings = {})
|
|
|
42
42
|
},
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
let strategyOutcome;
|
|
46
|
+
try {
|
|
47
|
+
strategyOutcome = await strategy.evaluate(guardrail, checks, trace, bindings);
|
|
48
|
+
}
|
|
49
|
+
catch (thrown) {
|
|
50
|
+
// The turn was cancelled: that propagates as it is. Anything else the check threw is the
|
|
51
|
+
// check failing, which the caller treats as a check that couldn't run (a `halt` guardrail
|
|
52
|
+
// fails closed), never as a pass and never as the turn's own error.
|
|
53
|
+
if (bindings.abortSignal?.aborted === true)
|
|
54
|
+
throw thrown;
|
|
55
|
+
return {
|
|
56
|
+
kind: 'err',
|
|
57
|
+
error: {
|
|
58
|
+
code: 'check-failed',
|
|
59
|
+
message: `guardrail "${guardrail.id}": its check threw: ${thrownMessage(thrown)}`,
|
|
60
|
+
guardrailId: guardrail.id,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
46
64
|
if (strategyOutcome.kind === 'err') {
|
|
47
65
|
const err = strategyOutcome.error;
|
|
48
66
|
return {
|
|
@@ -124,6 +142,13 @@ export async function evaluateGuardrail(guardrail, checks, trace, bindings = {})
|
|
|
124
142
|
}
|
|
125
143
|
return { kind: 'ok', value: evaluation };
|
|
126
144
|
}
|
|
145
|
+
/** What a check threw, as one bounded line: the message, never the stack. */
|
|
146
|
+
function thrownMessage(thrown) {
|
|
147
|
+
const raw = thrown instanceof Error ? thrown.message : String(thrown);
|
|
148
|
+
const line = raw.replace(/\s+/g, ' ').trim();
|
|
149
|
+
return line.length > THROWN_MESSAGE_MAX ? `${line.slice(0, THROWN_MESSAGE_MAX)}…` : line;
|
|
150
|
+
}
|
|
151
|
+
const THROWN_MESSAGE_MAX = 500;
|
|
127
152
|
/**
|
|
128
153
|
* Evaluate every guardrail in the list against a trace. Order-independent —
|
|
129
154
|
* each check is a pure function over the trace. Returns one outcome per
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAKjC,OAAO,EAGL,+BAA+B,EAC/B,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAuB,WAAW,EAAE,MAAM,YAAY,CAAC;AAW9D;;;;GAIG;AACH,IAAI,eAAsD,CAAC;AAC3D,SAAS,0BAA0B;IACjC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,eAAe,GAAG,+BAA+B,CAAC;YAChD,eAAe;YACf,oBAAoB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,CACxE,WAAW,CAAC,MAAwB,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAChF;YACD,gBAAgB;SACjB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,0BAA0B,EAAE,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AA4BD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAoB,EACpB,MAAqB,EACrB,KAAe,EACf,WAA+B,EAAE;IAEjC,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAE3D,mEAAmE;IACnE,0DAA0D;IAC1D,kEAAkE;IAClE,2CAA2C;IAE3C,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,0BAA0B,EAAE,CAAC;IACvE,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,KAAK;YACX,KAAK,EAAE;gBACL,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,cAAc,SAAS,CAAC,EAAE,4BAA4B,SAAS,CAAC,IAAI,sCAAsC;gBACnH,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;aACxE;SACF,CAAC;IACJ,CAAC;IACD,
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { GuardrailId } from '@kindgi/types';
|
|
|
3
3
|
* Errors emitted by @kindgi/guardrails. Every variant carries a `code`
|
|
4
4
|
* for pattern matching; messages are human-readable, not API contract.
|
|
5
5
|
*/
|
|
6
|
-
export type GuardrailError = InvalidGuardrailError | InvalidCheckDefinitionError | UnknownCheckError | InvalidCheckConfigError | JudgeMissingError | JudgeRoutingError | JudgeUsageError | ScopeMismatchError | UnknownActionError;
|
|
6
|
+
export type GuardrailError = InvalidGuardrailError | InvalidCheckDefinitionError | UnknownCheckError | InvalidCheckConfigError | JudgeMissingError | JudgeRoutingError | JudgeUsageError | ScopeMismatchError | UnknownActionError | CheckFailedError;
|
|
7
7
|
/**
|
|
8
8
|
* The judge model couldn't be routed via `@kindgi/capabilities`. Wraps
|
|
9
9
|
* the underlying capability error (usually `capability-unsatisfiable` —
|
|
@@ -43,6 +43,16 @@ export interface InvalidGuardrailError {
|
|
|
43
43
|
readonly message: string;
|
|
44
44
|
}[];
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* The check ran and threw: pack code that crashed, a pack service that couldn't be reached, a
|
|
48
|
+
* judge that failed. `message` is what it threw, bounded, with no stack. A cancelled turn isn't
|
|
49
|
+
* this: its abort propagates as it is.
|
|
50
|
+
*/
|
|
51
|
+
export interface CheckFailedError {
|
|
52
|
+
readonly code: 'check-failed';
|
|
53
|
+
readonly message: string;
|
|
54
|
+
readonly guardrailId: GuardrailId;
|
|
55
|
+
}
|
|
46
56
|
/** The guardrail references a check id that isn't registered. */
|
|
47
57
|
export interface UnknownCheckError {
|
|
48
58
|
readonly code: 'unknown-check';
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,2BAA2B,GAC3B,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-strategy.d.ts","sourceRoot":"","sources":["../src/execution-strategy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CACN,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjF,uEAAuE;IACvE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACjD,IAAI,IAAI,SAAS,iBAAiB,EAAE,CAAC;CACtC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,GAAE,SAAS,iBAAiB,EAAO,GACtC,yBAAyB,CAc3B;AAID,yEAAyE;AACzE,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"execution-strategy.d.ts","sourceRoot":"","sources":["../src/execution-strategy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CACN,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjF,uEAAuE;IACvE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACjD,IAAI,IAAI,SAAS,iBAAiB,EAAE,CAAC;CACtC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,GAAE,SAAS,iBAAiB,EAAO,GACtC,yBAAyB,CAc3B;AAID,yEAAyE;AACzE,eAAO,MAAM,eAAe,EAAE,iBAgC7B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,iBAmB9B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,CACX,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,CAAC,EAAE,MAAM,KACjB,OAAO,CACV,WAAW,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CACtF,GACA,iBAAiB,CA+BnB"}
|
|
@@ -33,6 +33,20 @@ export const zeroLlmStrategy = {
|
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
const config = (guardrail.config ?? {});
|
|
36
|
+
// A config the check refuses is a check that can't run, never a pass: a misspelt setting
|
|
37
|
+
// mustn't silently disable the rule (`never-call-tool` with no list forbade nothing).
|
|
38
|
+
const problems = check.configProblems?.(config);
|
|
39
|
+
const refused = problems !== undefined ? problems[0]?.message : check.validateConfig?.(config);
|
|
40
|
+
if (refused !== undefined) {
|
|
41
|
+
return {
|
|
42
|
+
kind: 'err',
|
|
43
|
+
error: {
|
|
44
|
+
code: 'invalid-check-config',
|
|
45
|
+
message: `Guardrail "${guardrail.id}"'s config doesn't fit check "${guardrail.check}": ${refused}`,
|
|
46
|
+
...(problems !== undefined && problems.length > 0 && { issues: problems }),
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
36
50
|
const result = await check.evaluate(config, trace, bindings);
|
|
37
51
|
return { kind: 'ok', value: result };
|
|
38
52
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-strategy.js","sourceRoot":"","sources":["../src/execution-strategy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execution-strategy.js","sourceRoot":"","sources":["../src/execution-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,10 @@
|
|
|
37
37
|
"additionalProperties": true,
|
|
38
38
|
"description": "Check-specific configuration. Interpreted by the check implementation."
|
|
39
39
|
},
|
|
40
|
+
"configSchema": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"description": "JSON Schema (Draft 2020-12) of the check's config, for a check that is pack code: the pack index's `configSchema`, which a deployment keeps on the guardrails it registers. The runtime checks a guardrail's `config` against it at registration, for any guardrail naming that check, and the pack service checks it on every call. Optional; a runtime-declaration field like `codeArtifactRef`."
|
|
43
|
+
},
|
|
40
44
|
"action": {
|
|
41
45
|
"$ref": "#/$defs/Action"
|
|
42
46
|
},
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export { GUARDRAIL_SCHEMA_URI, defineGuardrail, validateGuardrailSpec } from './define.js';
|
|
1
|
+
export { GUARDRAIL_SCHEMA_URI, GUARDRAIL_SPEC_KEYS, defineGuardrail, validateGuardrailSpec, } from './define.js';
|
|
2
2
|
export { defineCheck } from './define-check.js';
|
|
3
|
+
export { describeGuardrailConfigProblems, guardrailConfigProblems } from './config-problems.js';
|
|
4
|
+
export type { GuardrailConfigProblem, GuardrailConfigProblemsInput } from './config-problems.js';
|
|
3
5
|
export type { DefineCheckSpec, DefinedCheck, InferCheckConfig } from './define-check.js';
|
|
4
6
|
export { BUILT_IN_CHECK_IDS, createCheckRegistry } from './checks.js';
|
|
5
7
|
export { BUILT_IN_ACTION_HANDLERS, compensateHandler, createActionHandlerRegistry, escalateHandler, haltHandler, logOnlyHandler, noopHandler, retryHandler, } from './action-handler.js';
|
|
@@ -12,5 +14,5 @@ export { JUDGE_THINKING_TOKENS, JUDGE_VERDICT_TOKENS, invokeJudge } from './judg
|
|
|
12
14
|
export type { LlmJudgeConfig } from './judge.js';
|
|
13
15
|
export type { Action, Budget, BuiltInGuardrailKind, BuiltInOnViolation, CheckFunction, CheckRegistry, CheckResult, CodeArtifactRef, EvaluationBindings, EvaluationResult, Guardrail, GuardrailKind, GuardrailSeverity, JsonSchema, ModelCallRecord, NetworkPolicy, OnViolation, RegisteredCheck, RunTrace, RuntimeLimits, SandboxMode, Scope, ScopeWhen, ToolCallRecord, ToolResultRecord, TypedNeeds, } from './types.js';
|
|
14
16
|
export { BUILT_IN_GUARDRAIL_KINDS, BUILT_IN_ON_VIOLATIONS } from './types.js';
|
|
15
|
-
export type { InvalidCheckConfigError, InvalidCheckDefinitionError, InvalidGuardrailError, GuardrailError, JudgeMissingError, JudgeRoutingError, JudgeUsageError, ScopeMismatchError, UnknownActionError, UnknownCheckError, } from './errors.js';
|
|
17
|
+
export type { CheckFailedError, InvalidCheckConfigError, InvalidCheckDefinitionError, InvalidGuardrailError, GuardrailError, JudgeMissingError, JudgeRoutingError, JudgeUsageError, ScopeMismatchError, UnknownActionError, UnknownCheckError, } from './errors.js';
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,+BAA+B,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAChG,YAAY,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACjG,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,EACf,WAAW,EACX,cAAc,EACd,WAAW,EACX,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,+BAA+B,EAC/B,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtF,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EACV,MAAM,EACN,MAAM,EACN,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACX,eAAe,EACf,QAAQ,EACR,aAAa,EACb,WAAW,EACX,KAAK,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC9E,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
-
export { GUARDRAIL_SCHEMA_URI, defineGuardrail, validateGuardrailSpec } from './define.js';
|
|
3
|
+
export { GUARDRAIL_SCHEMA_URI, GUARDRAIL_SPEC_KEYS, defineGuardrail, validateGuardrailSpec, } from './define.js';
|
|
4
4
|
export { defineCheck } from './define-check.js';
|
|
5
|
+
export { describeGuardrailConfigProblems, guardrailConfigProblems } from './config-problems.js';
|
|
5
6
|
export { BUILT_IN_CHECK_IDS, createCheckRegistry } from './checks.js';
|
|
6
7
|
export { BUILT_IN_ACTION_HANDLERS, compensateHandler, createActionHandlerRegistry, escalateHandler, haltHandler, logOnlyHandler, noopHandler, retryHandler, } from './action-handler.js';
|
|
7
8
|
export { builtInStrategies, evaluateAll, evaluateGuardrail, violations } from './engine.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,+BAA+B,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAGhG,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,EACf,WAAW,EACX,cAAc,EACd,WAAW,EACX,YAAY,GACb,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE5F,OAAO,EACL,+BAA+B,EAC/B,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA8BtF,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Capability, ModelProvider, ProviderRegistry, TenantPolicy, UsageSink } from '@kindgi/capabilities';
|
|
2
2
|
import type { ComplianceProvider } from '@kindgi/compliance';
|
|
3
3
|
import type { AgentId, FlowId, GuardrailId, OrgId, ProjectId, RunId, TenantId, Timestamp, ToolId } from '@kindgi/types';
|
|
4
|
+
import type { GuardrailConfigProblem } from './config-problems.js';
|
|
4
5
|
/**
|
|
5
6
|
* How a guardrail is checked. Open string — the engine dispatches
|
|
6
7
|
* on this value through an `ExecutionStrategyRegistry`. Built-in kinds
|
|
@@ -225,6 +226,14 @@ export interface Guardrail {
|
|
|
225
226
|
* check handler bytes. Absent for in-process declarations.
|
|
226
227
|
*/
|
|
227
228
|
readonly codeArtifactRef?: CodeArtifactRef;
|
|
229
|
+
/**
|
|
230
|
+
* JSON Schema of the check's `config`, for a check that is pack code:
|
|
231
|
+
* the pack index's `configSchema`, kept by a deployment on the
|
|
232
|
+
* guardrails it registers. A runtime checks any guardrail naming this
|
|
233
|
+
* check against it at registration (`guardrailConfigProblems`), as the
|
|
234
|
+
* pack service does on every call.
|
|
235
|
+
*/
|
|
236
|
+
readonly configSchema?: Readonly<Record<string, unknown>>;
|
|
228
237
|
}
|
|
229
238
|
/**
|
|
230
239
|
* Recorded events from a run that checks operate on. Callers materialize
|
|
@@ -406,6 +415,13 @@ export interface RegisteredCheck {
|
|
|
406
415
|
readonly kind: GuardrailKind;
|
|
407
416
|
readonly evaluate: CheckFunction;
|
|
408
417
|
readonly validateConfig?: (config: unknown) => string | undefined;
|
|
418
|
+
/** The check's config as JSON Schema (Draft 2020-12), when it publishes one (the built-ins do). */
|
|
419
|
+
readonly configSchema?: Readonly<Record<string, unknown>>;
|
|
420
|
+
/**
|
|
421
|
+
* Every way a guardrail's `config` doesn't fit this check, as an API answer's issues (paths
|
|
422
|
+
* under `/config`): what registration refuses up front. `validateConfig` words the first.
|
|
423
|
+
*/
|
|
424
|
+
readonly configProblems?: (config: unknown) => readonly GuardrailConfigProblem[];
|
|
409
425
|
}
|
|
410
426
|
/**
|
|
411
427
|
* Registry mapping check id → implementation. Built-in checks are
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,WAAW,EACX,KAAK,EACL,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACP,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAsCjC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAiBvF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM;IACN,OAAO;IACP,UAAU;IACV,UAAU;IACV,YAAY;CACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kindgi/guardrails",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Runtime + CI enforcement of agent-behavior guardrails for Kindgi. Same declaration runs at runtime (halt / retry / escalate / log-only / compensate on violation) and in CI (fails the build) — no drift between test and prod. Zero-LLM checks (must-cite, never-call-tool, max-tool-calls, output-matches, tool-order, required-substring, forbidden-substring) are the default fast path; LLM-judge guardrails route via @kindgi/capabilities with explicit budget declarations. Execution strategies and action handlers are pluggable registries, and failed checks optionally emit compliance evidence.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"type-manifest.json"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kindgi/capabilities": "0.1.
|
|
34
|
-
"@kindgi/compliance": "0.1.
|
|
35
|
-
"@kindgi/schema": "0.1.
|
|
36
|
-
"@kindgi/types": "0.1.
|
|
33
|
+
"@kindgi/capabilities": "0.1.5",
|
|
34
|
+
"@kindgi/compliance": "0.1.5",
|
|
35
|
+
"@kindgi/schema": "0.1.5",
|
|
36
|
+
"@kindgi/types": "0.1.5",
|
|
37
37
|
"ajv": "^8.17.1",
|
|
38
38
|
"ajv-formats": "^3.0.1"
|
|
39
39
|
},
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@kindgi/specs": "0.1.
|
|
49
|
+
"@kindgi/specs": "0.1.5",
|
|
50
50
|
"@types/node": "^22.10.5",
|
|
51
51
|
"typescript": "^5.7.3",
|
|
52
52
|
"vitest": "^2.1.8",
|
package/src/checks.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
3
|
|
|
4
|
+
import { type GuardrailConfigProblem, guardrailConfigProblems } from './config-problems.js';
|
|
4
5
|
import type { CheckFunction, CheckRegistry, RegisteredCheck } from './types.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
@@ -9,7 +10,9 @@ import type { CheckFunction, CheckRegistry, RegisteredCheck } from './types.js';
|
|
|
9
10
|
* `judge.ts` for LLM-judge evaluation.
|
|
10
11
|
*
|
|
11
12
|
* Adding a new built-in check: implement the function, add it to
|
|
12
|
-
* `BUILT_IN_CHECKS
|
|
13
|
+
* `BUILT_IN_CHECKS` with its config's JSON Schema (which also refuses a
|
|
14
|
+
* config it doesn't know: a misspelt setting is never silently ignored),
|
|
15
|
+
* and document it in the JSDoc block.
|
|
13
16
|
*/
|
|
14
17
|
|
|
15
18
|
/**
|
|
@@ -201,14 +204,115 @@ const forbiddenSubstring: CheckFunction = async (config, trace) => {
|
|
|
201
204
|
};
|
|
202
205
|
};
|
|
203
206
|
|
|
207
|
+
const nonEmptyStrings = {
|
|
208
|
+
type: 'array',
|
|
209
|
+
minItems: 1,
|
|
210
|
+
items: { type: 'string', minLength: 1 },
|
|
211
|
+
} as const;
|
|
212
|
+
const object = (
|
|
213
|
+
properties: Record<string, unknown>,
|
|
214
|
+
required: readonly string[] = [],
|
|
215
|
+
): Readonly<Record<string, unknown>> => ({
|
|
216
|
+
type: 'object',
|
|
217
|
+
properties,
|
|
218
|
+
...(required.length > 0 && { required }),
|
|
219
|
+
additionalProperties: false,
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
/** Each built-in's config, as JSON Schema: what registration and evaluation check it against. */
|
|
223
|
+
const CONFIG_SCHEMAS: Readonly<Record<string, Readonly<Record<string, unknown>>>> = {
|
|
224
|
+
'must-cite': object({
|
|
225
|
+
minCitations: { type: 'integer', minimum: 1 },
|
|
226
|
+
sourcePattern: { type: 'string', minLength: 1 },
|
|
227
|
+
}),
|
|
228
|
+
'never-call-tool': object(
|
|
229
|
+
{
|
|
230
|
+
tools: {
|
|
231
|
+
type: 'array',
|
|
232
|
+
minItems: 1,
|
|
233
|
+
items: {
|
|
234
|
+
anyOf: [
|
|
235
|
+
{ type: 'string', minLength: 1 },
|
|
236
|
+
{
|
|
237
|
+
type: 'object',
|
|
238
|
+
properties: { id: { type: 'string', minLength: 1 }, version: { type: 'string' } },
|
|
239
|
+
required: ['id'],
|
|
240
|
+
},
|
|
241
|
+
],
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
['tools'],
|
|
246
|
+
),
|
|
247
|
+
'max-tool-calls': object({ max: { type: 'integer', minimum: 0 } }),
|
|
248
|
+
'output-matches': object(
|
|
249
|
+
{
|
|
250
|
+
pattern: { type: 'string', minLength: 1 },
|
|
251
|
+
flags: { type: 'string', pattern: '^[dgimsuyv]*$' },
|
|
252
|
+
negate: { type: 'boolean' },
|
|
253
|
+
},
|
|
254
|
+
['pattern'],
|
|
255
|
+
),
|
|
256
|
+
'tool-order': object({ sequence: nonEmptyStrings }, ['sequence']),
|
|
257
|
+
'required-substring': object({ patterns: nonEmptyStrings, caseSensitive: { type: 'boolean' } }, [
|
|
258
|
+
'patterns',
|
|
259
|
+
]),
|
|
260
|
+
'forbidden-substring': object({ patterns: nonEmptyStrings, caseSensitive: { type: 'boolean' } }, [
|
|
261
|
+
'patterns',
|
|
262
|
+
]),
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
/** The settings that are regular expressions, by check: each must compile. */
|
|
266
|
+
const REGEX_SETTINGS: Readonly<Record<string, readonly [pattern: string, flags?: string]>> = {
|
|
267
|
+
'must-cite': ['sourcePattern'],
|
|
268
|
+
'output-matches': ['pattern', 'flags'],
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
/** Every way `config` doesn't fit built-in `id`: its schema's problems, then a regex that won't compile. */
|
|
272
|
+
function builtInConfigProblems(id: string, config: unknown): readonly GuardrailConfigProblem[] {
|
|
273
|
+
const schema = CONFIG_SCHEMAS[id] as Readonly<Record<string, unknown>>;
|
|
274
|
+
const problems = guardrailConfigProblems({ configSchema: schema, config });
|
|
275
|
+
if (problems.length > 0) return problems;
|
|
276
|
+
const regex = REGEX_SETTINGS[id];
|
|
277
|
+
if (regex === undefined) return [];
|
|
278
|
+
const [patternKey, flagsKey] = regex;
|
|
279
|
+
const settings = (config ?? {}) as Record<string, unknown>;
|
|
280
|
+
const pattern = settings[patternKey];
|
|
281
|
+
if (typeof pattern !== 'string') return [];
|
|
282
|
+
const flags = flagsKey !== undefined ? settings[flagsKey] : undefined;
|
|
283
|
+
try {
|
|
284
|
+
new RegExp(pattern, typeof flags === 'string' ? flags : '');
|
|
285
|
+
return [];
|
|
286
|
+
} catch (error) {
|
|
287
|
+
return [
|
|
288
|
+
{
|
|
289
|
+
path: `/config/${patternKey}`,
|
|
290
|
+
message: `config.${patternKey} isn't a regular expression that compiles: ${(error as Error).message}.`,
|
|
291
|
+
},
|
|
292
|
+
];
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
function builtIn(id: string, evaluate: CheckFunction): RegisteredCheck {
|
|
297
|
+
const configProblems = (config: unknown) => builtInConfigProblems(id, config);
|
|
298
|
+
return {
|
|
299
|
+
id,
|
|
300
|
+
kind: 'zero-llm',
|
|
301
|
+
evaluate,
|
|
302
|
+
configSchema: CONFIG_SCHEMAS[id] as Readonly<Record<string, unknown>>,
|
|
303
|
+
configProblems,
|
|
304
|
+
validateConfig: (config) => configProblems(config)[0]?.message,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
|
|
204
308
|
const BUILT_IN_CHECKS: readonly RegisteredCheck[] = [
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
309
|
+
builtIn('must-cite', mustCite),
|
|
310
|
+
builtIn('never-call-tool', neverCallTool),
|
|
311
|
+
builtIn('max-tool-calls', maxToolCalls),
|
|
312
|
+
builtIn('output-matches', outputMatches),
|
|
313
|
+
builtIn('tool-order', toolOrder),
|
|
314
|
+
builtIn('required-substring', requiredSubstring),
|
|
315
|
+
builtIn('forbidden-substring', forbiddenSubstring),
|
|
212
316
|
];
|
|
213
317
|
|
|
214
318
|
/**
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A guardrail's `config` against the `configSchema` of the check it names,
|
|
6
|
+
* as issues for an API answer. A runtime calls it when a guardrail is
|
|
7
|
+
* registered (`POST /v1/guardrails`), with the schema of the pack check
|
|
8
|
+
* the guardrail names, so a config the pack service would refuse on every
|
|
9
|
+
* call is refused up front instead.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { ValidateFunction } from 'ajv';
|
|
13
|
+
import * as addFormatsModule from 'ajv-formats';
|
|
14
|
+
import { Ajv2020 } from 'ajv/dist/2020.js';
|
|
15
|
+
|
|
16
|
+
type AddFormatsFn = (ajv: InstanceType<typeof Ajv2020>, opts?: unknown) => unknown;
|
|
17
|
+
const addFormatsRaw = addFormatsModule as unknown;
|
|
18
|
+
const addFormats: AddFormatsFn =
|
|
19
|
+
typeof addFormatsRaw === 'function'
|
|
20
|
+
? (addFormatsRaw as AddFormatsFn)
|
|
21
|
+
: (addFormatsRaw as { default: AddFormatsFn }).default;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* One way a guardrail's config doesn't fit its check: `path` is a JSON
|
|
25
|
+
* pointer into the guardrail (`/config/maxChars`, `/config` at the root),
|
|
26
|
+
* `message` the setting and what it takes (`config.maxChars must be > 0.`).
|
|
27
|
+
* The shape of `details.issues` in an API error, as the provider check's
|
|
28
|
+
* (`provider-config-invalid`); `describeGuardrailConfigProblems` words the
|
|
29
|
+
* error's message.
|
|
30
|
+
*/
|
|
31
|
+
export interface GuardrailConfigProblem {
|
|
32
|
+
readonly path: string;
|
|
33
|
+
readonly message: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface GuardrailConfigProblemsInput {
|
|
37
|
+
/** The config schema of the check the guardrail names (JSON Schema Draft 2020-12). */
|
|
38
|
+
readonly configSchema: Readonly<Record<string, unknown>>;
|
|
39
|
+
/** The guardrail's config; absent is checked as `{}`. */
|
|
40
|
+
readonly config: unknown;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Compiled validators by schema, oldest first. */
|
|
44
|
+
const compiled = new Map<string, ValidateFunction | null>();
|
|
45
|
+
const MAX_COMPILED = 256;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Every way `config` doesn't fit `configSchema`, checked as declared (the
|
|
49
|
+
* schema's defaults not filled in, as the indexer and the pack service
|
|
50
|
+
* check it). Empty when it fits, and when the schema doesn't compile: that
|
|
51
|
+
* is the pack's to fix, and its pack service refuses every call already.
|
|
52
|
+
*/
|
|
53
|
+
export function guardrailConfigProblems(
|
|
54
|
+
input: GuardrailConfigProblemsInput,
|
|
55
|
+
): readonly GuardrailConfigProblem[] {
|
|
56
|
+
const validate = validatorFor(input.configSchema);
|
|
57
|
+
if (validate === null || validate(input.config ?? {})) return [];
|
|
58
|
+
return (validate.errors ?? []).map((issue) => {
|
|
59
|
+
const path = `/config${issue.instancePath}`;
|
|
60
|
+
return { path, message: `${settingName(path)} ${issue.message ?? 'is invalid'}.` };
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** `/config/rules/0/pattern` → `config.rules.0.pattern`, as a message names it. */
|
|
65
|
+
function settingName(pointer: string): string {
|
|
66
|
+
return pointer
|
|
67
|
+
.slice(1)
|
|
68
|
+
.split('/')
|
|
69
|
+
.map((step) => step.replaceAll('~1', '/').replaceAll('~0', '~'))
|
|
70
|
+
.join('.');
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* An error message for `problems`, one sentence as the provider check's:
|
|
75
|
+
* the guardrail, the check, the first problem and how many more
|
|
76
|
+
* (`Guardrail "acme.strict" doesn't fit check "my-pack.checks.answer-length":
|
|
77
|
+
* config.maxChars must be > 0 (and 1 more).`). A CLI prints it before each
|
|
78
|
+
* problem's line.
|
|
79
|
+
*/
|
|
80
|
+
export function describeGuardrailConfigProblems(
|
|
81
|
+
input: { readonly guardrailId: string; readonly check: string },
|
|
82
|
+
problems: readonly GuardrailConfigProblem[],
|
|
83
|
+
): string {
|
|
84
|
+
const first = problems[0];
|
|
85
|
+
const head = `Guardrail "${input.guardrailId}"`;
|
|
86
|
+
if (first === undefined) return `${head} fits check "${input.check}".`;
|
|
87
|
+
const more = problems.length > 1 ? ` (and ${problems.length - 1} more)` : '';
|
|
88
|
+
return `${head} doesn't fit check "${input.check}": ${first.message.replace(/\.$/, '')}${more}.`;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function validatorFor(schema: Readonly<Record<string, unknown>>): ValidateFunction | null {
|
|
92
|
+
const key = JSON.stringify(schema);
|
|
93
|
+
const cached = compiled.get(key);
|
|
94
|
+
if (cached !== undefined) return cached;
|
|
95
|
+
let validate: ValidateFunction | null;
|
|
96
|
+
try {
|
|
97
|
+
// Not strict: a schema keyword Ajv doesn't know (a generator's
|
|
98
|
+
// annotation) mustn't stop the check of the keywords it does.
|
|
99
|
+
const ajv = new Ajv2020({ strict: false, allErrors: true });
|
|
100
|
+
addFormats(ajv);
|
|
101
|
+
validate = ajv.compile(schema as object);
|
|
102
|
+
} catch {
|
|
103
|
+
validate = null;
|
|
104
|
+
}
|
|
105
|
+
if (compiled.size >= MAX_COMPILED) {
|
|
106
|
+
const oldest = compiled.keys().next().value;
|
|
107
|
+
if (oldest !== undefined) compiled.delete(oldest);
|
|
108
|
+
}
|
|
109
|
+
compiled.set(key, validate);
|
|
110
|
+
return validate;
|
|
111
|
+
}
|
package/src/define.ts
CHANGED
|
@@ -144,3 +144,10 @@ export function validateGuardrailSpec(spec: unknown): Result<Guardrail, InvalidG
|
|
|
144
144
|
|
|
145
145
|
/** The `$id` of the JSON Schema this loader validates against. */
|
|
146
146
|
export const GUARDRAIL_SCHEMA_URI = GUARDRAIL_SCHEMA_ID;
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* The fields a guardrail spec may carry (`guardrail.schema.json`'s properties). A reader that
|
|
150
|
+
* builds a spec from a source a newer version may extend (a pack index) keeps only these, so a
|
|
151
|
+
* field it doesn't know never fails the spec; a direct registration stays strict.
|
|
152
|
+
*/
|
|
153
|
+
export const GUARDRAIL_SPEC_KEYS: readonly string[] = Object.keys(guardrailSchema.properties);
|
package/src/engine.ts
CHANGED
|
@@ -99,7 +99,23 @@ export async function evaluateGuardrail(
|
|
|
99
99
|
},
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
|
-
|
|
102
|
+
let strategyOutcome: Awaited<ReturnType<typeof strategy.evaluate>>;
|
|
103
|
+
try {
|
|
104
|
+
strategyOutcome = await strategy.evaluate(guardrail, checks, trace, bindings);
|
|
105
|
+
} catch (thrown) {
|
|
106
|
+
// The turn was cancelled: that propagates as it is. Anything else the check threw is the
|
|
107
|
+
// check failing, which the caller treats as a check that couldn't run (a `halt` guardrail
|
|
108
|
+
// fails closed), never as a pass and never as the turn's own error.
|
|
109
|
+
if (bindings.abortSignal?.aborted === true) throw thrown;
|
|
110
|
+
return {
|
|
111
|
+
kind: 'err',
|
|
112
|
+
error: {
|
|
113
|
+
code: 'check-failed',
|
|
114
|
+
message: `guardrail "${guardrail.id}": its check threw: ${thrownMessage(thrown)}`,
|
|
115
|
+
guardrailId: guardrail.id,
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
103
119
|
if (strategyOutcome.kind === 'err') {
|
|
104
120
|
const err = strategyOutcome.error;
|
|
105
121
|
return {
|
|
@@ -186,6 +202,14 @@ export async function evaluateGuardrail(
|
|
|
186
202
|
return { kind: 'ok', value: evaluation };
|
|
187
203
|
}
|
|
188
204
|
|
|
205
|
+
/** What a check threw, as one bounded line: the message, never the stack. */
|
|
206
|
+
function thrownMessage(thrown: unknown): string {
|
|
207
|
+
const raw = thrown instanceof Error ? thrown.message : String(thrown);
|
|
208
|
+
const line = raw.replace(/\s+/g, ' ').trim();
|
|
209
|
+
return line.length > THROWN_MESSAGE_MAX ? `${line.slice(0, THROWN_MESSAGE_MAX)}…` : line;
|
|
210
|
+
}
|
|
211
|
+
const THROWN_MESSAGE_MAX = 500;
|
|
212
|
+
|
|
189
213
|
/**
|
|
190
214
|
* Evaluate every guardrail in the list against a trace. Order-independent —
|
|
191
215
|
* each check is a pure function over the trace. Returns one outcome per
|
package/src/errors.ts
CHANGED
|
@@ -16,7 +16,8 @@ export type GuardrailError =
|
|
|
16
16
|
| JudgeRoutingError
|
|
17
17
|
| JudgeUsageError
|
|
18
18
|
| ScopeMismatchError
|
|
19
|
-
| UnknownActionError
|
|
19
|
+
| UnknownActionError
|
|
20
|
+
| CheckFailedError;
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* The judge model couldn't be routed via `@kindgi/capabilities`. Wraps
|
|
@@ -57,6 +58,17 @@ export interface InvalidGuardrailError {
|
|
|
57
58
|
readonly issues: readonly { readonly path: string; readonly message: string }[];
|
|
58
59
|
}
|
|
59
60
|
|
|
61
|
+
/**
|
|
62
|
+
* The check ran and threw: pack code that crashed, a pack service that couldn't be reached, a
|
|
63
|
+
* judge that failed. `message` is what it threw, bounded, with no stack. A cancelled turn isn't
|
|
64
|
+
* this: its abort propagates as it is.
|
|
65
|
+
*/
|
|
66
|
+
export interface CheckFailedError {
|
|
67
|
+
readonly code: 'check-failed';
|
|
68
|
+
readonly message: string;
|
|
69
|
+
readonly guardrailId: GuardrailId;
|
|
70
|
+
}
|
|
71
|
+
|
|
60
72
|
/** The guardrail references a check id that isn't registered. */
|
|
61
73
|
export interface UnknownCheckError {
|
|
62
74
|
readonly code: 'unknown-check';
|
|
@@ -105,6 +105,20 @@ export const zeroLlmStrategy: ExecutionStrategy = {
|
|
|
105
105
|
};
|
|
106
106
|
}
|
|
107
107
|
const config = (guardrail.config ?? {}) as Readonly<Record<string, unknown>>;
|
|
108
|
+
// A config the check refuses is a check that can't run, never a pass: a misspelt setting
|
|
109
|
+
// mustn't silently disable the rule (`never-call-tool` with no list forbade nothing).
|
|
110
|
+
const problems = check.configProblems?.(config);
|
|
111
|
+
const refused = problems !== undefined ? problems[0]?.message : check.validateConfig?.(config);
|
|
112
|
+
if (refused !== undefined) {
|
|
113
|
+
return {
|
|
114
|
+
kind: 'err',
|
|
115
|
+
error: {
|
|
116
|
+
code: 'invalid-check-config',
|
|
117
|
+
message: `Guardrail "${guardrail.id}"'s config doesn't fit check "${guardrail.check}": ${refused}`,
|
|
118
|
+
...(problems !== undefined && problems.length > 0 && { issues: problems }),
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
108
122
|
const result = await check.evaluate(config, trace, bindings);
|
|
109
123
|
return { kind: 'ok', value: result };
|
|
110
124
|
},
|
|
@@ -37,6 +37,10 @@
|
|
|
37
37
|
"additionalProperties": true,
|
|
38
38
|
"description": "Check-specific configuration. Interpreted by the check implementation."
|
|
39
39
|
},
|
|
40
|
+
"configSchema": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"description": "JSON Schema (Draft 2020-12) of the check's config, for a check that is pack code: the pack index's `configSchema`, which a deployment keeps on the guardrails it registers. The runtime checks a guardrail's `config` against it at registration, for any guardrail naming that check, and the pack service checks it on every call. Optional; a runtime-declaration field like `codeArtifactRef`."
|
|
43
|
+
},
|
|
40
44
|
"action": {
|
|
41
45
|
"$ref": "#/$defs/Action"
|
|
42
46
|
},
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
3
|
|
|
4
|
-
export {
|
|
4
|
+
export {
|
|
5
|
+
GUARDRAIL_SCHEMA_URI,
|
|
6
|
+
GUARDRAIL_SPEC_KEYS,
|
|
7
|
+
defineGuardrail,
|
|
8
|
+
validateGuardrailSpec,
|
|
9
|
+
} from './define.js';
|
|
5
10
|
export { defineCheck } from './define-check.js';
|
|
11
|
+
export { describeGuardrailConfigProblems, guardrailConfigProblems } from './config-problems.js';
|
|
12
|
+
export type { GuardrailConfigProblem, GuardrailConfigProblemsInput } from './config-problems.js';
|
|
6
13
|
export type { DefineCheckSpec, DefinedCheck, InferCheckConfig } from './define-check.js';
|
|
7
14
|
export { BUILT_IN_CHECK_IDS, createCheckRegistry } from './checks.js';
|
|
8
15
|
export {
|
|
@@ -67,6 +74,7 @@ export type {
|
|
|
67
74
|
} from './types.js';
|
|
68
75
|
export { BUILT_IN_GUARDRAIL_KINDS, BUILT_IN_ON_VIOLATIONS } from './types.js';
|
|
69
76
|
export type {
|
|
77
|
+
CheckFailedError,
|
|
70
78
|
InvalidCheckConfigError,
|
|
71
79
|
InvalidCheckDefinitionError,
|
|
72
80
|
InvalidGuardrailError,
|
package/src/types.ts
CHANGED
|
@@ -20,6 +20,7 @@ import type {
|
|
|
20
20
|
Timestamp,
|
|
21
21
|
ToolId,
|
|
22
22
|
} from '@kindgi/types';
|
|
23
|
+
import type { GuardrailConfigProblem } from './config-problems.js';
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* How a guardrail is checked. Open string — the engine dispatches
|
|
@@ -262,6 +263,14 @@ export interface Guardrail {
|
|
|
262
263
|
* check handler bytes. Absent for in-process declarations.
|
|
263
264
|
*/
|
|
264
265
|
readonly codeArtifactRef?: CodeArtifactRef;
|
|
266
|
+
/**
|
|
267
|
+
* JSON Schema of the check's `config`, for a check that is pack code:
|
|
268
|
+
* the pack index's `configSchema`, kept by a deployment on the
|
|
269
|
+
* guardrails it registers. A runtime checks any guardrail naming this
|
|
270
|
+
* check against it at registration (`guardrailConfigProblems`), as the
|
|
271
|
+
* pack service does on every call.
|
|
272
|
+
*/
|
|
273
|
+
readonly configSchema?: Readonly<Record<string, unknown>>;
|
|
265
274
|
}
|
|
266
275
|
|
|
267
276
|
/**
|
|
@@ -456,6 +465,13 @@ export interface RegisteredCheck {
|
|
|
456
465
|
readonly kind: GuardrailKind;
|
|
457
466
|
readonly evaluate: CheckFunction;
|
|
458
467
|
readonly validateConfig?: (config: unknown) => string | undefined;
|
|
468
|
+
/** The check's config as JSON Schema (Draft 2020-12), when it publishes one (the built-ins do). */
|
|
469
|
+
readonly configSchema?: Readonly<Record<string, unknown>>;
|
|
470
|
+
/**
|
|
471
|
+
* Every way a guardrail's `config` doesn't fit this check, as an API answer's issues (paths
|
|
472
|
+
* under `/config`): what registration refuses up front. `validateConfig` words the first.
|
|
473
|
+
*/
|
|
474
|
+
readonly configProblems?: (config: unknown) => readonly GuardrailConfigProblem[];
|
|
459
475
|
}
|
|
460
476
|
|
|
461
477
|
/**
|