truthguard-ai 0.1.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.
Potentially problematic release.
This version of truthguard-ai might be problematic. Click here for more details.
- package/LICENSE +21 -0
- package/README.md +363 -0
- package/dist/Advisor/index.d.ts +78 -0
- package/dist/Advisor/index.d.ts.map +1 -0
- package/dist/Advisor/index.js +539 -0
- package/dist/Advisor/index.js.map +1 -0
- package/dist/Alerting/index.d.ts +35 -0
- package/dist/Alerting/index.d.ts.map +1 -0
- package/dist/Alerting/index.js +76 -0
- package/dist/Alerting/index.js.map +1 -0
- package/dist/Auth/index.d.ts +82 -0
- package/dist/Auth/index.d.ts.map +1 -0
- package/dist/Auth/index.js +242 -0
- package/dist/Auth/index.js.map +1 -0
- package/dist/Baseline/index.d.ts +43 -0
- package/dist/Baseline/index.d.ts.map +1 -0
- package/dist/Baseline/index.js +195 -0
- package/dist/Baseline/index.js.map +1 -0
- package/dist/Claims/index.d.ts +73 -0
- package/dist/Claims/index.d.ts.map +1 -0
- package/dist/Claims/index.js +1669 -0
- package/dist/Claims/index.js.map +1 -0
- package/dist/Client/index.d.ts +90 -0
- package/dist/Client/index.d.ts.map +1 -0
- package/dist/Client/index.js +186 -0
- package/dist/Client/index.js.map +1 -0
- package/dist/Config/index.d.ts +41 -0
- package/dist/Config/index.d.ts.map +1 -0
- package/dist/Config/index.js +129 -0
- package/dist/Config/index.js.map +1 -0
- package/dist/Coverage/index.d.ts +28 -0
- package/dist/Coverage/index.d.ts.map +1 -0
- package/dist/Coverage/index.js +134 -0
- package/dist/Coverage/index.js.map +1 -0
- package/dist/Demo/index.d.ts +16 -0
- package/dist/Demo/index.d.ts.map +1 -0
- package/dist/Demo/index.js +189 -0
- package/dist/Demo/index.js.map +1 -0
- package/dist/Gate/index.d.ts +39 -0
- package/dist/Gate/index.d.ts.map +1 -0
- package/dist/Gate/index.js +207 -0
- package/dist/Gate/index.js.map +1 -0
- package/dist/Grounding/index.d.ts +40 -0
- package/dist/Grounding/index.d.ts.map +1 -0
- package/dist/Grounding/index.js +1433 -0
- package/dist/Grounding/index.js.map +1 -0
- package/dist/L2/index.d.ts +93 -0
- package/dist/L2/index.d.ts.map +1 -0
- package/dist/L2/index.js +1773 -0
- package/dist/L2/index.js.map +1 -0
- package/dist/MCP/index.d.ts +139 -0
- package/dist/MCP/index.d.ts.map +1 -0
- package/dist/MCP/index.js +1250 -0
- package/dist/MCP/index.js.map +1 -0
- package/dist/Matchers/index.d.ts +101 -0
- package/dist/Matchers/index.d.ts.map +1 -0
- package/dist/Matchers/index.js +690 -0
- package/dist/Matchers/index.js.map +1 -0
- package/dist/Middleware/index.d.ts +146 -0
- package/dist/Middleware/index.d.ts.map +1 -0
- package/dist/Middleware/index.js +239 -0
- package/dist/Middleware/index.js.map +1 -0
- package/dist/Mode/index.d.ts +87 -0
- package/dist/Mode/index.d.ts.map +1 -0
- package/dist/Mode/index.js +117 -0
- package/dist/Mode/index.js.map +1 -0
- package/dist/Policy/index.d.ts +89 -0
- package/dist/Policy/index.d.ts.map +1 -0
- package/dist/Policy/index.js +143 -0
- package/dist/Policy/index.js.map +1 -0
- package/dist/Proxy/SessionStore.d.ts +94 -0
- package/dist/Proxy/SessionStore.d.ts.map +1 -0
- package/dist/Proxy/SessionStore.js +225 -0
- package/dist/Proxy/SessionStore.js.map +1 -0
- package/dist/Proxy/index.d.ts +166 -0
- package/dist/Proxy/index.d.ts.map +1 -0
- package/dist/Proxy/index.js +531 -0
- package/dist/Proxy/index.js.map +1 -0
- package/dist/Registry/index.d.ts +93 -0
- package/dist/Registry/index.d.ts.map +1 -0
- package/dist/Registry/index.js +818 -0
- package/dist/Registry/index.js.map +1 -0
- package/dist/Reports/index.d.ts +38 -0
- package/dist/Reports/index.d.ts.map +1 -0
- package/dist/Reports/index.js +149 -0
- package/dist/Reports/index.js.map +1 -0
- package/dist/Rules/index.d.ts +587 -0
- package/dist/Rules/index.d.ts.map +1 -0
- package/dist/Rules/index.js +6236 -0
- package/dist/Rules/index.js.map +1 -0
- package/dist/Rules/intents.d.ts +22 -0
- package/dist/Rules/intents.d.ts.map +1 -0
- package/dist/Rules/intents.js +242 -0
- package/dist/Rules/intents.js.map +1 -0
- package/dist/Runner/index.d.ts +39 -0
- package/dist/Runner/index.d.ts.map +1 -0
- package/dist/Runner/index.js +185 -0
- package/dist/Runner/index.js.map +1 -0
- package/dist/SDK/anthropic.d.ts +102 -0
- package/dist/SDK/anthropic.d.ts.map +1 -0
- package/dist/SDK/anthropic.js +425 -0
- package/dist/SDK/anthropic.js.map +1 -0
- package/dist/SDK/openai.d.ts +164 -0
- package/dist/SDK/openai.d.ts.map +1 -0
- package/dist/SDK/openai.js +557 -0
- package/dist/SDK/openai.js.map +1 -0
- package/dist/Store/index.d.ts +72 -0
- package/dist/Store/index.d.ts.map +1 -0
- package/dist/Store/index.js +136 -0
- package/dist/Store/index.js.map +1 -0
- package/dist/Telemetry/index.d.ts +84 -0
- package/dist/Telemetry/index.d.ts.map +1 -0
- package/dist/Telemetry/index.js +239 -0
- package/dist/Telemetry/index.js.map +1 -0
- package/dist/Trace/index.d.ts +219 -0
- package/dist/Trace/index.d.ts.map +1 -0
- package/dist/Trace/index.js +763 -0
- package/dist/Trace/index.js.map +1 -0
- package/dist/TraceReadiness/index.d.ts +42 -0
- package/dist/TraceReadiness/index.d.ts.map +1 -0
- package/dist/TraceReadiness/index.js +169 -0
- package/dist/TraceReadiness/index.js.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +807 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/i18n/index.d.ts +44 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +124 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +218 -0
- package/dist/index.js.map +1 -0
- package/dist/thin.d.ts +39 -0
- package/dist/thin.d.ts.map +1 -0
- package/dist/thin.js +120 -0
- package/dist/thin.js.map +1 -0
- package/dist/types/index.d.ts +498 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +17 -0
- package/dist/types/index.js.map +1 -0
- package/dist-npm/Alerting/index.d.ts +35 -0
- package/dist-npm/Alerting/index.d.ts.map +1 -0
- package/dist-npm/Alerting/index.js +76 -0
- package/dist-npm/Alerting/index.js.map +1 -0
- package/dist-npm/Auth/index.d.ts +82 -0
- package/dist-npm/Auth/index.d.ts.map +1 -0
- package/dist-npm/Auth/index.js +242 -0
- package/dist-npm/Auth/index.js.map +1 -0
- package/dist-npm/Client/index.d.ts +90 -0
- package/dist-npm/Client/index.d.ts.map +1 -0
- package/dist-npm/Client/index.js +186 -0
- package/dist-npm/Client/index.js.map +1 -0
- package/dist-npm/Demo/index.d.ts +16 -0
- package/dist-npm/Demo/index.d.ts.map +1 -0
- package/dist-npm/Demo/index.js +189 -0
- package/dist-npm/Demo/index.js.map +1 -0
- package/dist-npm/Middleware/index.d.ts +146 -0
- package/dist-npm/Middleware/index.d.ts.map +1 -0
- package/dist-npm/Middleware/index.js +239 -0
- package/dist-npm/Middleware/index.js.map +1 -0
- package/dist-npm/Proxy/SessionStore.d.ts +94 -0
- package/dist-npm/Proxy/SessionStore.d.ts.map +1 -0
- package/dist-npm/Proxy/SessionStore.js +225 -0
- package/dist-npm/Proxy/SessionStore.js.map +1 -0
- package/dist-npm/Proxy/index.d.ts +166 -0
- package/dist-npm/Proxy/index.d.ts.map +1 -0
- package/dist-npm/Proxy/index.js +531 -0
- package/dist-npm/Proxy/index.js.map +1 -0
- package/dist-npm/SDK/anthropic.d.ts +102 -0
- package/dist-npm/SDK/anthropic.d.ts.map +1 -0
- package/dist-npm/SDK/anthropic.js +425 -0
- package/dist-npm/SDK/anthropic.js.map +1 -0
- package/dist-npm/SDK/openai.d.ts +164 -0
- package/dist-npm/SDK/openai.d.ts.map +1 -0
- package/dist-npm/SDK/openai.js +557 -0
- package/dist-npm/SDK/openai.js.map +1 -0
- package/dist-npm/Store/index.d.ts +72 -0
- package/dist-npm/Store/index.d.ts.map +1 -0
- package/dist-npm/Store/index.js +136 -0
- package/dist-npm/Store/index.js.map +1 -0
- package/dist-npm/Telemetry/index.d.ts +84 -0
- package/dist-npm/Telemetry/index.d.ts.map +1 -0
- package/dist-npm/Telemetry/index.js +239 -0
- package/dist-npm/Telemetry/index.js.map +1 -0
- package/dist-npm/Trace/index.d.ts +219 -0
- package/dist-npm/Trace/index.d.ts.map +1 -0
- package/dist-npm/Trace/index.js +763 -0
- package/dist-npm/Trace/index.js.map +1 -0
- package/dist-npm/thin.d.ts +39 -0
- package/dist-npm/thin.d.ts.map +1 -0
- package/dist-npm/thin.js +120 -0
- package/dist-npm/thin.js.map +1 -0
- package/dist-npm/types/index.d.ts +498 -0
- package/dist-npm/types/index.d.ts.map +1 -0
- package/dist-npm/types/index.js +17 -0
- package/dist-npm/types/index.js.map +1 -0
- package/package.json +114 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Matchers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ai-rcp Express Middleware
|
|
3
|
+
*
|
|
4
|
+
* Drop-in middleware that intercepts AI agent responses and runs them
|
|
5
|
+
* through the grounding pipeline before they reach the user.
|
|
6
|
+
*
|
|
7
|
+
* Supports all five modes:
|
|
8
|
+
* debug — logs verdicts to console, passes response through
|
|
9
|
+
* ci — not applicable to middleware (use CLI)
|
|
10
|
+
* observe — persists trace+report, passes response through
|
|
11
|
+
* warn — observe + dispatches alerts when score < threshold
|
|
12
|
+
* block — warn + replaces response with fallback when score < threshold
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* import express from 'express';
|
|
17
|
+
* import { groundingMiddleware } from 'ai-rcp/middleware';
|
|
18
|
+
* import { FileStore } from 'ai-rcp';
|
|
19
|
+
*
|
|
20
|
+
* const app = express();
|
|
21
|
+
*
|
|
22
|
+
* app.post('/api/chat', groundingMiddleware({
|
|
23
|
+
* mode: 'block',
|
|
24
|
+
* threshold: 0.9,
|
|
25
|
+
* store: new FileStore('./traces/grounding.jsonl'),
|
|
26
|
+
* extractTrace: (req, res, body) => body.trace,
|
|
27
|
+
* extractResponse: (req, res, body) => body.response,
|
|
28
|
+
* rewriteBody: (body, fallback) => ({ ...body, response: fallback, blocked: true }),
|
|
29
|
+
* }));
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
import type { Request, Response, NextFunction } from 'express';
|
|
33
|
+
import type { Trace, GroundingReport } from '../types';
|
|
34
|
+
import type { TruthGuardClient } from '../Client';
|
|
35
|
+
/** Operating mode. */
|
|
36
|
+
type MiddlewareMode = 'observe' | 'warn' | 'block' | 'debug' | 'ci';
|
|
37
|
+
/** Result from evaluation (thin-client compatible). */
|
|
38
|
+
interface MiddlewarePipelineResult {
|
|
39
|
+
report: GroundingReport;
|
|
40
|
+
allowed: boolean;
|
|
41
|
+
fallbackResponse?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface GroundingMiddlewareOptions {
|
|
44
|
+
/** Operating mode. Default: 'observe'. */
|
|
45
|
+
mode?: MiddlewareMode;
|
|
46
|
+
/** Score threshold for block/warn decisions. Default: 0.75. */
|
|
47
|
+
threshold?: number;
|
|
48
|
+
/**
|
|
49
|
+
* TruthGuard client for remote evaluation (thin-client mode).
|
|
50
|
+
* When provided, traces are sent to the server for evaluation.
|
|
51
|
+
* When omitted, falls back to local Pipeline evaluation (server-side only).
|
|
52
|
+
*/
|
|
53
|
+
client?: TruthGuardClient;
|
|
54
|
+
/**
|
|
55
|
+
* Local Pipeline instance for server-side evaluation.
|
|
56
|
+
* Only used when `client` is not provided.
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
_pipeline?: {
|
|
60
|
+
evaluate(trace: Trace): Promise<MiddlewarePipelineResult>;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Extract the Trace from the request/response cycle.
|
|
64
|
+
* Called AFTER the downstream handler has finished.
|
|
65
|
+
*
|
|
66
|
+
* The `body` parameter contains the parsed response body
|
|
67
|
+
* (intercepted before being sent to the client).
|
|
68
|
+
*/
|
|
69
|
+
extractTrace: (req: Request, res: Response, body: unknown) => Trace | null | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Extract a Trace even when the downstream handler throws an error.
|
|
72
|
+
*/
|
|
73
|
+
extractTraceFromError?: (req: Request, res: Response, error: unknown) => Trace | null | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Extract the AI response text from the body for logging/debugging.
|
|
76
|
+
* Optional — used for debug mode output.
|
|
77
|
+
*/
|
|
78
|
+
extractResponse?: (req: Request, res: Response, body: unknown) => string;
|
|
79
|
+
/**
|
|
80
|
+
* Rewrite the response body when the response is blocked or annotated.
|
|
81
|
+
* Only used in block mode. Return the new body to send to the client.
|
|
82
|
+
*/
|
|
83
|
+
rewriteBody?: (body: unknown, fallbackMessage: string, report: GroundingReport) => unknown;
|
|
84
|
+
/**
|
|
85
|
+
* Header name to include the grounding score in the response.
|
|
86
|
+
* Set to null to disable. Default: 'X-Grounding-Score'.
|
|
87
|
+
*/
|
|
88
|
+
scoreHeader?: string | null;
|
|
89
|
+
/**
|
|
90
|
+
* Callback fired after every evaluation (all modes).
|
|
91
|
+
*/
|
|
92
|
+
onEvaluate?: (report: GroundingReport, trace: Trace) => void;
|
|
93
|
+
/** Store for persistence (used in local pipeline mode). */
|
|
94
|
+
store?: unknown;
|
|
95
|
+
/** Alert dispatchers (used in local pipeline mode). */
|
|
96
|
+
alerters?: unknown[];
|
|
97
|
+
/** Policy (used in local pipeline mode). */
|
|
98
|
+
policy?: unknown;
|
|
99
|
+
/** Tolerance overrides (used in local pipeline mode). */
|
|
100
|
+
tolerances?: unknown;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Creates an Express middleware that evaluates grounding on every response.
|
|
104
|
+
*/
|
|
105
|
+
export declare function groundingMiddleware(options: GroundingMiddlewareOptions): (req: Request, res: Response, next: NextFunction) => void;
|
|
106
|
+
/**
|
|
107
|
+
* Express error-handling middleware that evaluates grounding even when
|
|
108
|
+
* the downstream handler throws (e.g., AI API rate limit, timeout).
|
|
109
|
+
*
|
|
110
|
+
* Register this AFTER your routes but BEFORE your generic error handler:
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```ts
|
|
114
|
+
* app.post('/api/chat', chatHandler);
|
|
115
|
+
* app.use(groundingErrorHandler({
|
|
116
|
+
* extractTraceFromError: (req, _res, error) => buildTraceFromContext(req, error),
|
|
117
|
+
* mode: 'observe',
|
|
118
|
+
* store: new FileStore('./traces.jsonl'),
|
|
119
|
+
* }));
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export declare function groundingErrorHandler(options: Pick<GroundingMiddlewareOptions, 'mode' | 'store' | 'threshold' | 'policy' | 'client' | '_pipeline' | 'extractTraceFromError' | 'onEvaluate'>): (err: unknown, req: Request, res: Response, next: NextFunction) => void;
|
|
123
|
+
/**
|
|
124
|
+
* Evaluate a trace and get the pipeline result directly.
|
|
125
|
+
* Use this when you're not using Express (e.g., Fastify, Hono, custom server).
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* import { evaluate } from 'ai-rcp/middleware';
|
|
130
|
+
*
|
|
131
|
+
* const result = await evaluate(trace, {
|
|
132
|
+
* mode: 'block',
|
|
133
|
+
* threshold: 0.9,
|
|
134
|
+
* client: new TruthGuardClient({ apiKey: 'tg_xxx' }),
|
|
135
|
+
* });
|
|
136
|
+
*
|
|
137
|
+
* if (!result.allowed) {
|
|
138
|
+
* return res.json({ error: result.fallbackResponse });
|
|
139
|
+
* }
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export declare function evaluate(trace: Trace, options: Omit<GroundingMiddlewareOptions, 'extractTrace'> & {
|
|
143
|
+
mode?: MiddlewareMode;
|
|
144
|
+
}): Promise<MiddlewarePipelineResult>;
|
|
145
|
+
export {};
|
|
146
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAMlD,sBAAsB;AACtB,KAAK,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;AAEpE,uDAAuD;AACvD,UAAU,wBAAwB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,cAAc,CAAC;IAEtB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAE1B;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;KAC3D,CAAC;IAEF;;;;;;OAMG;IACH,YAAY,EAAE,CACZ,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,OAAO,KACV,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IAE9B;;OAEG;IACH,qBAAqB,CAAC,EAAE,CACtB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,OAAO,KACX,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IAE9B;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;IAEzE;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC;IAE3F;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAE7D,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAkFD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CA8C3D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,uBAAuB,GAAG,YAAY,CAAC,GACrJ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CA6BzE;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,cAAc,CAAA;CAAE,qCAOtF"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ai-rcp Express Middleware
|
|
4
|
+
*
|
|
5
|
+
* Drop-in middleware that intercepts AI agent responses and runs them
|
|
6
|
+
* through the grounding pipeline before they reach the user.
|
|
7
|
+
*
|
|
8
|
+
* Supports all five modes:
|
|
9
|
+
* debug — logs verdicts to console, passes response through
|
|
10
|
+
* ci — not applicable to middleware (use CLI)
|
|
11
|
+
* observe — persists trace+report, passes response through
|
|
12
|
+
* warn — observe + dispatches alerts when score < threshold
|
|
13
|
+
* block — warn + replaces response with fallback when score < threshold
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import express from 'express';
|
|
18
|
+
* import { groundingMiddleware } from 'ai-rcp/middleware';
|
|
19
|
+
* import { FileStore } from 'ai-rcp';
|
|
20
|
+
*
|
|
21
|
+
* const app = express();
|
|
22
|
+
*
|
|
23
|
+
* app.post('/api/chat', groundingMiddleware({
|
|
24
|
+
* mode: 'block',
|
|
25
|
+
* threshold: 0.9,
|
|
26
|
+
* store: new FileStore('./traces/grounding.jsonl'),
|
|
27
|
+
* extractTrace: (req, res, body) => body.trace,
|
|
28
|
+
* extractResponse: (req, res, body) => body.response,
|
|
29
|
+
* rewriteBody: (body, fallback) => ({ ...body, response: fallback, blocked: true }),
|
|
30
|
+
* }));
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
34
|
+
if (k2 === undefined) k2 = k;
|
|
35
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
36
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
37
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
38
|
+
}
|
|
39
|
+
Object.defineProperty(o, k2, desc);
|
|
40
|
+
}) : (function(o, m, k, k2) {
|
|
41
|
+
if (k2 === undefined) k2 = k;
|
|
42
|
+
o[k2] = m[k];
|
|
43
|
+
}));
|
|
44
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
45
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
46
|
+
}) : function(o, v) {
|
|
47
|
+
o["default"] = v;
|
|
48
|
+
});
|
|
49
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
50
|
+
var ownKeys = function(o) {
|
|
51
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
52
|
+
var ar = [];
|
|
53
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
54
|
+
return ar;
|
|
55
|
+
};
|
|
56
|
+
return ownKeys(o);
|
|
57
|
+
};
|
|
58
|
+
return function (mod) {
|
|
59
|
+
if (mod && mod.__esModule) return mod;
|
|
60
|
+
var result = {};
|
|
61
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
62
|
+
__setModuleDefault(result, mod);
|
|
63
|
+
return result;
|
|
64
|
+
};
|
|
65
|
+
})();
|
|
66
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
67
|
+
exports.groundingMiddleware = groundingMiddleware;
|
|
68
|
+
exports.groundingErrorHandler = groundingErrorHandler;
|
|
69
|
+
exports.evaluate = evaluate;
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
// Response interceptor helper
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
/**
|
|
74
|
+
* Monkey-patches res.json() to intercept the response body before it's sent.
|
|
75
|
+
* Calls the callback with the body, allowing mutation before sending.
|
|
76
|
+
*/
|
|
77
|
+
function interceptJson(res, callback) {
|
|
78
|
+
const originalJson = res.json.bind(res);
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
80
|
+
res.json = function interceptedJson(body) {
|
|
81
|
+
// We need to handle this async but Express doesn't support async res.json
|
|
82
|
+
// So we intercept synchronously and queue the async work
|
|
83
|
+
callback(body)
|
|
84
|
+
.then((newBody) => {
|
|
85
|
+
originalJson(newBody);
|
|
86
|
+
})
|
|
87
|
+
.catch((err) => {
|
|
88
|
+
console.error('[TruthGuard middleware] Error during evaluation:', err);
|
|
89
|
+
originalJson(body); // Pass through on error
|
|
90
|
+
});
|
|
91
|
+
return res;
|
|
92
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function buildMiddlewareEvaluator(options, mode) {
|
|
96
|
+
if (options.client) {
|
|
97
|
+
const client = options.client;
|
|
98
|
+
const threshold = options.threshold;
|
|
99
|
+
return async (trace) => {
|
|
100
|
+
const result = await client.evaluate(trace, { mode, threshold });
|
|
101
|
+
options.onEvaluate?.(result.report, trace);
|
|
102
|
+
return result;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
if (options._pipeline) {
|
|
106
|
+
const pipeline = options._pipeline;
|
|
107
|
+
return async (trace) => {
|
|
108
|
+
const result = await pipeline.evaluate(trace);
|
|
109
|
+
options.onEvaluate?.(result.report, trace);
|
|
110
|
+
return result;
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
// Lazy-load Pipeline for backwards compatibility
|
|
114
|
+
let lazyPipeline = null;
|
|
115
|
+
return async (trace) => {
|
|
116
|
+
if (!lazyPipeline) {
|
|
117
|
+
try {
|
|
118
|
+
const { Pipeline } = await Promise.resolve().then(() => __importStar(require('../Mode')));
|
|
119
|
+
lazyPipeline = new Pipeline({ ...options, mode });
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
throw new Error('TruthGuard: No evaluation backend available. ' +
|
|
123
|
+
'Provide a `client` option (TruthGuardClient) for remote evaluation.');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
const result = await lazyPipeline.evaluate(trace);
|
|
127
|
+
options.onEvaluate?.(result.report, trace);
|
|
128
|
+
return result;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
// Middleware factory
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
/**
|
|
135
|
+
* Creates an Express middleware that evaluates grounding on every response.
|
|
136
|
+
*/
|
|
137
|
+
function groundingMiddleware(options) {
|
|
138
|
+
const mode = options.mode ?? 'observe';
|
|
139
|
+
const scoreHeader = options.scoreHeader !== undefined
|
|
140
|
+
? options.scoreHeader
|
|
141
|
+
: 'X-Grounding-Score';
|
|
142
|
+
const evaluator = buildMiddlewareEvaluator(options, mode);
|
|
143
|
+
return (req, res, next) => {
|
|
144
|
+
interceptJson(res, async (body) => {
|
|
145
|
+
const trace = options.extractTrace(req, res, body);
|
|
146
|
+
if (!trace) {
|
|
147
|
+
return body;
|
|
148
|
+
}
|
|
149
|
+
const result = await evaluator(trace);
|
|
150
|
+
// Add grounding score header
|
|
151
|
+
if (scoreHeader && !res.headersSent) {
|
|
152
|
+
res.setHeader(scoreHeader, result.report.groundingScore.toFixed(4));
|
|
153
|
+
res.setHeader('X-Grounding-Mode', mode);
|
|
154
|
+
if (!result.allowed) {
|
|
155
|
+
res.setHeader('X-Grounding-Blocked', 'true');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Block mode: rewrite the body if score is below threshold
|
|
159
|
+
if (!result.allowed && result.fallbackResponse) {
|
|
160
|
+
if (options.rewriteBody) {
|
|
161
|
+
return options.rewriteBody(body, result.fallbackResponse, result.report);
|
|
162
|
+
}
|
|
163
|
+
// Default rewrite: replace the body entirely
|
|
164
|
+
return {
|
|
165
|
+
blocked: true,
|
|
166
|
+
message: result.fallbackResponse,
|
|
167
|
+
groundingScore: result.report.groundingScore,
|
|
168
|
+
failures: result.report.detectedFailures.map((f) => f.type),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
return body;
|
|
172
|
+
});
|
|
173
|
+
next();
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Express error-handling middleware that evaluates grounding even when
|
|
178
|
+
* the downstream handler throws (e.g., AI API rate limit, timeout).
|
|
179
|
+
*
|
|
180
|
+
* Register this AFTER your routes but BEFORE your generic error handler:
|
|
181
|
+
*
|
|
182
|
+
* @example
|
|
183
|
+
* ```ts
|
|
184
|
+
* app.post('/api/chat', chatHandler);
|
|
185
|
+
* app.use(groundingErrorHandler({
|
|
186
|
+
* extractTraceFromError: (req, _res, error) => buildTraceFromContext(req, error),
|
|
187
|
+
* mode: 'observe',
|
|
188
|
+
* store: new FileStore('./traces.jsonl'),
|
|
189
|
+
* }));
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
function groundingErrorHandler(options) {
|
|
193
|
+
const errorEvaluator = buildMiddlewareEvaluator(options, options.mode ?? 'observe');
|
|
194
|
+
return (err, req, res, next) => {
|
|
195
|
+
if (!options.extractTraceFromError) {
|
|
196
|
+
next(err);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
const trace = options.extractTraceFromError(req, res, err);
|
|
200
|
+
if (!trace) {
|
|
201
|
+
next(err);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
// Evaluate async and pass the original error through
|
|
205
|
+
errorEvaluator(trace).then((result) => {
|
|
206
|
+
// Attach the result to the request for downstream error handlers
|
|
207
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
208
|
+
req._truthguardResult = result;
|
|
209
|
+
next(err);
|
|
210
|
+
}, () => next(err));
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
// ---------------------------------------------------------------------------
|
|
214
|
+
// Standalone evaluator for non-Express environments
|
|
215
|
+
// ---------------------------------------------------------------------------
|
|
216
|
+
/**
|
|
217
|
+
* Evaluate a trace and get the pipeline result directly.
|
|
218
|
+
* Use this when you're not using Express (e.g., Fastify, Hono, custom server).
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```ts
|
|
222
|
+
* import { evaluate } from 'ai-rcp/middleware';
|
|
223
|
+
*
|
|
224
|
+
* const result = await evaluate(trace, {
|
|
225
|
+
* mode: 'block',
|
|
226
|
+
* threshold: 0.9,
|
|
227
|
+
* client: new TruthGuardClient({ apiKey: 'tg_xxx' }),
|
|
228
|
+
* });
|
|
229
|
+
*
|
|
230
|
+
* if (!result.allowed) {
|
|
231
|
+
* return res.json({ error: result.fallbackResponse });
|
|
232
|
+
* }
|
|
233
|
+
* ```
|
|
234
|
+
*/
|
|
235
|
+
async function evaluate(trace, options) {
|
|
236
|
+
const evaluator = buildMiddlewareEvaluator(options, options.mode ?? 'observe');
|
|
237
|
+
return evaluator(trace);
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Middleware/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ai-rcp Operating Modes
|
|
3
|
+
*
|
|
4
|
+
* Defines the five stages of the adoption funnel:
|
|
5
|
+
*
|
|
6
|
+
* debug — local dev, pretty-printed verdict table, no persistence
|
|
7
|
+
* ci — pass/fail gate in CI pipeline, exit code
|
|
8
|
+
* observe — production trace collection + persistence, no intervention
|
|
9
|
+
* warn — observe + alert when score drops below threshold
|
|
10
|
+
* block — real-time interception, rejects responses below threshold
|
|
11
|
+
*
|
|
12
|
+
* Each mode is a superset of the previous:
|
|
13
|
+
* debug ⊂ ci ⊂ observe ⊂ warn ⊂ block
|
|
14
|
+
*/
|
|
15
|
+
import type { GroundingReport, Trace, ToleranceConfig } from '../types';
|
|
16
|
+
import type { TraceStore } from '../Store';
|
|
17
|
+
import type { AlertDispatcher } from '../Alerting';
|
|
18
|
+
import type { Policy, PolicyDecision } from '../Policy';
|
|
19
|
+
/** The five operating modes, from lightest to heaviest. */
|
|
20
|
+
export type Mode = 'debug' | 'ci' | 'observe' | 'warn' | 'block';
|
|
21
|
+
/** Configuration for the ai-rcp pipeline. */
|
|
22
|
+
export interface PipelineConfig {
|
|
23
|
+
/** Operating mode. */
|
|
24
|
+
mode: Mode;
|
|
25
|
+
/** Grounding score threshold (0–1). Used by warn and block modes. Default: 0.75. */
|
|
26
|
+
threshold?: number;
|
|
27
|
+
/** Tolerance overrides for the grounding engine. */
|
|
28
|
+
tolerances?: Partial<ToleranceConfig>;
|
|
29
|
+
/** Trace store for persistence (observe/warn/block). */
|
|
30
|
+
store?: TraceStore;
|
|
31
|
+
/** Alert dispatchers for warn/block modes. */
|
|
32
|
+
alerters?: AlertDispatcher[];
|
|
33
|
+
/**
|
|
34
|
+
* Callback when a response is blocked (block mode only).
|
|
35
|
+
* Return a fallback response string, or null to use the default.
|
|
36
|
+
*/
|
|
37
|
+
onBlock?: (report: GroundingReport) => string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Callback fired after every evaluation (all modes).
|
|
40
|
+
* Useful for custom logging, metrics export, etc.
|
|
41
|
+
*/
|
|
42
|
+
onEvaluate?: (report: GroundingReport, trace: Trace) => void;
|
|
43
|
+
/**
|
|
44
|
+
* Policy for per-failure-type block/warn/observe decisions.
|
|
45
|
+
* When provided, the pipeline uses policy-based decisions instead of
|
|
46
|
+
* (or in addition to) the score threshold.
|
|
47
|
+
* Use `buildDefaultPolicy()` for a policy derived from the registry.
|
|
48
|
+
*/
|
|
49
|
+
policy?: Policy;
|
|
50
|
+
}
|
|
51
|
+
/** The result of running a trace through the pipeline. */
|
|
52
|
+
export interface PipelineResult {
|
|
53
|
+
/** The grounding report. */
|
|
54
|
+
report: GroundingReport;
|
|
55
|
+
/** Whether the response was allowed through. */
|
|
56
|
+
allowed: boolean;
|
|
57
|
+
/** If blocked, the fallback message. */
|
|
58
|
+
fallbackResponse?: string;
|
|
59
|
+
/** Alerts that were dispatched (warn/block). */
|
|
60
|
+
alertsSent: number;
|
|
61
|
+
/** Policy evaluation result (present when a policy is configured). */
|
|
62
|
+
policyDecision?: PolicyDecision;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The core pipeline that runs a trace through the appropriate mode.
|
|
66
|
+
* This is the single entry point for all modes.
|
|
67
|
+
*/
|
|
68
|
+
export declare class Pipeline {
|
|
69
|
+
private readonly config;
|
|
70
|
+
private readonly engine;
|
|
71
|
+
constructor(config: PipelineConfig);
|
|
72
|
+
/** Evaluate a trace through the pipeline. */
|
|
73
|
+
evaluate(trace: Trace, meta?: {
|
|
74
|
+
orgId?: string;
|
|
75
|
+
projectId?: string;
|
|
76
|
+
environment?: string;
|
|
77
|
+
userId?: string;
|
|
78
|
+
}): Promise<PipelineResult>;
|
|
79
|
+
/** Quick evaluate that returns just the report (debug/ci convenience). */
|
|
80
|
+
check(trace: Trace): GroundingReport;
|
|
81
|
+
private shouldPersist;
|
|
82
|
+
private shouldAlert;
|
|
83
|
+
private dispatchAlerts;
|
|
84
|
+
}
|
|
85
|
+
/** Create a pipeline with the given mode and options. */
|
|
86
|
+
export declare function createPipeline(mode: Mode, options?: Omit<PipelineConfig, 'mode'>): Pipeline;
|
|
87
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Mode/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,KAAK,EACL,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOxD,2DAA2D;AAC3D,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjE,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,sBAAsB;IACtB,IAAI,EAAE,IAAI,CAAC;IAEX,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAEtC,wDAAwD;IACxD,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAE7B;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,CAAC;IAErD;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAE7D;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,0DAA0D;AAC1D,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,MAAM,EAAE,eAAe,CAAC;IACxB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAeD;;;GAGG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGN;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,MAAM,EAAE,cAAc;IAUlC,6CAA6C;IACvC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAqD3I,0EAA0E;IAC1E,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe;IAIpC,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;YAIL,cAAc;CAgB7B;AAMD,yDAAyD;AACzD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAM,GACzC,QAAQ,CAEV"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ai-rcp Operating Modes
|
|
4
|
+
*
|
|
5
|
+
* Defines the five stages of the adoption funnel:
|
|
6
|
+
*
|
|
7
|
+
* debug — local dev, pretty-printed verdict table, no persistence
|
|
8
|
+
* ci — pass/fail gate in CI pipeline, exit code
|
|
9
|
+
* observe — production trace collection + persistence, no intervention
|
|
10
|
+
* warn — observe + alert when score drops below threshold
|
|
11
|
+
* block — real-time interception, rejects responses below threshold
|
|
12
|
+
*
|
|
13
|
+
* Each mode is a superset of the previous:
|
|
14
|
+
* debug ⊂ ci ⊂ observe ⊂ warn ⊂ block
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.Pipeline = void 0;
|
|
18
|
+
exports.createPipeline = createPipeline;
|
|
19
|
+
const Grounding_1 = require("../Grounding");
|
|
20
|
+
const Policy_1 = require("../Policy");
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Default fallback
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
const DEFAULT_THRESHOLD = 0.75;
|
|
25
|
+
const DEFAULT_FALLBACK = 'I apologize, but I cannot verify the accuracy of this response. ' +
|
|
26
|
+
'Please try again or contact support for assistance.';
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Pipeline core
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
/**
|
|
31
|
+
* The core pipeline that runs a trace through the appropriate mode.
|
|
32
|
+
* This is the single entry point for all modes.
|
|
33
|
+
*/
|
|
34
|
+
class Pipeline {
|
|
35
|
+
constructor(config) {
|
|
36
|
+
this.config = {
|
|
37
|
+
...config,
|
|
38
|
+
threshold: config.threshold ?? DEFAULT_THRESHOLD,
|
|
39
|
+
};
|
|
40
|
+
this.engine = new Grounding_1.GroundingEngine({
|
|
41
|
+
tolerances: config.tolerances,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/** Evaluate a trace through the pipeline. */
|
|
45
|
+
async evaluate(trace, meta) {
|
|
46
|
+
const report = this.engine.evaluate(trace);
|
|
47
|
+
const result = {
|
|
48
|
+
report,
|
|
49
|
+
allowed: true,
|
|
50
|
+
alertsSent: 0,
|
|
51
|
+
};
|
|
52
|
+
// Callback hook (all modes)
|
|
53
|
+
this.config.onEvaluate?.(report, trace);
|
|
54
|
+
// ---- Policy evaluation (when configured) ----------------------------
|
|
55
|
+
const policy = this.config.policy;
|
|
56
|
+
let policyDecision;
|
|
57
|
+
if (policy) {
|
|
58
|
+
policyDecision = (0, Policy_1.evaluatePolicy)(report, policy);
|
|
59
|
+
result.policyDecision = policyDecision;
|
|
60
|
+
}
|
|
61
|
+
// ---- Observe / Warn / Block: persist --------------------------------
|
|
62
|
+
if (this.shouldPersist() &&
|
|
63
|
+
this.config.store) {
|
|
64
|
+
await this.config.store.save(trace, report, meta);
|
|
65
|
+
}
|
|
66
|
+
// ---- Warn / Block: alert --------------------------------------------
|
|
67
|
+
const shouldAlertByScore = report.groundingScore < this.config.threshold;
|
|
68
|
+
const shouldAlertByPolicy = policyDecision?.shouldWarn || policyDecision?.shouldBlock;
|
|
69
|
+
if (this.shouldAlert() &&
|
|
70
|
+
(shouldAlertByScore || shouldAlertByPolicy)) {
|
|
71
|
+
result.alertsSent = await this.dispatchAlerts(report, trace);
|
|
72
|
+
}
|
|
73
|
+
// ---- Block: reject --------------------------------------------------
|
|
74
|
+
const shouldBlockByScore = report.groundingScore < this.config.threshold;
|
|
75
|
+
const shouldBlockByPolicy = policyDecision?.shouldBlock;
|
|
76
|
+
if (this.config.mode === 'block' &&
|
|
77
|
+
(shouldBlockByScore || shouldBlockByPolicy)) {
|
|
78
|
+
result.allowed = false;
|
|
79
|
+
const custom = this.config.onBlock?.(report);
|
|
80
|
+
result.fallbackResponse = custom ?? DEFAULT_FALLBACK;
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
/** Quick evaluate that returns just the report (debug/ci convenience). */
|
|
85
|
+
check(trace) {
|
|
86
|
+
return this.engine.evaluate(trace);
|
|
87
|
+
}
|
|
88
|
+
shouldPersist() {
|
|
89
|
+
return ['observe', 'warn', 'block'].includes(this.config.mode);
|
|
90
|
+
}
|
|
91
|
+
shouldAlert() {
|
|
92
|
+
return ['warn', 'block'].includes(this.config.mode);
|
|
93
|
+
}
|
|
94
|
+
async dispatchAlerts(report, trace) {
|
|
95
|
+
const alerters = this.config.alerters ?? [];
|
|
96
|
+
let sent = 0;
|
|
97
|
+
for (const alerter of alerters) {
|
|
98
|
+
try {
|
|
99
|
+
await alerter.dispatch(report, trace);
|
|
100
|
+
sent++;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Don't let alerting failures break the pipeline
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return sent;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.Pipeline = Pipeline;
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// Convenience factory
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
/** Create a pipeline with the given mode and options. */
|
|
114
|
+
function createPipeline(mode, options = {}) {
|
|
115
|
+
return new Pipeline({ ...options, mode });
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=index.js.map
|