avantgate 1.2.2 → 1.4.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 +8 -3
- package/dist/agent/index.js +54 -14
- package/dist/agent/index.mjs +60 -289
- package/dist/agent/isolated-tool.d.ts.map +1 -1
- package/dist/agent/registry.d.ts +7 -2
- package/dist/agent/registry.d.ts.map +1 -1
- package/dist/agent/strategy.d.ts +18 -2
- package/dist/agent/strategy.d.ts.map +1 -1
- package/dist/agent/types.d.ts +13 -6
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/chunk-5VA3EKPJ.mjs +344 -0
- package/dist/chunk-DTM2OLCG.mjs +252 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +478 -0
- package/dist/index.mjs +13 -3
- package/dist/workflow/define-workflow.d.ts +3 -0
- package/dist/workflow/define-workflow.d.ts.map +1 -0
- package/dist/workflow/engine.d.ts +3 -0
- package/dist/workflow/engine.d.ts.map +1 -0
- package/dist/workflow/errors.d.ts +24 -0
- package/dist/workflow/errors.d.ts.map +1 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +558 -0
- package/dist/workflow/index.mjs +13 -0
- package/dist/workflow/types.d.ts +64 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/package.json +13 -4
- package/dist/chunk-DVCF4CSV.mjs +0 -56
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agent/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agent/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE5F,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAmED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IAEvE;;OAEG;IACI,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,GAAG,IAAI;IASjE;;OAEG;IACI,YAAY,CAAC,KAAK,EAAE,CAAC,cAAc,GAAG,gBAAgB,CAAC,EAAE,GAAG,IAAI;IAOvE;;OAEG;IACI,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIxD;;OAEG;IACI,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAItD;;OAEG;IACI,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAItE;;OAEG;IACI,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACI,MAAM,IAAI,cAAc,EAAE;IAIjC;;OAEG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE;IAIpD;;OAEG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE;IASlD;;OAEG;IACI,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE;IAW3D;;OAEG;IACI,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE;IAIxD;;OAEG;IACI,cAAc,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc,EAAE;IActE;;OAEG;IACI,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAIhF;;;OAGG;WACW,QAAQ,CACpB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;CAYpC"}
|
package/dist/agent/strategy.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RegisteredTool, ToolContext, ToolSelectionStrategy, VercelAiCoreTool } from "./types";
|
|
1
|
+
import type { RegisteredTool, ToolContext, ToolImpact, ToolSelectionStrategy, VercelAiCoreTool } from "./types";
|
|
2
2
|
/**
|
|
3
3
|
* Strategy selecting tools that match the current workflow phase.
|
|
4
4
|
*/
|
|
@@ -11,14 +11,30 @@ export declare class PhaseBasedToolStrategy implements ToolSelectionStrategy {
|
|
|
11
11
|
export declare class RoleBasedToolStrategy implements ToolSelectionStrategy {
|
|
12
12
|
selectTools(tools: RegisteredTool[], context: ToolContext): RegisteredTool[];
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Strategy selecting exclusively observation/read-only tools (ideal for auditors, critics, reflection).
|
|
16
|
+
*/
|
|
17
|
+
export declare class ReadOnlyToolStrategy implements ToolSelectionStrategy {
|
|
18
|
+
selectTools(tools: RegisteredTool[], _context: ToolContext): RegisteredTool[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Strategy capping maximum permitted impact level for autonomous agents.
|
|
22
|
+
*/
|
|
23
|
+
export declare class MaxImpactToolStrategy implements ToolSelectionStrategy {
|
|
24
|
+
private readonly maxImpact;
|
|
25
|
+
constructor(maxImpact: ToolImpact);
|
|
26
|
+
selectTools(tools: RegisteredTool[], _context: ToolContext): RegisteredTool[];
|
|
27
|
+
}
|
|
14
28
|
export interface AccessControlToolStrategyOptions {
|
|
15
29
|
allowedDomains?: string[];
|
|
30
|
+
maxImpact?: ToolImpact;
|
|
16
31
|
}
|
|
17
32
|
/**
|
|
18
|
-
* Unified strategy evaluating
|
|
33
|
+
* Unified strategy evaluating user roles, allowed business domains and maximum impact in a single pass.
|
|
19
34
|
*/
|
|
20
35
|
export declare class AccessControlToolStrategy implements ToolSelectionStrategy {
|
|
21
36
|
private readonly allowedDomains?;
|
|
37
|
+
private readonly maxImpact?;
|
|
22
38
|
constructor(options?: AccessControlToolStrategyOptions);
|
|
23
39
|
selectTools(tools: RegisteredTool[], context: ToolContext): RegisteredTool[];
|
|
24
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/agent/strategy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/agent/strategy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAgBjB;;GAEG;AACH,qBAAa,sBAAuB,YAAW,qBAAqB;IAC3D,WAAW,CAChB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,WAAW,GACnB,cAAc,EAAE;CAYpB;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,qBAAqB;IAC1D,WAAW,CAChB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,WAAW,GACnB,cAAc,EAAE;CAgBpB;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,qBAAqB;IACzD,WAAW,CAChB,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,EAAE,WAAW,GACpB,cAAc,EAAE;CAGpB;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,qBAAqB;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;gBAE3B,SAAS,EAAE,UAAU;IAI1B,WAAW,CAChB,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,EAAE,WAAW,GACpB,cAAc,EAAE;CAOpB;AAED,MAAM,WAAW,gCAAgC;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB;AA2BD;;GAEG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;IACrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAc;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAa;gBAE5B,OAAO,CAAC,EAAE,gCAAgC;IAO/C,WAAW,CAChB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,WAAW,GACnB,cAAc,EAAE;CAQpB;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,qBAAqB;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;gBAEzC,UAAU,EAAE,qBAAqB,EAAE;IAIlC,WAAW,CACtB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,EAAE,CAAC;CAO7B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAG3C"}
|
package/dist/agent/types.d.ts
CHANGED
|
@@ -122,6 +122,10 @@ export interface ToolExecutionContext {
|
|
|
122
122
|
onInvalidationTags?: (tags: string[]) => void | Promise<void>;
|
|
123
123
|
[key: string]: unknown;
|
|
124
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Nature physique d'effet de bord et rayon d'action de l'outil pour le confinement du LLM.
|
|
127
|
+
*/
|
|
128
|
+
export type ToolImpact = "READ_ONLY" | "MUTATIVE" | "DESTRUCTIVE";
|
|
125
129
|
/**
|
|
126
130
|
* User and environment context injected into tools.
|
|
127
131
|
*/
|
|
@@ -130,7 +134,6 @@ export interface ToolContext {
|
|
|
130
134
|
tenantId?: string;
|
|
131
135
|
role?: string;
|
|
132
136
|
roles?: string[];
|
|
133
|
-
permissions?: string[];
|
|
134
137
|
phase?: string;
|
|
135
138
|
metadata?: Record<string, unknown>;
|
|
136
139
|
[key: string]: unknown;
|
|
@@ -154,7 +157,7 @@ export type InvalidationTagsResolver<TArgs = any, TResult = any> = string[] | ((
|
|
|
154
157
|
export type DataAccessGuard<TArgs = any> = (args: TArgs, context?: ToolExecutionContext) => boolean | Promise<boolean>;
|
|
155
158
|
/**
|
|
156
159
|
* Configuration for creating an isolated tool with PII protection, Dual-Channel DTO,
|
|
157
|
-
* access governance, stable ID, aliasing and caching.
|
|
160
|
+
* access governance, stable ID, aliasing, impact categorization and caching.
|
|
158
161
|
*/
|
|
159
162
|
export interface IsolatedToolConfig<TArgs = any, TResult = any, TLLMDto = unknown, TClientDto = TResult> {
|
|
160
163
|
id?: string;
|
|
@@ -164,7 +167,7 @@ export interface IsolatedToolConfig<TArgs = any, TResult = any, TLLMDto = unknow
|
|
|
164
167
|
domain?: string;
|
|
165
168
|
resource?: string;
|
|
166
169
|
roles?: string[];
|
|
167
|
-
|
|
170
|
+
impact?: ToolImpact;
|
|
168
171
|
requireApproval?: boolean;
|
|
169
172
|
dataAccessGuard?: DataAccessGuard<TArgs>;
|
|
170
173
|
invalidationTags?: InvalidationTagsResolver<TArgs, TResult>;
|
|
@@ -195,11 +198,15 @@ export interface VercelAiCoreTool<TArgs = any, TResult = any> {
|
|
|
195
198
|
readonly _domain?: string;
|
|
196
199
|
readonly _resource?: string;
|
|
197
200
|
readonly _roles?: readonly string[];
|
|
198
|
-
readonly
|
|
201
|
+
readonly _impact?: ToolImpact;
|
|
199
202
|
readonly _requireApproval?: boolean;
|
|
200
203
|
_lastPiiFilteredCount?: number;
|
|
201
204
|
_lastInvalidationTags?: string[];
|
|
202
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Isolated Tool contract returned by createIsolatedTool and asTool().
|
|
208
|
+
*/
|
|
209
|
+
export type IsolatedTool<TArgs = any, TResult = any> = VercelAiCoreTool<TArgs, TResult>;
|
|
203
210
|
/**
|
|
204
211
|
* Metadata and descriptor for registered tools in the registry.
|
|
205
212
|
*/
|
|
@@ -211,7 +218,7 @@ export interface RegisteredTool<TArgs = any, TResult = any> {
|
|
|
211
218
|
domain?: string;
|
|
212
219
|
resource?: string;
|
|
213
220
|
roles?: string[];
|
|
214
|
-
|
|
221
|
+
impact?: ToolImpact;
|
|
215
222
|
phases?: string[];
|
|
216
223
|
requiredRoles?: string[];
|
|
217
224
|
tags?: string[];
|
|
@@ -229,7 +236,7 @@ export interface ToolDescriptor {
|
|
|
229
236
|
domain?: string;
|
|
230
237
|
resource?: string;
|
|
231
238
|
roles?: string[];
|
|
232
|
-
|
|
239
|
+
impact?: ToolImpact;
|
|
233
240
|
requireApproval?: boolean;
|
|
234
241
|
cacheTTL?: number;
|
|
235
242
|
tags?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,GACR,kBAAkB,CAAC;AAEvB;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,OAAO,GAAG,OAAO;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxF,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAC1B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAGrD,iBAAiB,CAAC,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,kBAAkB,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1F,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5D,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,gBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,gBAAgB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,CAAC,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,eAAe,CAAC,CAAC,GAAG,OAAO,EACzB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,EAAE,OAAO,GAAG,OAAO,IAAI,CACxE,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,KAAK,EACX,OAAO,CAAC,EAAE,oBAAoB,KAC3B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,GAAG,OAAO,IAAI,CACjD,IAAI,EAAE,OAAO,KACV,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,IAC3D,MAAM,EAAE,GACR,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,KAAK,GAAG,GAAG,IAAI,CACzC,IAAI,EAAE,KAAK,EACX,OAAO,CAAC,EAAE,oBAAoB,KAC3B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC;;;GAGG;AACH,MAAM,WAAW,kBAAkB,CACjC,KAAK,GAAG,GAAG,EACX,OAAO,GAAG,GAAG,EACb,OAAO,GAAG,OAAO,EACjB,UAAU,GAAG,OAAO;IAEpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5D,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,SAAS,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,CACT,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,WAAW,GACnB,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CACjD"}
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
// src/sanitizer.ts
|
|
2
|
+
var EMAIL_REGEX = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b/g;
|
|
3
|
+
var PHONE_FR_REGEX = /\b(?:(?:\+|00)33|0)\s*[1-9](?:[\s.-]*\d{2}){4}\b/g;
|
|
4
|
+
var NIR_SSN_REGEX = /\b[12]\s*\d{2}\s*(?:0[1-9]|1[0-2]|[2-9]\d)\s*(?:0[1-9]|[1-8]\d|9[0-8]|2[ABab])\s*(?!000)\d{3}\s*(?!000)\d{3}(?:\s*\d{2})?\b/g;
|
|
5
|
+
var SPI_LABELLED_REGEX = /(?:(?:num[ée]ro\s+fiscal|spi|n[°o]\s*fiscal|d[ée]clarant(?: fiscal)?)\s*[:=]?\s*)\b(\d{2}(?:[\s.-]?\d{2}){5}[\s.-]?\d|\d{13})\b/gi;
|
|
6
|
+
var SPI_FORMATTED_REGEX = /\b[0-3]\d(?:\s+\d{2}){5}\s+\d\b/g;
|
|
7
|
+
var IBAN_REGEX = /\b[A-Z]{2}\s*[0-9]{2}(?:[\s\r\n.-]*[A-Z0-9]){11,30}\b/g;
|
|
8
|
+
var BIC_LABELLED_REGEX = /(?:(?:bic|swift)\s*[:=]?\s*)\b([A-Z]{4}[A-Z]{2}[A-Z0-9]{2}(?:[A-Z0-9]{3})?)\b/gi;
|
|
9
|
+
function sanitizePII(input) {
|
|
10
|
+
let count = 0;
|
|
11
|
+
let result = input;
|
|
12
|
+
result = result.replace(EMAIL_REGEX, () => {
|
|
13
|
+
count++;
|
|
14
|
+
return "[REDACTED_EMAIL]";
|
|
15
|
+
});
|
|
16
|
+
result = result.replace(PHONE_FR_REGEX, () => {
|
|
17
|
+
count++;
|
|
18
|
+
return "[REDACTED_PHONE]";
|
|
19
|
+
});
|
|
20
|
+
result = result.replace(IBAN_REGEX, (match) => {
|
|
21
|
+
const cleanChars = match.replace(/[\s\r\n.-]/g, "");
|
|
22
|
+
if (cleanChars.length >= 15 && cleanChars.length <= 34) {
|
|
23
|
+
count++;
|
|
24
|
+
return "[REDACTED_IBAN]";
|
|
25
|
+
}
|
|
26
|
+
return match;
|
|
27
|
+
});
|
|
28
|
+
result = result.replace(BIC_LABELLED_REGEX, (_, bicCode) => {
|
|
29
|
+
count++;
|
|
30
|
+
return `[REDACTED_BIC: ${bicCode.slice(0, 4)}****]`;
|
|
31
|
+
});
|
|
32
|
+
result = result.replace(SPI_LABELLED_REGEX, (fullMatch, digits) => {
|
|
33
|
+
count++;
|
|
34
|
+
return fullMatch.replace(digits, "[REDACTED_SPI]");
|
|
35
|
+
});
|
|
36
|
+
result = result.replace(NIR_SSN_REGEX, (match) => {
|
|
37
|
+
const rawDigits = match.replace(/\s+/g, "");
|
|
38
|
+
if (rawDigits.length === 13 || rawDigits.length === 15) {
|
|
39
|
+
count++;
|
|
40
|
+
return "[REDACTED_NIR]";
|
|
41
|
+
}
|
|
42
|
+
return match;
|
|
43
|
+
});
|
|
44
|
+
result = result.replace(SPI_FORMATTED_REGEX, (match) => {
|
|
45
|
+
if (!match.includes("[REDACTED")) {
|
|
46
|
+
count++;
|
|
47
|
+
return "[REDACTED_SPI]";
|
|
48
|
+
}
|
|
49
|
+
return match;
|
|
50
|
+
});
|
|
51
|
+
return { text: result, maskedCount: count };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// src/agent/errors.ts
|
|
55
|
+
var StepSuspendedError = class extends Error {
|
|
56
|
+
stepId;
|
|
57
|
+
workflowId;
|
|
58
|
+
metadata;
|
|
59
|
+
constructor(stepId, workflowId, metadata) {
|
|
60
|
+
super(`Step execution suspended for human approval: [${workflowId}::${stepId}]`);
|
|
61
|
+
this.name = "StepSuspendedError";
|
|
62
|
+
this.stepId = stepId;
|
|
63
|
+
this.workflowId = workflowId;
|
|
64
|
+
this.metadata = metadata;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
var PiiLeakError = class extends Error {
|
|
68
|
+
toolName;
|
|
69
|
+
maskedCount;
|
|
70
|
+
constructor(toolName, maskedCount) {
|
|
71
|
+
super(`PII leak detected in tool output for "${toolName}" (${maskedCount} occurrences detected).`);
|
|
72
|
+
this.name = "PiiLeakError";
|
|
73
|
+
this.toolName = toolName;
|
|
74
|
+
this.maskedCount = maskedCount;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
var StepExecutionError = class extends Error {
|
|
78
|
+
stepId;
|
|
79
|
+
workflowId;
|
|
80
|
+
originalError;
|
|
81
|
+
constructor(stepId, workflowId, message, originalError) {
|
|
82
|
+
super(`Execution failed at step [${workflowId}::${stepId}]: ${message}`);
|
|
83
|
+
this.name = "StepExecutionError";
|
|
84
|
+
this.stepId = stepId;
|
|
85
|
+
this.workflowId = workflowId;
|
|
86
|
+
this.originalError = originalError;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
var ToolAccessDeniedError = class extends Error {
|
|
90
|
+
toolName;
|
|
91
|
+
requiredRole;
|
|
92
|
+
reason;
|
|
93
|
+
constructor(toolName, reasonOrRole) {
|
|
94
|
+
const isRole = Boolean(reasonOrRole && !reasonOrRole.includes(" "));
|
|
95
|
+
const roleMsg = isRole ? ` (requires role "${reasonOrRole}")` : "";
|
|
96
|
+
const reasonMsg = reasonOrRole && !isRole ? `: ${reasonOrRole}` : "";
|
|
97
|
+
super(`Access denied for tool "${toolName}"${roleMsg}${reasonMsg}.`);
|
|
98
|
+
this.name = "ToolAccessDeniedError";
|
|
99
|
+
this.toolName = toolName;
|
|
100
|
+
if (isRole) {
|
|
101
|
+
this.requiredRole = reasonOrRole;
|
|
102
|
+
} else {
|
|
103
|
+
this.reason = reasonOrRole;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
var CircularToolCallError = class extends Error {
|
|
108
|
+
cycle;
|
|
109
|
+
constructor(cycle) {
|
|
110
|
+
super(`Circular tool call detected: ${cycle.join(" -> ")}`);
|
|
111
|
+
this.name = "CircularToolCallError";
|
|
112
|
+
this.cycle = cycle;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
var ToolCallDepthExceededError = class extends Error {
|
|
116
|
+
depth;
|
|
117
|
+
maxDepth;
|
|
118
|
+
constructor(depth, maxDepth) {
|
|
119
|
+
super(`Tool call depth limit exceeded: depth ${depth} exceeds max allowed depth of ${maxDepth}.`);
|
|
120
|
+
this.name = "ToolCallDepthExceededError";
|
|
121
|
+
this.depth = depth;
|
|
122
|
+
this.maxDepth = maxDepth;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
var ToolSubCallQuotaError = class extends Error {
|
|
126
|
+
totalCalls;
|
|
127
|
+
maxCalls;
|
|
128
|
+
constructor(totalCalls, maxCalls) {
|
|
129
|
+
super(`Tool sub-call quota exceeded: ${totalCalls} calls exceeds session quota of ${maxCalls}.`);
|
|
130
|
+
this.name = "ToolSubCallQuotaError";
|
|
131
|
+
this.totalCalls = totalCalls;
|
|
132
|
+
this.maxCalls = maxCalls;
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
var ToolNotFoundError = class extends Error {
|
|
136
|
+
toolId;
|
|
137
|
+
constructor(toolId) {
|
|
138
|
+
super(`Tool not found in registry: "${toolId}".`);
|
|
139
|
+
this.name = "ToolNotFoundError";
|
|
140
|
+
this.toolId = toolId;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
var DtoValidationError = class extends Error {
|
|
144
|
+
toolName;
|
|
145
|
+
issues;
|
|
146
|
+
constructor(toolName, message, issues = []) {
|
|
147
|
+
super(`LLM DTO validation failed for tool "${toolName}": ${message}`);
|
|
148
|
+
this.name = "DtoValidationError";
|
|
149
|
+
this.toolName = toolName;
|
|
150
|
+
this.issues = issues;
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
// src/agent/guardrails.ts
|
|
155
|
+
function sanitizeString(value) {
|
|
156
|
+
const result = sanitizePII(value);
|
|
157
|
+
return { text: result.text, count: result.maskedCount };
|
|
158
|
+
}
|
|
159
|
+
function sanitizeArray(items, options, visited) {
|
|
160
|
+
let totalCount = 0;
|
|
161
|
+
const sanitized = items.map((item) => {
|
|
162
|
+
const res = recursivelySanitize(item, options, visited);
|
|
163
|
+
totalCount += res.count;
|
|
164
|
+
return res.sanitized;
|
|
165
|
+
});
|
|
166
|
+
return { sanitized, count: totalCount };
|
|
167
|
+
}
|
|
168
|
+
function sanitizeObject(target, options, visited) {
|
|
169
|
+
let totalCount = 0;
|
|
170
|
+
const copy = {};
|
|
171
|
+
for (const [key, val] of Object.entries(target)) {
|
|
172
|
+
const res = recursivelySanitize(val, options, visited);
|
|
173
|
+
copy[key] = res.sanitized;
|
|
174
|
+
totalCount += res.count;
|
|
175
|
+
}
|
|
176
|
+
return { sanitized: copy, count: totalCount };
|
|
177
|
+
}
|
|
178
|
+
function recursivelySanitize(data, options, visited = /* @__PURE__ */ new WeakSet()) {
|
|
179
|
+
if (typeof data === "string") {
|
|
180
|
+
const res = sanitizeString(data);
|
|
181
|
+
return { sanitized: res.text, count: res.count };
|
|
182
|
+
}
|
|
183
|
+
if (data !== null && typeof data === "object") {
|
|
184
|
+
if (visited.has(data)) {
|
|
185
|
+
return { sanitized: "[CIRCULAR_REFERENCE]", count: 0 };
|
|
186
|
+
}
|
|
187
|
+
visited.add(data);
|
|
188
|
+
if (Array.isArray(data)) {
|
|
189
|
+
return sanitizeArray(data, options, visited);
|
|
190
|
+
}
|
|
191
|
+
return sanitizeObject(data, options, visited);
|
|
192
|
+
}
|
|
193
|
+
return { sanitized: data, count: 0 };
|
|
194
|
+
}
|
|
195
|
+
function auditToolResult(data, options) {
|
|
196
|
+
const { sanitized, count } = recursivelySanitize(data, options);
|
|
197
|
+
if (options.throwOnPii && count > 0) {
|
|
198
|
+
throw new PiiLeakError(options.toolName, count);
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
sanitizedData: sanitized,
|
|
202
|
+
maskedCount: count
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// src/agent/isolated-tool.ts
|
|
207
|
+
async function verifyDataAccessGuard(guard, args, context, toolIdentifier) {
|
|
208
|
+
if (!guard) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
const isAllowed = await guard(args, context);
|
|
212
|
+
if (!isAllowed) {
|
|
213
|
+
throw new ToolAccessDeniedError(toolIdentifier, "Access denied by data access guard");
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
async function resolveInvalidationTags(config, args, rawResult, context) {
|
|
217
|
+
if (!config.invalidationTags) {
|
|
218
|
+
return void 0;
|
|
219
|
+
}
|
|
220
|
+
const tags = typeof config.invalidationTags === "function" ? await config.invalidationTags(args, rawResult) : config.invalidationTags;
|
|
221
|
+
if (tags && tags.length > 0 && context?.onInvalidationTags) {
|
|
222
|
+
await context.onInvalidationTags(tags);
|
|
223
|
+
}
|
|
224
|
+
return tags;
|
|
225
|
+
}
|
|
226
|
+
async function dispatchClientData(rawResult, callback) {
|
|
227
|
+
if (!callback) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
await callback(rawResult);
|
|
231
|
+
}
|
|
232
|
+
async function produceLlmPayload(rawResult, args, context, transformer) {
|
|
233
|
+
if (transformer) {
|
|
234
|
+
return await transformer(rawResult, args, context);
|
|
235
|
+
}
|
|
236
|
+
return rawResult;
|
|
237
|
+
}
|
|
238
|
+
function validateLlmDto(payload, schema, toolIdentifier) {
|
|
239
|
+
const parseResult = schema.safeParse(payload);
|
|
240
|
+
if (!parseResult.success) {
|
|
241
|
+
const issues = parseResult.error.issues ?? [];
|
|
242
|
+
const errorMessages = issues.map((issue) => `${issue.path.join(".") || "root"}: ${issue.message}`).join(", ");
|
|
243
|
+
throw new DtoValidationError(
|
|
244
|
+
toolIdentifier,
|
|
245
|
+
errorMessages,
|
|
246
|
+
issues
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
return parseResult.data;
|
|
250
|
+
}
|
|
251
|
+
function protectLlmPayload(payload, toolIdentifier, sanitizePii = true, throwOnPii = false) {
|
|
252
|
+
if (!sanitizePii) {
|
|
253
|
+
return { sanitized: payload, count: 0 };
|
|
254
|
+
}
|
|
255
|
+
const { sanitizedData, maskedCount } = auditToolResult(payload, {
|
|
256
|
+
toolName: toolIdentifier,
|
|
257
|
+
throwOnPii
|
|
258
|
+
});
|
|
259
|
+
return { sanitized: sanitizedData, count: maskedCount };
|
|
260
|
+
}
|
|
261
|
+
async function processLlmPayload(rawResult, args, context, config, toolIdentifier) {
|
|
262
|
+
let payload = await produceLlmPayload(rawResult, args, context, config.llmDto);
|
|
263
|
+
if (config.llmDtoSchema) {
|
|
264
|
+
payload = validateLlmDto(payload, config.llmDtoSchema, toolIdentifier);
|
|
265
|
+
}
|
|
266
|
+
return protectLlmPayload(
|
|
267
|
+
payload,
|
|
268
|
+
toolIdentifier,
|
|
269
|
+
config.sanitizePii !== false,
|
|
270
|
+
config.throwOnPii === true
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
function createIsolatedTool(config) {
|
|
274
|
+
const toolId = config.id || config.name;
|
|
275
|
+
const toolAlias = config.alias;
|
|
276
|
+
const clientCallback = config.clientDto;
|
|
277
|
+
const toolIdentifier = toolAlias || config.name;
|
|
278
|
+
const toolImpact = config.impact ?? "READ_ONLY";
|
|
279
|
+
const requireApproval = config.requireApproval ?? toolImpact === "DESTRUCTIVE";
|
|
280
|
+
const tool = {
|
|
281
|
+
description: config.description,
|
|
282
|
+
parameters: config.parameters,
|
|
283
|
+
_toolId: toolId,
|
|
284
|
+
_toolName: config.name,
|
|
285
|
+
_toolAlias: toolAlias,
|
|
286
|
+
_isIsolated: true,
|
|
287
|
+
_cacheTTL: config.cacheTTL,
|
|
288
|
+
_domain: config.domain,
|
|
289
|
+
_resource: config.resource,
|
|
290
|
+
_roles: config.roles ? Object.freeze([...config.roles]) : void 0,
|
|
291
|
+
_impact: toolImpact,
|
|
292
|
+
_requireApproval: requireApproval,
|
|
293
|
+
_lastPiiFilteredCount: 0,
|
|
294
|
+
_lastInvalidationTags: void 0,
|
|
295
|
+
async execute(args, context) {
|
|
296
|
+
const updatedContext = {
|
|
297
|
+
...context,
|
|
298
|
+
callChain: context?.callChain ?? Object.freeze([toolId])
|
|
299
|
+
};
|
|
300
|
+
await verifyDataAccessGuard(
|
|
301
|
+
config.dataAccessGuard,
|
|
302
|
+
args,
|
|
303
|
+
updatedContext,
|
|
304
|
+
toolIdentifier
|
|
305
|
+
);
|
|
306
|
+
const rawResult = await config.execute(args, updatedContext);
|
|
307
|
+
const tags = await resolveInvalidationTags(
|
|
308
|
+
config,
|
|
309
|
+
args,
|
|
310
|
+
rawResult,
|
|
311
|
+
updatedContext
|
|
312
|
+
);
|
|
313
|
+
if (tags) {
|
|
314
|
+
tool._lastInvalidationTags = tags;
|
|
315
|
+
}
|
|
316
|
+
await dispatchClientData(rawResult, clientCallback);
|
|
317
|
+
const protection = await processLlmPayload(
|
|
318
|
+
rawResult,
|
|
319
|
+
args,
|
|
320
|
+
updatedContext,
|
|
321
|
+
config,
|
|
322
|
+
toolIdentifier
|
|
323
|
+
);
|
|
324
|
+
tool._lastPiiFilteredCount = protection.count;
|
|
325
|
+
return protection.sanitized;
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
return tool;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
export {
|
|
332
|
+
sanitizePII,
|
|
333
|
+
StepSuspendedError,
|
|
334
|
+
PiiLeakError,
|
|
335
|
+
StepExecutionError,
|
|
336
|
+
ToolAccessDeniedError,
|
|
337
|
+
CircularToolCallError,
|
|
338
|
+
ToolCallDepthExceededError,
|
|
339
|
+
ToolSubCallQuotaError,
|
|
340
|
+
ToolNotFoundError,
|
|
341
|
+
DtoValidationError,
|
|
342
|
+
auditToolResult,
|
|
343
|
+
createIsolatedTool
|
|
344
|
+
};
|