veto-sdk 1.0.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 +209 -0
- package/dist/benchmark/cli.d.ts +22 -0
- package/dist/benchmark/cli.d.ts.map +1 -0
- package/dist/benchmark/cli.js +238 -0
- package/dist/benchmark/cli.js.map +1 -0
- package/dist/benchmark/index.d.ts +10 -0
- package/dist/benchmark/index.d.ts.map +1 -0
- package/dist/benchmark/index.js +10 -0
- package/dist/benchmark/index.js.map +1 -0
- package/dist/benchmark/loader.d.ts +19 -0
- package/dist/benchmark/loader.d.ts.map +1 -0
- package/dist/benchmark/loader.js +321 -0
- package/dist/benchmark/loader.js.map +1 -0
- package/dist/benchmark/metrics.d.ts +35 -0
- package/dist/benchmark/metrics.d.ts.map +1 -0
- package/dist/benchmark/metrics.js +195 -0
- package/dist/benchmark/metrics.js.map +1 -0
- package/dist/benchmark/runner.d.ts +39 -0
- package/dist/benchmark/runner.d.ts.map +1 -0
- package/dist/benchmark/runner.js +279 -0
- package/dist/benchmark/runner.js.map +1 -0
- package/dist/benchmark/types.d.ts +188 -0
- package/dist/benchmark/types.d.ts.map +1 -0
- package/dist/benchmark/types.js +24 -0
- package/dist/benchmark/types.js.map +1 -0
- package/dist/cli/bin.d.ts +8 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +120 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/config.d.ts +126 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +137 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +64 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +160 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/templates.d.ts +22 -0
- package/dist/cli/templates.d.ts.map +1 -0
- package/dist/cli/templates.js +132 -0
- package/dist/cli/templates.js.map +1 -0
- package/dist/core/history.d.ts +104 -0
- package/dist/core/history.d.ts.map +1 -0
- package/dist/core/history.js +148 -0
- package/dist/core/history.js.map +1 -0
- package/dist/core/index.d.ts +10 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +10 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/interceptor.d.ts +96 -0
- package/dist/core/interceptor.d.ts.map +1 -0
- package/dist/core/interceptor.js +227 -0
- package/dist/core/interceptor.js.map +1 -0
- package/dist/core/validator.d.ts +107 -0
- package/dist/core/validator.d.ts.map +1 -0
- package/dist/core/validator.js +263 -0
- package/dist/core/validator.js.map +1 -0
- package/dist/core/veto.d.ts +265 -0
- package/dist/core/veto.d.ts.map +1 -0
- package/dist/core/veto.js +681 -0
- package/dist/core/veto.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel/client.d.ts +82 -0
- package/dist/kernel/client.d.ts.map +1 -0
- package/dist/kernel/client.js +162 -0
- package/dist/kernel/client.js.map +1 -0
- package/dist/kernel/index.d.ts +9 -0
- package/dist/kernel/index.d.ts.map +1 -0
- package/dist/kernel/index.js +9 -0
- package/dist/kernel/index.js.map +1 -0
- package/dist/kernel/prompt.d.ts +27 -0
- package/dist/kernel/prompt.d.ts.map +1 -0
- package/dist/kernel/prompt.js +127 -0
- package/dist/kernel/prompt.js.map +1 -0
- package/dist/kernel/types.d.ts +85 -0
- package/dist/kernel/types.d.ts.map +1 -0
- package/dist/kernel/types.js +52 -0
- package/dist/kernel/types.js.map +1 -0
- package/dist/providers/adapters.d.ts +167 -0
- package/dist/providers/adapters.d.ts.map +1 -0
- package/dist/providers/adapters.js +244 -0
- package/dist/providers/adapters.js.map +1 -0
- package/dist/providers/index.d.ts +11 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +11 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/types.d.ts +92 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +10 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/rules/api-client.d.ts +103 -0
- package/dist/rules/api-client.d.ts.map +1 -0
- package/dist/rules/api-client.js +241 -0
- package/dist/rules/api-client.js.map +1 -0
- package/dist/rules/index.d.ts +10 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +10 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/loader.d.ts +116 -0
- package/dist/rules/loader.d.ts.map +1 -0
- package/dist/rules/loader.js +300 -0
- package/dist/rules/loader.js.map +1 -0
- package/dist/rules/rule-validator.d.ts +135 -0
- package/dist/rules/rule-validator.d.ts.map +1 -0
- package/dist/rules/rule-validator.js +239 -0
- package/dist/rules/rule-validator.js.map +1 -0
- package/dist/rules/types.d.ts +162 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +16 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/types/config.d.ts +171 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +31 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/tool.d.ts +156 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +27 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/utils/glob.d.ts +21 -0
- package/dist/utils/glob.d.ts.map +1 -0
- package/dist/utils/glob.js +147 -0
- package/dist/utils/glob.js.map +1 -0
- package/dist/utils/id.d.ts +28 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +43 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +97 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +153 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple glob utility for matching files.
|
|
3
|
+
*
|
|
4
|
+
* @module utils/glob
|
|
5
|
+
*/
|
|
6
|
+
import { readdirSync, statSync } from 'node:fs';
|
|
7
|
+
import { join, resolve } from 'node:path';
|
|
8
|
+
/**
|
|
9
|
+
* Simple glob pattern matching.
|
|
10
|
+
* Supports:
|
|
11
|
+
* - ** for recursive directory matching
|
|
12
|
+
* - * for wildcard matching in filenames
|
|
13
|
+
*
|
|
14
|
+
* @param pattern - Glob pattern (e.g., "data/**\/*.jsonl")
|
|
15
|
+
* @param cwd - Working directory (defaults to process.cwd())
|
|
16
|
+
* @returns Array of matching file paths
|
|
17
|
+
*/
|
|
18
|
+
export async function glob(pattern, cwd = process.cwd()) {
|
|
19
|
+
const absolutePattern = resolve(cwd, pattern);
|
|
20
|
+
const parts = absolutePattern.split(/[\\/]/);
|
|
21
|
+
// Find the first part with wildcards
|
|
22
|
+
let baseIndex = 0;
|
|
23
|
+
for (let i = 0; i < parts.length; i++) {
|
|
24
|
+
if (parts[i].includes('*')) {
|
|
25
|
+
baseIndex = i;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
baseIndex = i + 1;
|
|
29
|
+
}
|
|
30
|
+
const basePath = parts.slice(0, baseIndex).join('/') || '/';
|
|
31
|
+
const patternParts = parts.slice(baseIndex);
|
|
32
|
+
if (patternParts.length === 0) {
|
|
33
|
+
// No wildcards, return the path if it exists
|
|
34
|
+
try {
|
|
35
|
+
statSync(absolutePattern);
|
|
36
|
+
return [absolutePattern];
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return matchPattern(basePath, patternParts);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Recursively match pattern parts against directory structure.
|
|
46
|
+
*/
|
|
47
|
+
function matchPattern(currentPath, patternParts) {
|
|
48
|
+
if (patternParts.length === 0) {
|
|
49
|
+
return [currentPath];
|
|
50
|
+
}
|
|
51
|
+
const [currentPattern, ...remainingParts] = patternParts;
|
|
52
|
+
const results = [];
|
|
53
|
+
try {
|
|
54
|
+
const stat = statSync(currentPath);
|
|
55
|
+
if (!stat.isDirectory()) {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
const entries = readdirSync(currentPath);
|
|
63
|
+
if (currentPattern === '**') {
|
|
64
|
+
// Match current directory and all subdirectories
|
|
65
|
+
// First, try matching remaining pattern in current directory
|
|
66
|
+
results.push(...matchPattern(currentPath, remainingParts));
|
|
67
|
+
// Then recurse into subdirectories
|
|
68
|
+
for (const entry of entries) {
|
|
69
|
+
const entryPath = join(currentPath, entry);
|
|
70
|
+
try {
|
|
71
|
+
const stat = statSync(entryPath);
|
|
72
|
+
if (stat.isDirectory()) {
|
|
73
|
+
// Continue with ** pattern in subdirectory
|
|
74
|
+
results.push(...matchPattern(entryPath, patternParts));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Skip inaccessible entries
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// Match current pattern
|
|
84
|
+
const regex = patternToRegex(currentPattern);
|
|
85
|
+
for (const entry of entries) {
|
|
86
|
+
if (regex.test(entry)) {
|
|
87
|
+
const entryPath = join(currentPath, entry);
|
|
88
|
+
if (remainingParts.length === 0) {
|
|
89
|
+
// This is the last pattern part
|
|
90
|
+
results.push(entryPath);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// Continue matching remaining parts
|
|
94
|
+
try {
|
|
95
|
+
const stat = statSync(entryPath);
|
|
96
|
+
if (stat.isDirectory()) {
|
|
97
|
+
results.push(...matchPattern(entryPath, remainingParts));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Skip inaccessible entries
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return results;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Convert glob pattern to regex.
|
|
111
|
+
*/
|
|
112
|
+
function patternToRegex(pattern) {
|
|
113
|
+
const escaped = pattern
|
|
114
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&')
|
|
115
|
+
.replace(/\*/g, '.*')
|
|
116
|
+
.replace(/\?/g, '.');
|
|
117
|
+
return new RegExp(`^${escaped}$`);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Synchronous version of glob.
|
|
121
|
+
*/
|
|
122
|
+
export function globSync(pattern, cwd = process.cwd()) {
|
|
123
|
+
// The async version is actually sync, just return directly
|
|
124
|
+
const absolutePattern = resolve(cwd, pattern);
|
|
125
|
+
const parts = absolutePattern.split(/[\\/]/);
|
|
126
|
+
let baseIndex = 0;
|
|
127
|
+
for (let i = 0; i < parts.length; i++) {
|
|
128
|
+
if (parts[i].includes('*')) {
|
|
129
|
+
baseIndex = i;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
baseIndex = i + 1;
|
|
133
|
+
}
|
|
134
|
+
const basePath = parts.slice(0, baseIndex).join('/') || '/';
|
|
135
|
+
const patternParts = parts.slice(baseIndex);
|
|
136
|
+
if (patternParts.length === 0) {
|
|
137
|
+
try {
|
|
138
|
+
statSync(absolutePattern);
|
|
139
|
+
return [absolutePattern];
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return matchPattern(basePath, patternParts);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=glob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/utils/glob.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID generation utilities for Veto.
|
|
3
|
+
*
|
|
4
|
+
* @module utils/id
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generate a random ID for tool calls.
|
|
8
|
+
*
|
|
9
|
+
* Creates a unique identifier suitable for tracking tool call instances.
|
|
10
|
+
* Uses crypto.randomUUID when available, falls back to a custom implementation.
|
|
11
|
+
*
|
|
12
|
+
* @param prefix - Optional prefix for the ID
|
|
13
|
+
* @returns A unique string ID
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const callId = generateId('call');
|
|
18
|
+
* // Returns something like: 'call_a1b2c3d4e5f6'
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateId(prefix?: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Generate a tool call ID in the format expected by providers.
|
|
24
|
+
*
|
|
25
|
+
* @returns A unique tool call ID
|
|
26
|
+
*/
|
|
27
|
+
export declare function generateToolCallId(): string;
|
|
28
|
+
//# sourceMappingURL=id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,MAAM,SAAS,GAAG,MAAM,CAclD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
|
package/dist/utils/id.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID generation utilities for Veto.
|
|
3
|
+
*
|
|
4
|
+
* @module utils/id
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generate a random ID for tool calls.
|
|
8
|
+
*
|
|
9
|
+
* Creates a unique identifier suitable for tracking tool call instances.
|
|
10
|
+
* Uses crypto.randomUUID when available, falls back to a custom implementation.
|
|
11
|
+
*
|
|
12
|
+
* @param prefix - Optional prefix for the ID
|
|
13
|
+
* @returns A unique string ID
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const callId = generateId('call');
|
|
18
|
+
* // Returns something like: 'call_a1b2c3d4e5f6'
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function generateId(prefix = 'veto') {
|
|
22
|
+
// Use crypto.randomUUID if available (Node 19+, modern browsers)
|
|
23
|
+
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
24
|
+
const uuid = crypto.randomUUID();
|
|
25
|
+
return `${prefix}_${uuid.replace(/-/g, '').slice(0, 12)}`;
|
|
26
|
+
}
|
|
27
|
+
// Fallback for older environments
|
|
28
|
+
const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
29
|
+
let id = '';
|
|
30
|
+
for (let i = 0; i < 12; i++) {
|
|
31
|
+
id += chars.charAt(Math.floor(Math.random() * chars.length));
|
|
32
|
+
}
|
|
33
|
+
return `${prefix}_${id}`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Generate a tool call ID in the format expected by providers.
|
|
37
|
+
*
|
|
38
|
+
* @returns A unique tool call ID
|
|
39
|
+
*/
|
|
40
|
+
export function generateToolCallId() {
|
|
41
|
+
return generateId('call');
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,MAAM,GAAG,MAAM;IACxC,iEAAiE;IACjE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED,kCAAkC;IAClC,MAAM,KAAK,GAAG,sCAAsC,CAAC;IACrD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging infrastructure for Veto.
|
|
3
|
+
*
|
|
4
|
+
* Provides a flexible logging system with configurable log levels
|
|
5
|
+
* and support for custom logger implementations.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/logger
|
|
8
|
+
*/
|
|
9
|
+
import type { LogLevel } from '../types/config.js';
|
|
10
|
+
/**
|
|
11
|
+
* Log entry structure for structured logging.
|
|
12
|
+
*/
|
|
13
|
+
export interface LogEntry {
|
|
14
|
+
/** Log level of this entry */
|
|
15
|
+
level: LogLevel;
|
|
16
|
+
/** Log message */
|
|
17
|
+
message: string;
|
|
18
|
+
/** Timestamp of the log entry */
|
|
19
|
+
timestamp: Date;
|
|
20
|
+
/** Additional context data */
|
|
21
|
+
context?: Record<string, unknown>;
|
|
22
|
+
/** Error object if applicable */
|
|
23
|
+
error?: Error;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Logger interface that can be implemented for custom logging.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const customLogger: Logger = {
|
|
31
|
+
* debug: (msg, ctx) => myLoggingService.log('debug', msg, ctx),
|
|
32
|
+
* info: (msg, ctx) => myLoggingService.log('info', msg, ctx),
|
|
33
|
+
* warn: (msg, ctx) => myLoggingService.log('warn', msg, ctx),
|
|
34
|
+
* error: (msg, ctx, err) => myLoggingService.log('error', msg, { ...ctx, err }),
|
|
35
|
+
* };
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export interface Logger {
|
|
39
|
+
debug(message: string, context?: Record<string, unknown>): void;
|
|
40
|
+
info(message: string, context?: Record<string, unknown>): void;
|
|
41
|
+
warn(message: string, context?: Record<string, unknown>): void;
|
|
42
|
+
error(message: string, context?: Record<string, unknown>, error?: Error): void;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create a console-based logger with the specified log level.
|
|
46
|
+
*
|
|
47
|
+
* @param level - Minimum log level to emit
|
|
48
|
+
* @returns Logger instance
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const logger = createLogger('info');
|
|
53
|
+
* logger.debug('This will not be logged');
|
|
54
|
+
* logger.info('This will be logged');
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function createLogger(level: LogLevel): Logger;
|
|
58
|
+
/**
|
|
59
|
+
* A no-op logger that discards all messages.
|
|
60
|
+
* Useful for testing or when logging should be completely disabled.
|
|
61
|
+
*/
|
|
62
|
+
export declare const silentLogger: Logger;
|
|
63
|
+
/**
|
|
64
|
+
* Create a logger that stores entries in memory.
|
|
65
|
+
* Useful for testing or capturing logs for later analysis.
|
|
66
|
+
*
|
|
67
|
+
* @param level - Minimum log level to capture
|
|
68
|
+
* @returns Object containing the logger and captured entries
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const { logger, entries } = createMemoryLogger('debug');
|
|
73
|
+
* logger.info('test message', { key: 'value' });
|
|
74
|
+
* console.log(entries); // [{ level: 'info', message: 'test message', ... }]
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function createMemoryLogger(level?: LogLevel): {
|
|
78
|
+
logger: Logger;
|
|
79
|
+
entries: LogEntry[];
|
|
80
|
+
clear: () => void;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Create a child logger with additional default context.
|
|
84
|
+
*
|
|
85
|
+
* @param parent - Parent logger to wrap
|
|
86
|
+
* @param defaultContext - Context to include in all log entries
|
|
87
|
+
* @returns Logger with merged context
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const parentLogger = createLogger('info');
|
|
92
|
+
* const childLogger = createChildLogger(parentLogger, { component: 'validator' });
|
|
93
|
+
* childLogger.info('Validation complete'); // Includes { component: 'validator' }
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export declare function createChildLogger(parent: Logger, defaultContext: Record<string, unknown>): Logger;
|
|
97
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,8BAA8B;IAC9B,KAAK,EAAE,QAAQ,CAAC;IAChB,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,SAAS,EAAE,IAAI,CAAC;IAChB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,iCAAiC;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CAChF;AAwCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAiCpD;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAK1B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,QAAkB,GAAG;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAiCA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,MAAM,CAcR"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging infrastructure for Veto.
|
|
3
|
+
*
|
|
4
|
+
* Provides a flexible logging system with configurable log levels
|
|
5
|
+
* and support for custom logger implementations.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/logger
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Numeric priority for log levels (lower = more verbose).
|
|
11
|
+
*/
|
|
12
|
+
const LOG_LEVEL_PRIORITY = {
|
|
13
|
+
debug: 0,
|
|
14
|
+
info: 1,
|
|
15
|
+
warn: 2,
|
|
16
|
+
error: 3,
|
|
17
|
+
silent: 4,
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Check if a log level should be emitted given the configured level.
|
|
21
|
+
*/
|
|
22
|
+
function shouldLog(messageLevel, configuredLevel) {
|
|
23
|
+
return LOG_LEVEL_PRIORITY[messageLevel] >= LOG_LEVEL_PRIORITY[configuredLevel];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Format a log message with optional context.
|
|
27
|
+
*/
|
|
28
|
+
function formatMessage(level, message, context) {
|
|
29
|
+
const timestamp = new Date().toISOString();
|
|
30
|
+
const levelStr = level.toUpperCase().padEnd(5);
|
|
31
|
+
const prefix = `[${timestamp}] [VETO] ${levelStr}`;
|
|
32
|
+
if (context && Object.keys(context).length > 0) {
|
|
33
|
+
const contextStr = JSON.stringify(context);
|
|
34
|
+
return `${prefix} ${message} ${contextStr}`;
|
|
35
|
+
}
|
|
36
|
+
return `${prefix} ${message}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create a console-based logger with the specified log level.
|
|
40
|
+
*
|
|
41
|
+
* @param level - Minimum log level to emit
|
|
42
|
+
* @returns Logger instance
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const logger = createLogger('info');
|
|
47
|
+
* logger.debug('This will not be logged');
|
|
48
|
+
* logger.info('This will be logged');
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export function createLogger(level) {
|
|
52
|
+
return {
|
|
53
|
+
debug(message, context) {
|
|
54
|
+
if (shouldLog('debug', level)) {
|
|
55
|
+
console.debug(formatMessage('debug', message, context));
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
info(message, context) {
|
|
59
|
+
if (shouldLog('info', level)) {
|
|
60
|
+
console.info(formatMessage('info', message, context));
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
warn(message, context) {
|
|
64
|
+
if (shouldLog('warn', level)) {
|
|
65
|
+
console.warn(formatMessage('warn', message, context));
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
error(message, context, error) {
|
|
69
|
+
if (shouldLog('error', level)) {
|
|
70
|
+
console.error(formatMessage('error', message, context));
|
|
71
|
+
if (error) {
|
|
72
|
+
console.error(error);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* A no-op logger that discards all messages.
|
|
80
|
+
* Useful for testing or when logging should be completely disabled.
|
|
81
|
+
*/
|
|
82
|
+
export const silentLogger = {
|
|
83
|
+
debug: () => { },
|
|
84
|
+
info: () => { },
|
|
85
|
+
warn: () => { },
|
|
86
|
+
error: () => { },
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Create a logger that stores entries in memory.
|
|
90
|
+
* Useful for testing or capturing logs for later analysis.
|
|
91
|
+
*
|
|
92
|
+
* @param level - Minimum log level to capture
|
|
93
|
+
* @returns Object containing the logger and captured entries
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const { logger, entries } = createMemoryLogger('debug');
|
|
98
|
+
* logger.info('test message', { key: 'value' });
|
|
99
|
+
* console.log(entries); // [{ level: 'info', message: 'test message', ... }]
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export function createMemoryLogger(level = 'debug') {
|
|
103
|
+
const entries = [];
|
|
104
|
+
const addEntry = (messageLevel, message, context, error) => {
|
|
105
|
+
if (shouldLog(messageLevel, level)) {
|
|
106
|
+
entries.push({
|
|
107
|
+
level: messageLevel,
|
|
108
|
+
message,
|
|
109
|
+
timestamp: new Date(),
|
|
110
|
+
context,
|
|
111
|
+
error,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
return {
|
|
116
|
+
entries,
|
|
117
|
+
clear: () => {
|
|
118
|
+
entries.length = 0;
|
|
119
|
+
},
|
|
120
|
+
logger: {
|
|
121
|
+
debug: (message, context) => addEntry('debug', message, context),
|
|
122
|
+
info: (message, context) => addEntry('info', message, context),
|
|
123
|
+
warn: (message, context) => addEntry('warn', message, context),
|
|
124
|
+
error: (message, context, error) => addEntry('error', message, context, error),
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Create a child logger with additional default context.
|
|
130
|
+
*
|
|
131
|
+
* @param parent - Parent logger to wrap
|
|
132
|
+
* @param defaultContext - Context to include in all log entries
|
|
133
|
+
* @returns Logger with merged context
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* const parentLogger = createLogger('info');
|
|
138
|
+
* const childLogger = createChildLogger(parentLogger, { component: 'validator' });
|
|
139
|
+
* childLogger.info('Validation complete'); // Includes { component: 'validator' }
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export function createChildLogger(parent, defaultContext) {
|
|
143
|
+
const mergeContext = (context) => {
|
|
144
|
+
return { ...defaultContext, ...context };
|
|
145
|
+
};
|
|
146
|
+
return {
|
|
147
|
+
debug: (message, context) => parent.debug(message, mergeContext(context)),
|
|
148
|
+
info: (message, context) => parent.info(message, mergeContext(context)),
|
|
149
|
+
warn: (message, context) => parent.warn(message, mergeContext(context)),
|
|
150
|
+
error: (message, context, error) => parent.error(message, mergeContext(context), error),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "veto-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Guardrails for AI agent tool calls - intercept, validate, and control",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"dev": "tsc --watch",
|
|
11
|
+
"test": "vitest run",
|
|
12
|
+
"test:watch": "vitest",
|
|
13
|
+
"test:coverage": "vitest run --coverage",
|
|
14
|
+
"typecheck": "tsc --noEmit",
|
|
15
|
+
"benchmark": "node dist/benchmark/cli.js",
|
|
16
|
+
"benchmark:dev": "tsx src/benchmark/cli.ts"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"ai",
|
|
20
|
+
"agent",
|
|
21
|
+
"guardrail",
|
|
22
|
+
"tool-calls",
|
|
23
|
+
"safety",
|
|
24
|
+
"llm",
|
|
25
|
+
"openai",
|
|
26
|
+
"anthropic",
|
|
27
|
+
"gemini",
|
|
28
|
+
"claude",
|
|
29
|
+
"veto"
|
|
30
|
+
],
|
|
31
|
+
"author": "Plaw, Inc.",
|
|
32
|
+
"license": "Apache-2.0",
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/node": "^20.10.0",
|
|
35
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
36
|
+
"openai": "^4.77.0",
|
|
37
|
+
"tsx": "^4.7.0",
|
|
38
|
+
"typescript": "^5.7.0",
|
|
39
|
+
"vitest": "^4.0.16"
|
|
40
|
+
},
|
|
41
|
+
"peerDependencies": {
|
|
42
|
+
"openai": "^4.0.0",
|
|
43
|
+
"zod": "^3.22.0"
|
|
44
|
+
},
|
|
45
|
+
"peerDependenciesMeta": {
|
|
46
|
+
"openai": {
|
|
47
|
+
"optional": true
|
|
48
|
+
},
|
|
49
|
+
"zod": {
|
|
50
|
+
"optional": true
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=18.0.0"
|
|
55
|
+
},
|
|
56
|
+
"files": [
|
|
57
|
+
"dist",
|
|
58
|
+
"README.md"
|
|
59
|
+
],
|
|
60
|
+
"exports": {
|
|
61
|
+
".": {
|
|
62
|
+
"types": "./dist/index.d.ts",
|
|
63
|
+
"import": "./dist/index.js"
|
|
64
|
+
},
|
|
65
|
+
"./providers/*": {
|
|
66
|
+
"types": "./dist/providers/*.d.ts",
|
|
67
|
+
"import": "./dist/providers/*.js"
|
|
68
|
+
},
|
|
69
|
+
"./rules": {
|
|
70
|
+
"types": "./dist/rules/index.d.ts",
|
|
71
|
+
"import": "./dist/rules/index.js"
|
|
72
|
+
},
|
|
73
|
+
"./kernel": {
|
|
74
|
+
"types": "./dist/kernel/index.d.ts",
|
|
75
|
+
"import": "./dist/kernel/index.js"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"dependencies": {
|
|
79
|
+
"yaml": "^2.8.2"
|
|
80
|
+
},
|
|
81
|
+
"repository": {
|
|
82
|
+
"type": "git",
|
|
83
|
+
"url": "https://github.com/VulnZap/veto",
|
|
84
|
+
"directory": "packages/sdk"
|
|
85
|
+
},
|
|
86
|
+
"homepage": "https://veto.run",
|
|
87
|
+
"bugs": {
|
|
88
|
+
"url": "https://github.com/VulnZap/veto/issues"
|
|
89
|
+
}
|
|
90
|
+
}
|