tool-output-guard 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +291 -0
- package/dist/__tests__/create-guard.test.d.ts +2 -0
- package/dist/__tests__/create-guard.test.d.ts.map +1 -0
- package/dist/__tests__/create-guard.test.js +101 -0
- package/dist/__tests__/create-guard.test.js.map +1 -0
- package/dist/__tests__/detection/schema-detection.test.d.ts +2 -0
- package/dist/__tests__/detection/schema-detection.test.d.ts.map +1 -0
- package/dist/__tests__/detection/schema-detection.test.js +127 -0
- package/dist/__tests__/detection/schema-detection.test.js.map +1 -0
- package/dist/__tests__/guard.test.d.ts +2 -0
- package/dist/__tests__/guard.test.d.ts.map +1 -0
- package/dist/__tests__/guard.test.js +155 -0
- package/dist/__tests__/guard.test.js.map +1 -0
- package/dist/__tests__/types.test.d.ts +2 -0
- package/dist/__tests__/types.test.d.ts.map +1 -0
- package/dist/__tests__/types.test.js +67 -0
- package/dist/__tests__/types.test.js.map +1 -0
- package/dist/__tests__/validate.test.d.ts +2 -0
- package/dist/__tests__/validate.test.d.ts.map +1 -0
- package/dist/__tests__/validate.test.js +67 -0
- package/dist/__tests__/validate.test.js.map +1 -0
- package/dist/__tests__/validation/json-schema-validator.test.d.ts +2 -0
- package/dist/__tests__/validation/json-schema-validator.test.d.ts.map +1 -0
- package/dist/__tests__/validation/json-schema-validator.test.js +223 -0
- package/dist/__tests__/validation/json-schema-validator.test.js.map +1 -0
- package/dist/__tests__/validation/zod-validator.test.d.ts +2 -0
- package/dist/__tests__/validation/zod-validator.test.d.ts.map +1 -0
- package/dist/__tests__/validation/zod-validator.test.js +118 -0
- package/dist/__tests__/validation/zod-validator.test.js.map +1 -0
- package/dist/__tests__/violations/violations.test.d.ts +2 -0
- package/dist/__tests__/violations/violations.test.d.ts.map +1 -0
- package/dist/__tests__/violations/violations.test.js +101 -0
- package/dist/__tests__/violations/violations.test.js.map +1 -0
- package/dist/create-guard.d.ts +3 -0
- package/dist/create-guard.d.ts.map +1 -0
- package/dist/create-guard.js +34 -0
- package/dist/create-guard.js.map +1 -0
- package/dist/detection/index.d.ts +10 -0
- package/dist/detection/index.d.ts.map +1 -0
- package/dist/detection/index.js +38 -0
- package/dist/detection/index.js.map +1 -0
- package/dist/detection/json-schema.d.ts +2 -0
- package/dist/detection/json-schema.d.ts.map +1 -0
- package/dist/detection/json-schema.js +10 -0
- package/dist/detection/json-schema.js.map +1 -0
- package/dist/detection/typebox.d.ts +2 -0
- package/dist/detection/typebox.d.ts.map +1 -0
- package/dist/detection/typebox.js +10 -0
- package/dist/detection/typebox.js.map +1 -0
- package/dist/detection/zod.d.ts +2 -0
- package/dist/detection/zod.d.ts.map +1 -0
- package/dist/detection/zod.js +11 -0
- package/dist/detection/zod.js.map +1 -0
- package/dist/guard-tools.d.ts +3 -0
- package/dist/guard-tools.d.ts.map +1 -0
- package/dist/guard-tools.js +24 -0
- package/dist/guard-tools.js.map +1 -0
- package/dist/guard.d.ts +3 -0
- package/dist/guard.d.ts.map +1 -0
- package/dist/guard.js +24 -0
- package/dist/guard.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/strategies/index.d.ts +4 -0
- package/dist/strategies/index.d.ts.map +1 -0
- package/dist/strategies/index.js +154 -0
- package/dist/strategies/index.js.map +1 -0
- package/dist/types.d.ts +67 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +3 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +9 -0
- package/dist/validate.js.map +1 -0
- package/dist/validation/index.d.ts +3 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +21 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/json-schema-validator.d.ts +6 -0
- package/dist/validation/json-schema-validator.d.ts.map +1 -0
- package/dist/validation/json-schema-validator.js +195 -0
- package/dist/validation/json-schema-validator.js.map +1 -0
- package/dist/validation/zod-validator.d.ts +3 -0
- package/dist/validation/zod-validator.d.ts.map +1 -0
- package/dist/validation/zod-validator.js +64 -0
- package/dist/validation/zod-validator.js.map +1 -0
- package/dist/violations/index.d.ts +6 -0
- package/dist/violations/index.d.ts.map +1 -0
- package/dist/violations/index.js +69 -0
- package/dist/violations/index.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const zod_validator_1 = require("../../validation/zod-validator");
|
|
6
|
+
const UserSchema = zod_1.z.object({
|
|
7
|
+
name: zod_1.z.string(),
|
|
8
|
+
age: zod_1.z.number(),
|
|
9
|
+
email: zod_1.z.string().email().optional(),
|
|
10
|
+
});
|
|
11
|
+
(0, vitest_1.describe)('validateWithZod', () => {
|
|
12
|
+
(0, vitest_1.it)('returns success: true for valid data', () => {
|
|
13
|
+
const result = (0, zod_validator_1.validateWithZod)({ name: 'Alice', age: 30 }, UserSchema);
|
|
14
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
15
|
+
if (result.success) {
|
|
16
|
+
(0, vitest_1.expect)(result.data).toEqual({ name: 'Alice', age: 30 });
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('returns success: true with warnings: [] for valid data', () => {
|
|
20
|
+
const result = (0, zod_validator_1.validateWithZod)({ name: 'Bob', age: 25 }, UserSchema);
|
|
21
|
+
(0, vitest_1.expect)(result.success).toBe(true);
|
|
22
|
+
if (result.success) {
|
|
23
|
+
(0, vitest_1.expect)(result.warnings).toEqual([]);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
(0, vitest_1.it)('returns success: false for wrong type', () => {
|
|
27
|
+
const result = (0, zod_validator_1.validateWithZod)({ name: 42, age: 30 }, UserSchema);
|
|
28
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
29
|
+
if (!result.success) {
|
|
30
|
+
(0, vitest_1.expect)(result.violations.length).toBeGreaterThan(0);
|
|
31
|
+
const v = result.violations[0];
|
|
32
|
+
(0, vitest_1.expect)(v.code).toBe('WRONG_TYPE');
|
|
33
|
+
(0, vitest_1.expect)(v.path).toContain('name');
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.it)('returns success: false for missing required field', () => {
|
|
37
|
+
const result = (0, zod_validator_1.validateWithZod)({ age: 30 }, UserSchema);
|
|
38
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
39
|
+
if (!result.success) {
|
|
40
|
+
(0, vitest_1.expect)(result.violations.length).toBeGreaterThan(0);
|
|
41
|
+
const nameMissing = result.violations.find((v) => v.path.includes('name'));
|
|
42
|
+
(0, vitest_1.expect)(nameMissing).toBeDefined();
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
(0, vitest_1.it)('maps path correctly for nested schema', () => {
|
|
46
|
+
const schema = zod_1.z.object({ user: zod_1.z.object({ name: zod_1.z.string() }) });
|
|
47
|
+
const result = (0, zod_validator_1.validateWithZod)({ user: { name: 42 } }, schema);
|
|
48
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
49
|
+
if (!result.success) {
|
|
50
|
+
const v = result.violations[0];
|
|
51
|
+
(0, vitest_1.expect)(v.path).toContain('user');
|
|
52
|
+
(0, vitest_1.expect)(v.path).toContain('name');
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
(0, vitest_1.it)('handles enum mismatch', () => {
|
|
56
|
+
const schema = zod_1.z.object({ status: zod_1.z.enum(['active', 'inactive']) });
|
|
57
|
+
const result = (0, zod_validator_1.validateWithZod)({ status: 'pending' }, schema);
|
|
58
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
59
|
+
if (!result.success) {
|
|
60
|
+
const v = result.violations[0];
|
|
61
|
+
(0, vitest_1.expect)(v.code).toBe('ENUM_MISMATCH');
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.it)('handles number constraint violation (too_big)', () => {
|
|
65
|
+
const schema = zod_1.z.object({ score: zod_1.z.number().max(100) });
|
|
66
|
+
const result = (0, zod_validator_1.validateWithZod)({ score: 150 }, schema);
|
|
67
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
68
|
+
if (!result.success) {
|
|
69
|
+
const v = result.violations[0];
|
|
70
|
+
(0, vitest_1.expect)(v.code).toBe('CONSTRAINT_VIOLATION');
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
(0, vitest_1.it)('handles number constraint violation (too_small)', () => {
|
|
74
|
+
const schema = zod_1.z.object({ score: zod_1.z.number().min(0) });
|
|
75
|
+
const result = (0, zod_validator_1.validateWithZod)({ score: -5 }, schema);
|
|
76
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
77
|
+
if (!result.success) {
|
|
78
|
+
const v = result.violations[0];
|
|
79
|
+
(0, vitest_1.expect)(v.code).toBe('CONSTRAINT_VIOLATION');
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
(0, vitest_1.it)('handles string pattern mismatch', () => {
|
|
83
|
+
const schema = zod_1.z.object({ code: zod_1.z.string().regex(/^[A-Z]+$/) });
|
|
84
|
+
const result = (0, zod_validator_1.validateWithZod)({ code: 'abc123' }, schema);
|
|
85
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
86
|
+
if (!result.success) {
|
|
87
|
+
const v = result.violations[0];
|
|
88
|
+
(0, vitest_1.expect)(v.code).toBe('PATTERN_MISMATCH');
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
(0, vitest_1.it)('handles array path index', () => {
|
|
92
|
+
const schema = zod_1.z.object({ items: zod_1.z.array(zod_1.z.string()) });
|
|
93
|
+
const result = (0, zod_validator_1.validateWithZod)({ items: ['a', 42, 'c'] }, schema);
|
|
94
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
95
|
+
if (!result.success) {
|
|
96
|
+
const v = result.violations[0];
|
|
97
|
+
(0, vitest_1.expect)(v.path).toContain('[1]');
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
(0, vitest_1.it)('collects multiple violations', () => {
|
|
101
|
+
const result = (0, zod_validator_1.validateWithZod)({ name: 42, age: 'old' }, UserSchema);
|
|
102
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
103
|
+
if (!result.success) {
|
|
104
|
+
(0, vitest_1.expect)(result.violations.length).toBeGreaterThanOrEqual(2);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
(0, vitest_1.it)('violations have non-empty messages', () => {
|
|
108
|
+
const result = (0, zod_validator_1.validateWithZod)({}, UserSchema);
|
|
109
|
+
(0, vitest_1.expect)(result.success).toBe(false);
|
|
110
|
+
if (!result.success) {
|
|
111
|
+
for (const v of result.violations) {
|
|
112
|
+
(0, vitest_1.expect)(v.message.length).toBeGreaterThan(0);
|
|
113
|
+
(0, vitest_1.expect)(v.llmMessage.length).toBeGreaterThan(0);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=zod-validator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-validator.test.js","sourceRoot":"","sources":["../../../src/__tests__/validation/zod-validator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"violations.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/violations/violations.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const index_1 = require("../../violations/index");
|
|
5
|
+
(0, vitest_1.describe)('buildPath', () => {
|
|
6
|
+
(0, vitest_1.it)('returns $ for empty parts', () => {
|
|
7
|
+
(0, vitest_1.expect)((0, index_1.buildPath)([])).toBe('$');
|
|
8
|
+
});
|
|
9
|
+
(0, vitest_1.it)('formats a single string key', () => {
|
|
10
|
+
(0, vitest_1.expect)((0, index_1.buildPath)(['name'])).toBe('$.name');
|
|
11
|
+
});
|
|
12
|
+
(0, vitest_1.it)('formats a numeric index', () => {
|
|
13
|
+
(0, vitest_1.expect)((0, index_1.buildPath)([0])).toBe('$[0]');
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.it)('formats nested object path', () => {
|
|
16
|
+
(0, vitest_1.expect)((0, index_1.buildPath)(['user', 'address', 'street'])).toBe('$.user.address.street');
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.it)('formats mixed path with array index', () => {
|
|
19
|
+
(0, vitest_1.expect)((0, index_1.buildPath)(['items', 0, 'name'])).toBe('$.items[0].name');
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.it)('formats deep nested path', () => {
|
|
22
|
+
(0, vitest_1.expect)((0, index_1.buildPath)(['a', 'b', 2, 'c'])).toBe('$.a.b[2].c');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.describe)('buildViolation', () => {
|
|
26
|
+
(0, vitest_1.it)('builds a violation with all required fields', () => {
|
|
27
|
+
const v = (0, index_1.buildViolation)('WRONG_TYPE', '$.name', 'Expected string, got number', 'number', 'string');
|
|
28
|
+
(0, vitest_1.expect)(v.code).toBe('WRONG_TYPE');
|
|
29
|
+
(0, vitest_1.expect)(v.path).toBe('$.name');
|
|
30
|
+
(0, vitest_1.expect)(v.message).toBe('Expected string, got number');
|
|
31
|
+
(0, vitest_1.expect)(v.received).toBe('number');
|
|
32
|
+
(0, vitest_1.expect)(v.expected).toBe('string');
|
|
33
|
+
(0, vitest_1.expect)(v.severity).toBe('error');
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.it)('defaults severity to error', () => {
|
|
36
|
+
const v = (0, index_1.buildViolation)('MISSING_REQUIRED', '$.field', 'Missing field');
|
|
37
|
+
(0, vitest_1.expect)(v.severity).toBe('error');
|
|
38
|
+
});
|
|
39
|
+
(0, vitest_1.it)('accepts warning severity', () => {
|
|
40
|
+
const v = (0, index_1.buildViolation)('COERCED', '$.field', 'Coerced value', 'string', 'number', 'warning');
|
|
41
|
+
(0, vitest_1.expect)(v.severity).toBe('warning');
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)('stores receivedValue and coercedValue', () => {
|
|
44
|
+
const v = (0, index_1.buildViolation)('COERCED', '$.x', 'Coerced', 'string', 'number', 'warning', '42', 42);
|
|
45
|
+
(0, vitest_1.expect)(v.receivedValue).toBe('42');
|
|
46
|
+
(0, vitest_1.expect)(v.coercedValue).toBe(42);
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.it)('generates a non-empty llmMessage', () => {
|
|
49
|
+
const v = (0, index_1.buildViolation)('WRONG_TYPE', '$.name', 'Expected string', 'number', 'string');
|
|
50
|
+
(0, vitest_1.expect)(typeof v.llmMessage).toBe('string');
|
|
51
|
+
(0, vitest_1.expect)(v.llmMessage.length).toBeGreaterThan(0);
|
|
52
|
+
});
|
|
53
|
+
(0, vitest_1.it)('llmMessage references the path', () => {
|
|
54
|
+
const v = (0, index_1.buildViolation)('MISSING_REQUIRED', '$.address', 'Missing field');
|
|
55
|
+
(0, vitest_1.expect)(v.llmMessage).toContain('$.address');
|
|
56
|
+
});
|
|
57
|
+
(0, vitest_1.it)('handles ENUM_MISMATCH code', () => {
|
|
58
|
+
const v = (0, index_1.buildViolation)('ENUM_MISMATCH', '$.status', 'Invalid enum', 'pending', 'active | inactive');
|
|
59
|
+
(0, vitest_1.expect)(v.code).toBe('ENUM_MISMATCH');
|
|
60
|
+
(0, vitest_1.expect)(v.llmMessage).toContain('active | inactive');
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.describe)('formatViolationMessage', () => {
|
|
64
|
+
(0, vitest_1.it)('includes severity, path, code, and message', () => {
|
|
65
|
+
const v = (0, index_1.buildViolation)('WRONG_TYPE', '$.name', 'Expected string, got number', 'number', 'string');
|
|
66
|
+
const msg = (0, index_1.formatViolationMessage)(v);
|
|
67
|
+
(0, vitest_1.expect)(msg).toContain('[ERROR]');
|
|
68
|
+
(0, vitest_1.expect)(msg).toContain('$.name');
|
|
69
|
+
(0, vitest_1.expect)(msg).toContain('WRONG_TYPE');
|
|
70
|
+
(0, vitest_1.expect)(msg).toContain('Expected string, got number');
|
|
71
|
+
});
|
|
72
|
+
(0, vitest_1.it)('uses uppercase severity', () => {
|
|
73
|
+
const v = (0, index_1.buildViolation)('COERCED', '$.x', 'Coerced', 'string', 'number', 'warning');
|
|
74
|
+
(0, vitest_1.expect)((0, index_1.formatViolationMessage)(v)).toContain('[WARNING]');
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.describe)('formatViolationsForLLM', () => {
|
|
78
|
+
(0, vitest_1.it)('returns a no-violation message for empty array', () => {
|
|
79
|
+
(0, vitest_1.expect)((0, index_1.formatViolationsForLLM)([])).toBe('No violations found.');
|
|
80
|
+
});
|
|
81
|
+
(0, vitest_1.it)('includes violation count in the output', () => {
|
|
82
|
+
const violations = [
|
|
83
|
+
(0, index_1.buildViolation)('WRONG_TYPE', '$.a', 'Bad type', 'number', 'string'),
|
|
84
|
+
(0, index_1.buildViolation)('MISSING_REQUIRED', '$.b', 'Missing'),
|
|
85
|
+
];
|
|
86
|
+
const msg = (0, index_1.formatViolationsForLLM)(violations);
|
|
87
|
+
(0, vitest_1.expect)(msg).toContain('2 violation(s)');
|
|
88
|
+
});
|
|
89
|
+
(0, vitest_1.it)('includes each violation llmMessage numbered', () => {
|
|
90
|
+
const v = (0, index_1.buildViolation)('MISSING_REQUIRED', '$.name', 'Missing required field');
|
|
91
|
+
const msg = (0, index_1.formatViolationsForLLM)([v]);
|
|
92
|
+
(0, vitest_1.expect)(msg).toContain('1.');
|
|
93
|
+
(0, vitest_1.expect)(msg).toContain(v.llmMessage);
|
|
94
|
+
});
|
|
95
|
+
(0, vitest_1.it)('ends with a fix suggestion', () => {
|
|
96
|
+
const v = (0, index_1.buildViolation)('WRONG_TYPE', '$.x', 'Bad', 'string', 'number');
|
|
97
|
+
const msg = (0, index_1.formatViolationsForLLM)([v]);
|
|
98
|
+
(0, vitest_1.expect)(msg).toContain('Please fix');
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=violations.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"violations.test.js","sourceRoot":"","sources":["../../../src/__tests__/violations/violations.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-guard.d.ts","sourceRoot":"","sources":["../src/create-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAoB,MAAM,SAAS,CAAC;AAIrE,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAkCnF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGuard = createGuard;
|
|
4
|
+
const index_1 = require("./validation/index");
|
|
5
|
+
const index_2 = require("./strategies/index");
|
|
6
|
+
function createGuard(schema, options) {
|
|
7
|
+
function validate(value) {
|
|
8
|
+
return (0, index_1.validateOutput)(value, schema);
|
|
9
|
+
}
|
|
10
|
+
function wrap(toolFn) {
|
|
11
|
+
return async (args) => {
|
|
12
|
+
const raw = await toolFn(args);
|
|
13
|
+
const preprocessed = (0, index_2.preprocessForStrategy)(raw, schema, options ?? {});
|
|
14
|
+
const result = (0, index_1.validateOutput)(preprocessed, schema);
|
|
15
|
+
if (result.success) {
|
|
16
|
+
if (options?.onValidationPass) {
|
|
17
|
+
options.onValidationPass(result.data);
|
|
18
|
+
}
|
|
19
|
+
return result.data;
|
|
20
|
+
}
|
|
21
|
+
if (options?.onValidationFail) {
|
|
22
|
+
options.onValidationFail(result.violations);
|
|
23
|
+
}
|
|
24
|
+
return (0, index_2.applyStrategy)(result, preprocessed, schema, options ?? {});
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
validate,
|
|
29
|
+
wrap,
|
|
30
|
+
schema,
|
|
31
|
+
options: options ?? {},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=create-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-guard.js","sourceRoot":"","sources":["../src/create-guard.ts"],"names":[],"mappings":";;AAIA,kCAkCC;AArCD,8CAAoD;AACpD,8CAA0E;AAE1E,SAAgB,WAAW,CAAI,MAAe,EAAE,OAAyB;IACvE,SAAS,QAAQ,CAAC,KAAc;QAC9B,OAAO,IAAA,sBAAc,EAAI,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,IAAI,CACX,MAAyC;QAEzC,OAAO,KAAK,EAAE,IAAW,EAAc,EAAE;YACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,GAAG,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAI,YAAY,EAAE,MAAM,CAAC,CAAC;YAEvD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;oBAC9B,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;YAED,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;gBAC9B,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC9C,CAAC;YAED,OAAO,IAAA,qBAAa,EAAI,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,MAAM;QACN,OAAO,EAAE,OAAO,IAAI,EAAE;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type SchemaType = 'zod' | 'typebox' | 'json-schema';
|
|
2
|
+
export interface DetectedSchema {
|
|
3
|
+
type: SchemaType;
|
|
4
|
+
schema: unknown;
|
|
5
|
+
}
|
|
6
|
+
export declare function detectSchema(schema: unknown): DetectedSchema;
|
|
7
|
+
export { isZodSchema } from './zod';
|
|
8
|
+
export { isTypeBoxSchema } from './typebox';
|
|
9
|
+
export { isJSONSchema } from './json-schema';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,aAAa,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAID,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAoB5D;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isJSONSchema = exports.isTypeBoxSchema = exports.isZodSchema = void 0;
|
|
4
|
+
exports.detectSchema = detectSchema;
|
|
5
|
+
const zod_1 = require("./zod");
|
|
6
|
+
const typebox_1 = require("./typebox");
|
|
7
|
+
const json_schema_1 = require("./json-schema");
|
|
8
|
+
const cache = new WeakMap();
|
|
9
|
+
function detectSchema(schema) {
|
|
10
|
+
if (typeof schema !== 'object' || schema === null) {
|
|
11
|
+
throw new TypeError('Cannot detect schema type: schema must be a non-null object');
|
|
12
|
+
}
|
|
13
|
+
const cached = cache.get(schema);
|
|
14
|
+
if (cached)
|
|
15
|
+
return cached;
|
|
16
|
+
let result;
|
|
17
|
+
if ((0, zod_1.isZodSchema)(schema)) {
|
|
18
|
+
result = { type: 'zod', schema };
|
|
19
|
+
}
|
|
20
|
+
else if ((0, typebox_1.isTypeBoxSchema)(schema)) {
|
|
21
|
+
result = { type: 'typebox', schema };
|
|
22
|
+
}
|
|
23
|
+
else if ((0, json_schema_1.isJSONSchema)(schema)) {
|
|
24
|
+
result = { type: 'json-schema', schema };
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
throw new TypeError('Cannot detect schema type: schema does not match Zod, TypeBox, or JSON Schema format');
|
|
28
|
+
}
|
|
29
|
+
cache.set(schema, result);
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
var zod_2 = require("./zod");
|
|
33
|
+
Object.defineProperty(exports, "isZodSchema", { enumerable: true, get: function () { return zod_2.isZodSchema; } });
|
|
34
|
+
var typebox_2 = require("./typebox");
|
|
35
|
+
Object.defineProperty(exports, "isTypeBoxSchema", { enumerable: true, get: function () { return typebox_2.isTypeBoxSchema; } });
|
|
36
|
+
var json_schema_2 = require("./json-schema");
|
|
37
|
+
Object.defineProperty(exports, "isJSONSchema", { enumerable: true, get: function () { return json_schema_2.isJSONSchema; } });
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":";;;AAaA,oCAoBC;AAjCD,+BAAoC;AACpC,uCAA4C;AAC5C,+CAA6C;AAS7C,MAAM,KAAK,GAAG,IAAI,OAAO,EAA0B,CAAC;AAEpD,SAAgB,YAAY,CAAC,MAAe;IAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAgB,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,IAAI,MAAsB,CAAC;IAC3B,IAAI,IAAA,iBAAW,EAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC;SAAM,IAAI,IAAA,yBAAe,EAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACvC,CAAC;SAAM,IAAI,IAAA,0BAAY,EAAC,MAAM,CAAC,EAAE,CAAC;QAChC,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,SAAS,CAAC,sFAAsF,CAAC,CAAC;IAC9G,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAgB,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6BAAoC;AAA3B,kGAAA,WAAW,OAAA;AACpB,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AACxB,6CAA6C;AAApC,2GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../src/detection/json-schema.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAIrD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isJSONSchema = isJSONSchema;
|
|
4
|
+
function isJSONSchema(schema) {
|
|
5
|
+
if (typeof schema !== 'object' || schema === null)
|
|
6
|
+
return false;
|
|
7
|
+
const s = schema;
|
|
8
|
+
return '$schema' in s || 'type' in s || 'properties' in s || 'items' in s || 'allOf' in s || 'anyOf' in s || 'oneOf' in s;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=json-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../../src/detection/json-schema.ts"],"names":[],"mappings":";;AAAA,oCAIC;AAJD,SAAgB,YAAY,CAAC,MAAe;IAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,CAAC,GAAG,MAAiC,CAAC;IAC5C,OAAO,SAAS,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;AAC5H,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typebox.d.ts","sourceRoot":"","sources":["../../src/detection/typebox.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAMxD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTypeBoxSchema = isTypeBoxSchema;
|
|
4
|
+
const TypeBoxKind = Symbol.for('TypeBox.Kind');
|
|
5
|
+
function isTypeBoxSchema(schema) {
|
|
6
|
+
return (typeof schema === 'object' &&
|
|
7
|
+
schema !== null &&
|
|
8
|
+
TypeBoxKind in schema);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=typebox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typebox.js","sourceRoot":"","sources":["../../src/detection/typebox.ts"],"names":[],"mappings":";;AAEA,0CAMC;AARD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAE/C,SAAgB,eAAe,CAAC,MAAe;IAC7C,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,WAAW,IAAK,MAAiB,CAClC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/detection/zod.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAQpD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isZodSchema = isZodSchema;
|
|
4
|
+
function isZodSchema(schema) {
|
|
5
|
+
return (typeof schema === 'object' &&
|
|
6
|
+
schema !== null &&
|
|
7
|
+
'_def' in schema &&
|
|
8
|
+
'safeParse' in schema &&
|
|
9
|
+
typeof schema.safeParse === 'function');
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=zod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../../src/detection/zod.ts"],"names":[],"mappings":";;AAAA,kCAQC;AARD,SAAgB,WAAW,CAAC,MAAe;IACzC,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,MAAM,IAAI,MAAM;QAChB,WAAW,IAAI,MAAM;QACrB,OAAQ,MAAkC,CAAC,SAAS,KAAK,UAAU,CACpE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { GuardToolsOptions } from './types';
|
|
2
|
+
export declare function guardTools<T extends Record<string, unknown>>(toolMap: Record<string, (...args: unknown[]) => Promise<unknown>>, schemaMap: Record<string, unknown>, options?: GuardToolsOptions<T>): Record<string, (...args: unknown[]) => Promise<unknown>>;
|
|
3
|
+
//# sourceMappingURL=guard-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-tools.d.ts","sourceRoot":"","sources":["../src/guard-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGjD,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,EACjE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAsB1D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.guardTools = guardTools;
|
|
4
|
+
const guard_1 = require("./guard");
|
|
5
|
+
function guardTools(toolMap, schemaMap, options) {
|
|
6
|
+
const result = {};
|
|
7
|
+
for (const [toolName, toolFn] of Object.entries(toolMap)) {
|
|
8
|
+
const schema = schemaMap[toolName];
|
|
9
|
+
if (!schema) {
|
|
10
|
+
// No schema for this tool — pass through unchanged
|
|
11
|
+
result[toolName] = toolFn;
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
const toolSpecificOptions = options?.toolOptions?.[toolName];
|
|
15
|
+
const mergedOptions = {
|
|
16
|
+
...options,
|
|
17
|
+
...toolSpecificOptions,
|
|
18
|
+
toolName,
|
|
19
|
+
};
|
|
20
|
+
result[toolName] = (0, guard_1.guard)(toolFn, schema, mergedOptions);
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=guard-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-tools.js","sourceRoot":"","sources":["../src/guard-tools.ts"],"names":[],"mappings":";;AAGA,gCA0BC;AA5BD,mCAAgC;AAEhC,SAAgB,UAAU,CACxB,OAAiE,EACjE,SAAkC,EAClC,OAA8B;IAE9B,MAAM,MAAM,GAA6D,EAAE,CAAC;IAE5E,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,mDAAmD;YACnD,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,mBAAmB,GAAG,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG;YACpB,GAAG,OAAO;YACV,GAAG,mBAAmB;YACtB,QAAQ;SACT,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,aAAK,EAAC,MAAM,EAAE,MAAM,EAAE,aAA2C,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/guard.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,wBAAgB,KAAK,CAAC,CAAC,EACrB,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAChD,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACxB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAoBpC"}
|
package/dist/guard.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.guard = guard;
|
|
4
|
+
const index_1 = require("./validation/index");
|
|
5
|
+
const index_2 = require("./strategies/index");
|
|
6
|
+
function guard(toolFn, schema, options) {
|
|
7
|
+
return async (...args) => {
|
|
8
|
+
const raw = await toolFn(...args);
|
|
9
|
+
// Some strategies (strip-extra) preprocess the output before validation
|
|
10
|
+
const preprocessed = (0, index_2.preprocessForStrategy)(raw, schema, options ?? {});
|
|
11
|
+
const result = (0, index_1.validateOutput)(preprocessed, schema);
|
|
12
|
+
if (result.success) {
|
|
13
|
+
if (options?.onValidationPass) {
|
|
14
|
+
options.onValidationPass(result.data);
|
|
15
|
+
}
|
|
16
|
+
return result.data;
|
|
17
|
+
}
|
|
18
|
+
if (options?.onValidationFail) {
|
|
19
|
+
options.onValidationFail(result.violations);
|
|
20
|
+
}
|
|
21
|
+
return (0, index_2.applyStrategy)(result, preprocessed, schema, options ?? {});
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":";;AAIA,sBAwBC;AA3BD,8CAAoD;AACpD,8CAA0E;AAE1E,SAAgB,KAAK,CACnB,MAAgD,EAChD,MAAe,EACf,OAAyB;IAEzB,OAAO,KAAK,EAAE,GAAG,IAAe,EAAc,EAAE;QAC9C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QAClC,wEAAwE;QACxE,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,GAAG,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAI,YAAY,EAAE,MAAM,CAAC,CAAC;QAEvD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;gBAC9B,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;YAC9B,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAA,qBAAa,EAAI,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { ViolationSeverity, ViolationCode, Violation, ValidationResult, LLMValidationError, FailureStrategy, CoercionConfig, GuardOptions, Guard, GuardToolsOptions, } from './types';
|
|
2
|
+
export { ValidationError } from './types';
|
|
3
|
+
export { detectSchema, isZodSchema, isTypeBoxSchema, isJSONSchema } from './detection/index';
|
|
4
|
+
export type { SchemaType, DetectedSchema } from './detection/index';
|
|
5
|
+
export { guard } from './guard';
|
|
6
|
+
export { validate } from './validate';
|
|
7
|
+
export { createGuard } from './create-guard';
|
|
8
|
+
export { guardTools } from './guard-tools';
|
|
9
|
+
export { validateOutput } from './validation/index';
|
|
10
|
+
export { buildViolation, buildPath, formatViolationMessage, formatViolationsForLLM, } from './violations/index';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAC7D,kBAAkB,EAAE,eAAe,EAAE,cAAc,EACnD,YAAY,EAAE,KAAK,EAAE,iBAAiB,GACvC,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7F,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,SAAS,EACT,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatViolationsForLLM = exports.formatViolationMessage = exports.buildPath = exports.buildViolation = exports.validateOutput = exports.guardTools = exports.createGuard = exports.validate = exports.guard = exports.isJSONSchema = exports.isTypeBoxSchema = exports.isZodSchema = exports.detectSchema = exports.ValidationError = void 0;
|
|
4
|
+
var types_1 = require("./types");
|
|
5
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return types_1.ValidationError; } });
|
|
6
|
+
var index_1 = require("./detection/index");
|
|
7
|
+
Object.defineProperty(exports, "detectSchema", { enumerable: true, get: function () { return index_1.detectSchema; } });
|
|
8
|
+
Object.defineProperty(exports, "isZodSchema", { enumerable: true, get: function () { return index_1.isZodSchema; } });
|
|
9
|
+
Object.defineProperty(exports, "isTypeBoxSchema", { enumerable: true, get: function () { return index_1.isTypeBoxSchema; } });
|
|
10
|
+
Object.defineProperty(exports, "isJSONSchema", { enumerable: true, get: function () { return index_1.isJSONSchema; } });
|
|
11
|
+
var guard_1 = require("./guard");
|
|
12
|
+
Object.defineProperty(exports, "guard", { enumerable: true, get: function () { return guard_1.guard; } });
|
|
13
|
+
var validate_1 = require("./validate");
|
|
14
|
+
Object.defineProperty(exports, "validate", { enumerable: true, get: function () { return validate_1.validate; } });
|
|
15
|
+
var create_guard_1 = require("./create-guard");
|
|
16
|
+
Object.defineProperty(exports, "createGuard", { enumerable: true, get: function () { return create_guard_1.createGuard; } });
|
|
17
|
+
var guard_tools_1 = require("./guard-tools");
|
|
18
|
+
Object.defineProperty(exports, "guardTools", { enumerable: true, get: function () { return guard_tools_1.guardTools; } });
|
|
19
|
+
var index_2 = require("./validation/index");
|
|
20
|
+
Object.defineProperty(exports, "validateOutput", { enumerable: true, get: function () { return index_2.validateOutput; } });
|
|
21
|
+
var index_3 = require("./violations/index");
|
|
22
|
+
Object.defineProperty(exports, "buildViolation", { enumerable: true, get: function () { return index_3.buildViolation; } });
|
|
23
|
+
Object.defineProperty(exports, "buildPath", { enumerable: true, get: function () { return index_3.buildPath; } });
|
|
24
|
+
Object.defineProperty(exports, "formatViolationMessage", { enumerable: true, get: function () { return index_3.formatViolationMessage; } });
|
|
25
|
+
Object.defineProperty(exports, "formatViolationsForLLM", { enumerable: true, get: function () { return index_3.formatViolationsForLLM; } });
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAKA,iCAA0C;AAAjC,wGAAA,eAAe,OAAA;AACxB,2CAA6F;AAApF,qGAAA,YAAY,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,wGAAA,eAAe,OAAA;AAAE,qGAAA,YAAY,OAAA;AAGjE,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,4CAAoD;AAA3C,uGAAA,cAAc,OAAA;AACvB,4CAK4B;AAJ1B,uGAAA,cAAc,OAAA;AACd,kGAAA,SAAS,OAAA;AACT,+GAAA,sBAAsB,OAAA;AACtB,+GAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GuardOptions, ValidationResult } from '../types';
|
|
2
|
+
export declare function preprocessForStrategy<T>(output: unknown, schema: unknown, options: GuardOptions<T>): unknown;
|
|
3
|
+
export declare function applyStrategy<T>(validationResult: ValidationResult<T>, output: unknown, schema: unknown, options: GuardOptions<T>): T;
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/strategies/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,YAAY,EAAE,gBAAgB,EAAa,MAAM,UAAU,CAAC;AAkJ3F,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GACvB,OAAO,CAMT;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GACvB,CAAC,CAuFH"}
|