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.
Files changed (94) hide show
  1. package/README.md +291 -0
  2. package/dist/__tests__/create-guard.test.d.ts +2 -0
  3. package/dist/__tests__/create-guard.test.d.ts.map +1 -0
  4. package/dist/__tests__/create-guard.test.js +101 -0
  5. package/dist/__tests__/create-guard.test.js.map +1 -0
  6. package/dist/__tests__/detection/schema-detection.test.d.ts +2 -0
  7. package/dist/__tests__/detection/schema-detection.test.d.ts.map +1 -0
  8. package/dist/__tests__/detection/schema-detection.test.js +127 -0
  9. package/dist/__tests__/detection/schema-detection.test.js.map +1 -0
  10. package/dist/__tests__/guard.test.d.ts +2 -0
  11. package/dist/__tests__/guard.test.d.ts.map +1 -0
  12. package/dist/__tests__/guard.test.js +155 -0
  13. package/dist/__tests__/guard.test.js.map +1 -0
  14. package/dist/__tests__/types.test.d.ts +2 -0
  15. package/dist/__tests__/types.test.d.ts.map +1 -0
  16. package/dist/__tests__/types.test.js +67 -0
  17. package/dist/__tests__/types.test.js.map +1 -0
  18. package/dist/__tests__/validate.test.d.ts +2 -0
  19. package/dist/__tests__/validate.test.d.ts.map +1 -0
  20. package/dist/__tests__/validate.test.js +67 -0
  21. package/dist/__tests__/validate.test.js.map +1 -0
  22. package/dist/__tests__/validation/json-schema-validator.test.d.ts +2 -0
  23. package/dist/__tests__/validation/json-schema-validator.test.d.ts.map +1 -0
  24. package/dist/__tests__/validation/json-schema-validator.test.js +223 -0
  25. package/dist/__tests__/validation/json-schema-validator.test.js.map +1 -0
  26. package/dist/__tests__/validation/zod-validator.test.d.ts +2 -0
  27. package/dist/__tests__/validation/zod-validator.test.d.ts.map +1 -0
  28. package/dist/__tests__/validation/zod-validator.test.js +118 -0
  29. package/dist/__tests__/validation/zod-validator.test.js.map +1 -0
  30. package/dist/__tests__/violations/violations.test.d.ts +2 -0
  31. package/dist/__tests__/violations/violations.test.d.ts.map +1 -0
  32. package/dist/__tests__/violations/violations.test.js +101 -0
  33. package/dist/__tests__/violations/violations.test.js.map +1 -0
  34. package/dist/create-guard.d.ts +3 -0
  35. package/dist/create-guard.d.ts.map +1 -0
  36. package/dist/create-guard.js +34 -0
  37. package/dist/create-guard.js.map +1 -0
  38. package/dist/detection/index.d.ts +10 -0
  39. package/dist/detection/index.d.ts.map +1 -0
  40. package/dist/detection/index.js +38 -0
  41. package/dist/detection/index.js.map +1 -0
  42. package/dist/detection/json-schema.d.ts +2 -0
  43. package/dist/detection/json-schema.d.ts.map +1 -0
  44. package/dist/detection/json-schema.js +10 -0
  45. package/dist/detection/json-schema.js.map +1 -0
  46. package/dist/detection/typebox.d.ts +2 -0
  47. package/dist/detection/typebox.d.ts.map +1 -0
  48. package/dist/detection/typebox.js +10 -0
  49. package/dist/detection/typebox.js.map +1 -0
  50. package/dist/detection/zod.d.ts +2 -0
  51. package/dist/detection/zod.d.ts.map +1 -0
  52. package/dist/detection/zod.js +11 -0
  53. package/dist/detection/zod.js.map +1 -0
  54. package/dist/guard-tools.d.ts +3 -0
  55. package/dist/guard-tools.d.ts.map +1 -0
  56. package/dist/guard-tools.js +24 -0
  57. package/dist/guard-tools.js.map +1 -0
  58. package/dist/guard.d.ts +3 -0
  59. package/dist/guard.d.ts.map +1 -0
  60. package/dist/guard.js +24 -0
  61. package/dist/guard.js.map +1 -0
  62. package/dist/index.d.ts +11 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +26 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/strategies/index.d.ts +4 -0
  67. package/dist/strategies/index.d.ts.map +1 -0
  68. package/dist/strategies/index.js +154 -0
  69. package/dist/strategies/index.js.map +1 -0
  70. package/dist/types.d.ts +67 -0
  71. package/dist/types.d.ts.map +1 -0
  72. package/dist/types.js +17 -0
  73. package/dist/types.js.map +1 -0
  74. package/dist/validate.d.ts +3 -0
  75. package/dist/validate.d.ts.map +1 -0
  76. package/dist/validate.js +9 -0
  77. package/dist/validate.js.map +1 -0
  78. package/dist/validation/index.d.ts +3 -0
  79. package/dist/validation/index.d.ts.map +1 -0
  80. package/dist/validation/index.js +21 -0
  81. package/dist/validation/index.js.map +1 -0
  82. package/dist/validation/json-schema-validator.d.ts +6 -0
  83. package/dist/validation/json-schema-validator.d.ts.map +1 -0
  84. package/dist/validation/json-schema-validator.js +195 -0
  85. package/dist/validation/json-schema-validator.js.map +1 -0
  86. package/dist/validation/zod-validator.d.ts +3 -0
  87. package/dist/validation/zod-validator.d.ts.map +1 -0
  88. package/dist/validation/zod-validator.js +64 -0
  89. package/dist/validation/zod-validator.js.map +1 -0
  90. package/dist/violations/index.d.ts +6 -0
  91. package/dist/violations/index.d.ts.map +1 -0
  92. package/dist/violations/index.js +69 -0
  93. package/dist/violations/index.js.map +1 -0
  94. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=violations.test.d.ts.map
@@ -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,3 @@
1
+ import type { Guard, GuardOptions } from './types';
2
+ export declare function createGuard<T>(schema: unknown, options?: GuardOptions<T>): Guard<T>;
3
+ //# sourceMappingURL=create-guard.d.ts.map
@@ -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,2 @@
1
+ export declare function isJSONSchema(schema: unknown): boolean;
2
+ //# sourceMappingURL=json-schema.d.ts.map
@@ -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,2 @@
1
+ export declare function isTypeBoxSchema(schema: unknown): boolean;
2
+ //# sourceMappingURL=typebox.d.ts.map
@@ -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,2 @@
1
+ export declare function isZodSchema(schema: unknown): boolean;
2
+ //# sourceMappingURL=zod.d.ts.map
@@ -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"}
@@ -0,0 +1,3 @@
1
+ import type { GuardOptions } from './types';
2
+ export declare function guard<T>(toolFn: (...args: unknown[]) => Promise<unknown>, schema: unknown, options?: GuardOptions<T>): (...args: unknown[]) => Promise<T>;
3
+ //# sourceMappingURL=guard.d.ts.map
@@ -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"}
@@ -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"}