@vinkius-core/mcp-fusion 2.13.0 → 2.14.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/dist/core/initFusion.d.ts +16 -0
- package/dist/core/initFusion.d.ts.map +1 -1
- package/dist/core/initFusion.js +3 -0
- package/dist/core/initFusion.js.map +1 -1
- package/dist/core/response.d.ts +2 -1
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +3 -2
- package/dist/core/response.js.map +1 -1
- package/dist/core/serialization/JsonSerializer.d.ts +71 -0
- package/dist/core/serialization/JsonSerializer.d.ts.map +1 -0
- package/dist/core/serialization/JsonSerializer.js +192 -0
- package/dist/core/serialization/JsonSerializer.js.map +1 -0
- package/dist/core/serialization/index.d.ts +7 -0
- package/dist/core/serialization/index.d.ts.map +1 -0
- package/dist/core/serialization/index.js +7 -0
- package/dist/core/serialization/index.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/presenter/Presenter.d.ts +67 -0
- package/dist/presenter/Presenter.d.ts.map +1 -1
- package/dist/presenter/Presenter.js +94 -1
- package/dist/presenter/Presenter.js.map +1 -1
- package/dist/presenter/RedactEngine.d.ts +110 -0
- package/dist/presenter/RedactEngine.d.ts.map +1 -0
- package/dist/presenter/RedactEngine.js +128 -0
- package/dist/presenter/RedactEngine.js.map +1 -0
- package/dist/presenter/ResponseBuilder.d.ts +2 -1
- package/dist/presenter/ResponseBuilder.d.ts.map +1 -1
- package/dist/presenter/ResponseBuilder.js +3 -2
- package/dist/presenter/ResponseBuilder.js.map +1 -1
- package/dist/presenter/definePresenter.d.ts +21 -0
- package/dist/presenter/definePresenter.d.ts.map +1 -1
- package/dist/presenter/definePresenter.js +3 -0
- package/dist/presenter/definePresenter.js.map +1 -1
- package/dist/presenter/index.d.ts +2 -0
- package/dist/presenter/index.d.ts.map +1 -1
- package/dist/presenter/index.js +2 -0
- package/dist/presenter/index.js.map +1 -1
- package/dist/sandbox/SandboxEngine.d.ts +38 -24
- package/dist/sandbox/SandboxEngine.d.ts.map +1 -1
- package/dist/sandbox/SandboxEngine.js +83 -30
- package/dist/sandbox/SandboxEngine.js.map +1 -1
- package/package.json +19 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Presenter.d.ts","sourceRoot":"","sources":["../../src/presenter/Presenter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,EAAY,MAAM,KAAK,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Presenter.d.ts","sourceRoot":"","sources":["../../src/presenter/Presenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,8 @@ import { ResponseBuilder } from './ResponseBuilder.js';
|
|
|
57
57
|
import {} from './ui.js';
|
|
58
58
|
import { PresenterValidationError } from './PresenterValidationError.js';
|
|
59
59
|
import { applySelectFilter, extractZodKeys } from './SelectUtils.js';
|
|
60
|
+
import { defaultSerializer } from '../core/serialization/JsonSerializer.js';
|
|
61
|
+
import { compileRedactor } from './RedactEngine.js';
|
|
60
62
|
// ── Brand ────────────────────────────────────────────────
|
|
61
63
|
const PRESENTER_BRAND = 'FusionPresenter';
|
|
62
64
|
/**
|
|
@@ -103,6 +105,8 @@ export class Presenter {
|
|
|
103
105
|
_agentLimit;
|
|
104
106
|
_embeds = [];
|
|
105
107
|
_sealed = false;
|
|
108
|
+
_compiledStringify;
|
|
109
|
+
_compiledRedactor;
|
|
106
110
|
/** @internal Use {@link createPresenter} factory instead */
|
|
107
111
|
constructor(name) {
|
|
108
112
|
this.name = name;
|
|
@@ -132,6 +136,9 @@ export class Presenter {
|
|
|
132
136
|
// Plain object shape → wrap in z.object()
|
|
133
137
|
narrowed._schema = z.object(schemaOrShape);
|
|
134
138
|
}
|
|
139
|
+
// AOT: Lazy-compile a fast stringify function for this schema.
|
|
140
|
+
// Falls back to JSON.stringify if fast-json-stringify is unavailable.
|
|
141
|
+
narrowed._compiledStringify = defaultSerializer.compile(narrowed._schema);
|
|
135
142
|
return narrowed;
|
|
136
143
|
}
|
|
137
144
|
/**
|
|
@@ -370,6 +377,76 @@ export class Presenter {
|
|
|
370
377
|
this._embeds.push({ key, presenter: childPresenter });
|
|
371
378
|
return this;
|
|
372
379
|
}
|
|
380
|
+
// ── DLP Compliance (PII Redaction) ────────────────────
|
|
381
|
+
/**
|
|
382
|
+
* Declare PII fields to redact before data leaves the framework.
|
|
383
|
+
*
|
|
384
|
+
* Uses `fast-redact` (Pino's V8-optimized serialization engine) to
|
|
385
|
+
* compile object paths into hyper-fast masking functions at config
|
|
386
|
+
* time — zero overhead on the hot path.
|
|
387
|
+
*
|
|
388
|
+
* The redaction is applied **structurally** on the wire-facing data
|
|
389
|
+
* (after `_select` filter, before `ResponseBuilder`). UI blocks and
|
|
390
|
+
* system rules still see the **full unmasked data** (Late Guillotine
|
|
391
|
+
* pattern preserved).
|
|
392
|
+
*
|
|
393
|
+
* Requires `fast-redact` as an optional peer dependency.
|
|
394
|
+
* If not installed, passes data through unmodified (defensive fallback).
|
|
395
|
+
*
|
|
396
|
+
* @param paths - Object paths to redact. Supports dot notation,
|
|
397
|
+
* bracket notation, wildcards (`'*'`), and array indices.
|
|
398
|
+
* @param censor - Replacement value. Default: `'[REDACTED]'`.
|
|
399
|
+
* Can be a function `(originalValue) => maskedValue`.
|
|
400
|
+
* @returns `this` for chaining
|
|
401
|
+
*
|
|
402
|
+
* @example
|
|
403
|
+
* ```typescript
|
|
404
|
+
* // Basic PII masking
|
|
405
|
+
* createPresenter('Patient')
|
|
406
|
+
* .schema({ name: t.string, ssn: t.string, diagnosis: t.string })
|
|
407
|
+
* .redactPII(['ssn', 'diagnosis'])
|
|
408
|
+
*
|
|
409
|
+
* // Wildcard — redact all nested SSN fields
|
|
410
|
+
* createPresenter('Users')
|
|
411
|
+
* .redactPII(['*.ssn', '*.password', 'credit_card.number'])
|
|
412
|
+
*
|
|
413
|
+
* // Array wildcard — redact diagnosis in all patients
|
|
414
|
+
* createPresenter('Hospital')
|
|
415
|
+
* .redactPII(['patients[*].diagnosis', 'patients[*].ssn'])
|
|
416
|
+
*
|
|
417
|
+
* // Custom censor — last 4 digits visible
|
|
418
|
+
* createPresenter('Payment')
|
|
419
|
+
* .redactPII(['credit_card.number'], (v) => '****-****-****-' + String(v).slice(-4))
|
|
420
|
+
* ```
|
|
421
|
+
*
|
|
422
|
+
* @see {@link https://github.com/davidmarkclements/fast-redact | fast-redact}
|
|
423
|
+
*/
|
|
424
|
+
redactPII(paths, censor) {
|
|
425
|
+
this._assertNotSealed();
|
|
426
|
+
const config = {
|
|
427
|
+
paths,
|
|
428
|
+
...(censor !== undefined ? { censor } : {}),
|
|
429
|
+
};
|
|
430
|
+
this._compiledRedactor = compileRedactor(config);
|
|
431
|
+
return this;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Alias for `.redactPII()` — fluent shorthand.
|
|
435
|
+
*
|
|
436
|
+
* @param paths - Object paths to redact
|
|
437
|
+
* @param censor - Replacement value or function
|
|
438
|
+
* @returns `this` for chaining
|
|
439
|
+
*
|
|
440
|
+
* @example
|
|
441
|
+
* ```typescript
|
|
442
|
+
* createPresenter('User')
|
|
443
|
+
* .schema({ name: t.string, ssn: t.string })
|
|
444
|
+
* .redact(['ssn'])
|
|
445
|
+
* ```
|
|
446
|
+
*/
|
|
447
|
+
redact(paths, censor) {
|
|
448
|
+
return this.redactPII(paths, censor);
|
|
449
|
+
}
|
|
373
450
|
// ── Introspection (read-only metadata accessors) ─────
|
|
374
451
|
/**
|
|
375
452
|
* Get the Zod schema's top-level keys.
|
|
@@ -480,7 +557,10 @@ export class Presenter {
|
|
|
480
557
|
const wireData = (selectFields && selectFields.length > 0)
|
|
481
558
|
? applySelectFilter(validated, selectFields, isArray)
|
|
482
559
|
: validated;
|
|
483
|
-
|
|
560
|
+
// Step 3.1: DLP Redaction — mask PII on the wire-facing data
|
|
561
|
+
// Uses structuredClone so UI blocks/rules still see full data.
|
|
562
|
+
const safeWireData = this._applyRedaction(wireData, isArray);
|
|
563
|
+
const builder = new ResponseBuilder(safeWireData, this._compiledStringify);
|
|
484
564
|
// Step 3.5: Truncation warning (first UI block, before all others)
|
|
485
565
|
if (truncationBlock) {
|
|
486
566
|
builder.uiBlock(truncationBlock);
|
|
@@ -496,6 +576,19 @@ export class Presenter {
|
|
|
496
576
|
return builder;
|
|
497
577
|
}
|
|
498
578
|
// ── Private Decomposed Steps ─────────────────────────
|
|
579
|
+
/**
|
|
580
|
+
* Apply PII redaction to wire-facing data.
|
|
581
|
+
* Creates a deep clone to preserve original data for UI/rules.
|
|
582
|
+
* @internal
|
|
583
|
+
*/
|
|
584
|
+
_applyRedaction(data, isArray) {
|
|
585
|
+
if (!this._compiledRedactor)
|
|
586
|
+
return data;
|
|
587
|
+
if (isArray) {
|
|
588
|
+
return data.map(item => this._compiledRedactor(item));
|
|
589
|
+
}
|
|
590
|
+
return this._compiledRedactor(data);
|
|
591
|
+
}
|
|
499
592
|
/**
|
|
500
593
|
* Validate data through the Zod schema (if configured).
|
|
501
594
|
* For arrays, each item is validated independently.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Presenter.js","sourceRoot":"","sources":["../../src/presenter/Presenter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,OAAO,EAAE,CAAC,EAAE,OAAO,EAAoB,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAgB,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Presenter.js","sourceRoot":"","sources":["../../src/presenter/Presenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RedactEngine — DLP Compliance Engine (Zero-Leak PII Protection)
|
|
3
|
+
*
|
|
4
|
+
* Compiles object paths into V8-optimized redaction functions using
|
|
5
|
+
* `fast-redact` (the Pino logger serialization engine). Masks sensitive
|
|
6
|
+
* fields structurally before data leaves the framework.
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* ┌──────────────────────────────────────────────────┐
|
|
10
|
+
* │ Boot / .redactPII() call │
|
|
11
|
+
* │ │
|
|
12
|
+
* │ ['*.ssn', 'credit_card.number'] │
|
|
13
|
+
* │ │ │
|
|
14
|
+
* │ ▼ │
|
|
15
|
+
* │ fast-redact({ paths, censor, serialize: false })│
|
|
16
|
+
* │ │ │
|
|
17
|
+
* │ ▼ │
|
|
18
|
+
* │ Compiled RedactFn (V8-optimized) │
|
|
19
|
+
* │ Applied in Presenter.make() on wireData │
|
|
20
|
+
* └──────────────────────────────────────────────────┘
|
|
21
|
+
*
|
|
22
|
+
* Properties:
|
|
23
|
+
* - Compiles paths into V8-optimized functions at config time
|
|
24
|
+
* - Zero overhead on hot path (pre-compiled redaction)
|
|
25
|
+
* - Wildcards supported: `'*.ssn'`, `'patients[*].diagnosis'`
|
|
26
|
+
* - Custom censor: string or function `(value) => maskedValue`
|
|
27
|
+
* - Zero-risk fallback: if `fast-redact` is not installed, logs warning
|
|
28
|
+
* and passes data through unmodified
|
|
29
|
+
*
|
|
30
|
+
* @module
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* Configuration for PII redaction.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const config: RedactConfig = {
|
|
39
|
+
* paths: ['*.ssn', 'credit_card.number', 'patients[*].diagnosis'],
|
|
40
|
+
* censor: '[REDACTED]',
|
|
41
|
+
* };
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export interface RedactConfig {
|
|
45
|
+
/**
|
|
46
|
+
* Array of object paths to redact, using `fast-redact` syntax.
|
|
47
|
+
*
|
|
48
|
+
* Supports:
|
|
49
|
+
* - Dot notation: `'user.ssn'`
|
|
50
|
+
* - Bracket notation: `'user["ssn"]'`
|
|
51
|
+
* - Wildcards: `'*.ssn'`, `'patients[*].diagnosis'`
|
|
52
|
+
* - Array indices: `'items[0].secret'`
|
|
53
|
+
*
|
|
54
|
+
* @see https://github.com/davidmarkclements/fast-redact#paths--array
|
|
55
|
+
*/
|
|
56
|
+
readonly paths: readonly string[];
|
|
57
|
+
/**
|
|
58
|
+
* Replacement value for redacted fields.
|
|
59
|
+
*
|
|
60
|
+
* - **String**: Static replacement (default: `'[REDACTED]'`)
|
|
61
|
+
* - **Function**: Dynamic censor `(originalValue) => maskedValue`
|
|
62
|
+
* (e.g. `(v) => '***' + String(v).slice(-4)`)
|
|
63
|
+
*
|
|
64
|
+
* @default '[REDACTED]'
|
|
65
|
+
*/
|
|
66
|
+
readonly censor?: string | ((value: unknown) => string);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* A compiled redaction function.
|
|
70
|
+
*
|
|
71
|
+
* Applies PII masking to an object. Uses `structuredClone` internally
|
|
72
|
+
* to preserve the original data for UI blocks and rules
|
|
73
|
+
* (Late Guillotine pattern).
|
|
74
|
+
*/
|
|
75
|
+
export type RedactFn = (data: unknown) => unknown;
|
|
76
|
+
/**
|
|
77
|
+
* Compile a redaction config into a V8-optimized redaction function.
|
|
78
|
+
*
|
|
79
|
+
* The compiled function uses `structuredClone` to avoid mutating the
|
|
80
|
+
* original data (required for Late Guillotine: UI blocks and rules
|
|
81
|
+
* need the full unmasked data).
|
|
82
|
+
*
|
|
83
|
+
* @param config - Redaction configuration (paths + optional censor)
|
|
84
|
+
* @returns A compiled `RedactFn`, or `undefined` if `fast-redact` is unavailable
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const redact = compileRedactor({
|
|
89
|
+
* paths: ['*.ssn', 'credit_card.number'],
|
|
90
|
+
* censor: '[REDACTED]',
|
|
91
|
+
* });
|
|
92
|
+
*
|
|
93
|
+
* if (redact) {
|
|
94
|
+
* const safe = redact(sensitiveData);
|
|
95
|
+
* // safe.ssn === '[REDACTED]'
|
|
96
|
+
* }
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare function compileRedactor(config: RedactConfig): RedactFn | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Pre-load the `fast-redact` module.
|
|
102
|
+
*
|
|
103
|
+
* Called during `initFusion()` boot sequence alongside other
|
|
104
|
+
* optional dependencies. Not required — the engine degrades
|
|
105
|
+
* gracefully if `fast-redact` is not installed.
|
|
106
|
+
*
|
|
107
|
+
* @returns `true` if `fast-redact` is available
|
|
108
|
+
*/
|
|
109
|
+
export declare function initRedactEngine(): Promise<boolean>;
|
|
110
|
+
//# sourceMappingURL=RedactEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RedactEngine.d.ts","sourceRoot":"","sources":["../../src/presenter/RedactEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;CAC3D;AAED;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;AAmClD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,CAiC1E;AAID;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAGzD"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RedactEngine — DLP Compliance Engine (Zero-Leak PII Protection)
|
|
3
|
+
*
|
|
4
|
+
* Compiles object paths into V8-optimized redaction functions using
|
|
5
|
+
* `fast-redact` (the Pino logger serialization engine). Masks sensitive
|
|
6
|
+
* fields structurally before data leaves the framework.
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* ┌──────────────────────────────────────────────────┐
|
|
10
|
+
* │ Boot / .redactPII() call │
|
|
11
|
+
* │ │
|
|
12
|
+
* │ ['*.ssn', 'credit_card.number'] │
|
|
13
|
+
* │ │ │
|
|
14
|
+
* │ ▼ │
|
|
15
|
+
* │ fast-redact({ paths, censor, serialize: false })│
|
|
16
|
+
* │ │ │
|
|
17
|
+
* │ ▼ │
|
|
18
|
+
* │ Compiled RedactFn (V8-optimized) │
|
|
19
|
+
* │ Applied in Presenter.make() on wireData │
|
|
20
|
+
* └──────────────────────────────────────────────────┘
|
|
21
|
+
*
|
|
22
|
+
* Properties:
|
|
23
|
+
* - Compiles paths into V8-optimized functions at config time
|
|
24
|
+
* - Zero overhead on hot path (pre-compiled redaction)
|
|
25
|
+
* - Wildcards supported: `'*.ssn'`, `'patients[*].diagnosis'`
|
|
26
|
+
* - Custom censor: string or function `(value) => maskedValue`
|
|
27
|
+
* - Zero-risk fallback: if `fast-redact` is not installed, logs warning
|
|
28
|
+
* and passes data through unmodified
|
|
29
|
+
*
|
|
30
|
+
* @module
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
let _fastRedact = null;
|
|
34
|
+
async function loadFastRedact() {
|
|
35
|
+
if (_fastRedact === false)
|
|
36
|
+
return null; // already tried, not available
|
|
37
|
+
if (_fastRedact !== null)
|
|
38
|
+
return _fastRedact;
|
|
39
|
+
try {
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
const mod = await import('fast-redact');
|
|
42
|
+
_fastRedact = (typeof mod === 'function' ? mod : mod.default);
|
|
43
|
+
return _fastRedact;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
_fastRedact = false; // mark as unavailable
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Synchronous version — uses the cached function if already loaded.
|
|
51
|
+
function getFastRedact() {
|
|
52
|
+
if (_fastRedact === false || _fastRedact === null)
|
|
53
|
+
return null;
|
|
54
|
+
return _fastRedact;
|
|
55
|
+
}
|
|
56
|
+
// ── Compile Logic ────────────────────────────────────────
|
|
57
|
+
/**
|
|
58
|
+
* Compile a redaction config into a V8-optimized redaction function.
|
|
59
|
+
*
|
|
60
|
+
* The compiled function uses `structuredClone` to avoid mutating the
|
|
61
|
+
* original data (required for Late Guillotine: UI blocks and rules
|
|
62
|
+
* need the full unmasked data).
|
|
63
|
+
*
|
|
64
|
+
* @param config - Redaction configuration (paths + optional censor)
|
|
65
|
+
* @returns A compiled `RedactFn`, or `undefined` if `fast-redact` is unavailable
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* const redact = compileRedactor({
|
|
70
|
+
* paths: ['*.ssn', 'credit_card.number'],
|
|
71
|
+
* censor: '[REDACTED]',
|
|
72
|
+
* });
|
|
73
|
+
*
|
|
74
|
+
* if (redact) {
|
|
75
|
+
* const safe = redact(sensitiveData);
|
|
76
|
+
* // safe.ssn === '[REDACTED]'
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export function compileRedactor(config) {
|
|
81
|
+
if (!config.paths || config.paths.length === 0)
|
|
82
|
+
return undefined;
|
|
83
|
+
const factory = getFastRedact();
|
|
84
|
+
if (!factory)
|
|
85
|
+
return undefined;
|
|
86
|
+
try {
|
|
87
|
+
const redactor = factory({
|
|
88
|
+
paths: [...config.paths],
|
|
89
|
+
censor: config.censor ?? '[REDACTED]',
|
|
90
|
+
serialize: false, // mutate-in-place mode (we clone first)
|
|
91
|
+
});
|
|
92
|
+
// Return a safe function that clones → redacts → returns clone
|
|
93
|
+
return (data) => {
|
|
94
|
+
if (data === null || data === undefined || typeof data !== 'object') {
|
|
95
|
+
return data; // primitives pass through
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
const clone = structuredClone(data);
|
|
99
|
+
redactor(clone);
|
|
100
|
+
return clone;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Defensive: if structuredClone or redaction fails,
|
|
104
|
+
// return original data rather than crash
|
|
105
|
+
return data;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Compilation failed (invalid paths, etc.)
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// ── Async Initialization ─────────────────────────────────
|
|
115
|
+
/**
|
|
116
|
+
* Pre-load the `fast-redact` module.
|
|
117
|
+
*
|
|
118
|
+
* Called during `initFusion()` boot sequence alongside other
|
|
119
|
+
* optional dependencies. Not required — the engine degrades
|
|
120
|
+
* gracefully if `fast-redact` is not installed.
|
|
121
|
+
*
|
|
122
|
+
* @returns `true` if `fast-redact` is available
|
|
123
|
+
*/
|
|
124
|
+
export async function initRedactEngine() {
|
|
125
|
+
const factory = await loadFastRedact();
|
|
126
|
+
return factory !== null;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=RedactEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RedactEngine.js","sourceRoot":"","sources":["../../src/presenter/RedactEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AA0DH,IAAI,WAAW,GAAqC,IAAI,CAAC;AAEzD,KAAK,UAAU,cAAc;IACzB,IAAI,WAAW,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,CAAC,+BAA+B;IACvE,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,WAAW,CAAC;IAE7C,IAAI,CAAC;QACD,8DAA8D;QAC9D,MAAM,GAAG,GAAQ,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,WAAW,GAAG,CAAC,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAsB,CAAC;QACnF,OAAO,WAAW,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACL,WAAW,GAAG,KAAK,CAAC,CAAC,sBAAsB;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,oEAAoE;AACpE,SAAS,aAAa;IAClB,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,4DAA4D;AAE5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IAChD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEjE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC;YACrB,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAa;YACpC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,YAAY;YACrC,SAAS,EAAE,KAAK,EAAE,wCAAwC;SAC7D,CAAC,CAAC;QAEH,+DAA+D;QAC/D,OAAO,CAAC,IAAa,EAAW,EAAE;YAC9B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClE,OAAO,IAAI,CAAC,CAAC,0BAA0B;YAC3C,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBACpC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,OAAO,KAAK,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACL,oDAAoD;gBACpD,yCAAyC;gBACzC,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACL,2CAA2C;QAC3C,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,4DAA4D;AAE5D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IAClC,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;IACvC,OAAO,OAAO,KAAK,IAAI,CAAC;AAC5B,CAAC"}
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
*/
|
|
32
32
|
import { type ToolResponse } from '../core/response.js';
|
|
33
33
|
import { type UiBlock } from './ui.js';
|
|
34
|
+
import { type StringifyFn } from '../core/serialization/JsonSerializer.js';
|
|
34
35
|
/** A suggested next action for HATEOAS-style agent guidance */
|
|
35
36
|
export interface ActionSuggestion {
|
|
36
37
|
readonly tool: string;
|
|
@@ -73,7 +74,7 @@ export declare class ResponseBuilder {
|
|
|
73
74
|
private readonly _suggestions;
|
|
74
75
|
private readonly _rawBlocks;
|
|
75
76
|
/** @internal Use {@link response} factory instead */
|
|
76
|
-
constructor(data: string | object);
|
|
77
|
+
constructor(data: string | object, compiledStringify?: StringifyFn);
|
|
77
78
|
/**
|
|
78
79
|
* Append a UI block to the response.
|
|
79
80
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseBuilder.d.ts","sourceRoot":"","sources":["../../src/presenter/ResponseBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ResponseBuilder.d.ts","sourceRoot":"","sources":["../../src/presenter/ResponseBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAO1E;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAe;IACxB,oEAAoE;IACpE,QAAQ,CAAC,OAAO,0BAA0B;IAE1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAE3C,qDAAqD;gBACzC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,iBAAiB,CAAC,EAAE,WAAW;IAMlE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAU5C;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAK1C;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAK3C;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,IAAI;IAK1D;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO5B;;;;;;;;;;OAUG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;OAIG;IACH,QAAQ,IAAI,SAAS,MAAM,EAAE;IAI7B;;;;OAIG;IACH,WAAW,IAAI,SAAS,OAAO,EAAE;IAIjC;;;;OAIG;IACH,QAAQ,IAAI,SAAS,MAAM,EAAE;IAI7B;;;;OAIG;IACH,cAAc,IAAI,SAAS,gBAAgB,EAAE;IAM7C;;;;;;;;;;;OAWG;IACH,KAAK,IAAI,YAAY;CA0DxB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,CAE/D;yBAFe,QAAQ;mBAmBQ,MAAM,GAAG,MAAM,KAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;0BAsB5E,MAAM,GAAG,MAAM,SACd,SAAS,MAAM,EAAE,KACzB,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
import {} from '../core/response.js';
|
|
33
33
|
import {} from './ui.js';
|
|
34
34
|
import { MVA_META_SYMBOL } from '../testing/MvaMetaSymbol.js';
|
|
35
|
+
import {} from '../core/serialization/JsonSerializer.js';
|
|
35
36
|
// ── Brand ────────────────────────────────────────────────
|
|
36
37
|
const RESPONSE_BUILDER_BRAND = 'FusionResponseBuilder';
|
|
37
38
|
/**
|
|
@@ -77,10 +78,10 @@ export class ResponseBuilder {
|
|
|
77
78
|
_suggestions = [];
|
|
78
79
|
_rawBlocks = [];
|
|
79
80
|
/** @internal Use {@link response} factory instead */
|
|
80
|
-
constructor(data) {
|
|
81
|
+
constructor(data, compiledStringify) {
|
|
81
82
|
this._data = typeof data === 'string'
|
|
82
83
|
? (data || 'OK')
|
|
83
|
-
: JSON.stringify(data, null, 2);
|
|
84
|
+
: (compiledStringify ? compiledStringify(data) : JSON.stringify(data, null, 2));
|
|
84
85
|
}
|
|
85
86
|
uiBlock(blockOrType, content) {
|
|
86
87
|
if (typeof blockOrType === 'object') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseBuilder.js","sourceRoot":"","sources":["../../src/presenter/ResponseBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAqB,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAgB,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ResponseBuilder.js","sourceRoot":"","sources":["../../src/presenter/ResponseBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,6 +116,27 @@ export interface PresenterConfig<T> {
|
|
|
116
116
|
* @default true
|
|
117
117
|
*/
|
|
118
118
|
readonly autoRules?: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* PII redaction paths for DLP compliance.
|
|
121
|
+
*
|
|
122
|
+
* Compiles object paths into V8-optimized masking functions
|
|
123
|
+
* using `fast-redact`. Masked data reaches the LLM, while
|
|
124
|
+
* UI blocks and system rules see the full unmasked data.
|
|
125
|
+
*
|
|
126
|
+
* Requires `fast-redact` as an optional peer dependency.
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* redactPII: {
|
|
131
|
+
* paths: ['*.ssn', 'credit_card.number', 'patients[*].diagnosis'],
|
|
132
|
+
* censor: '[REDACTED]',
|
|
133
|
+
* }
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
readonly redactPII?: {
|
|
137
|
+
readonly paths: string[];
|
|
138
|
+
readonly censor?: string | ((value: unknown) => string);
|
|
139
|
+
};
|
|
119
140
|
}
|
|
120
141
|
/**
|
|
121
142
|
* Define a domain-level Presenter using a declarative config object.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definePresenter.d.ts","sourceRoot":"","sources":["../../src/presenter/definePresenter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAKvC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,kDAAkD;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1D;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,oEAAoE;IACpE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,yDAAyD;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAE7B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAErF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAE7D;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAE1E;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,gBAAgB,EAAE,CAAC;IAEzE;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAEtC;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"definePresenter.d.ts","sourceRoot":"","sources":["../../src/presenter/definePresenter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAKvC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,kDAAkD;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1D;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,oEAAoE;IACpE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,yDAAyD;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAE7B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAErF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAE7D;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAE1E;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,gBAAgB,EAAE,CAAC;IAEzE;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAEtC;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;KAC3D,CAAC;CACL;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAS,OAAO,EACnD,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAClE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAEjC;;;;;GAKG;AACH,wBAAgB,eAAe,CAC3B,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAC1D,SAAS,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -91,6 +91,9 @@ export function definePresenter(config) {
|
|
|
91
91
|
presenter.embed(embed.key, embed.presenter);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
+
if (config.redactPII) {
|
|
95
|
+
presenter.redactPII(config.redactPII.paths, config.redactPII.censor);
|
|
96
|
+
}
|
|
94
97
|
return presenter;
|
|
95
98
|
}
|
|
96
99
|
//# sourceMappingURL=definePresenter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definePresenter.js","sourceRoot":"","sources":["../../src/presenter/definePresenter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAgB,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAgB,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"definePresenter.js","sourceRoot":"","sources":["../../src/presenter/definePresenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,4 +16,6 @@ export { t } from './typeHelpers.js';
|
|
|
16
16
|
export { suggest } from './suggest.js';
|
|
17
17
|
export { postProcessResult, isToolResponse } from './PostProcessor.js';
|
|
18
18
|
export { extractZodKeys, pickFields, applySelectFilter } from './SelectUtils.js';
|
|
19
|
+
export { compileRedactor, initRedactEngine } from './RedactEngine.js';
|
|
20
|
+
export type { RedactConfig, RedactFn } from './RedactEngine.js';
|
|
19
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presenter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpF,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAGrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presenter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpF,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAGrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGjF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/presenter/index.js
CHANGED
|
@@ -23,4 +23,6 @@ export { suggest } from './suggest.js';
|
|
|
23
23
|
export { postProcessResult, isToolResponse } from './PostProcessor.js';
|
|
24
24
|
// ── Select Reflection (Context Window Optimization) ──────
|
|
25
25
|
export { extractZodKeys, pickFields, applySelectFilter } from './SelectUtils.js';
|
|
26
|
+
// ── DLP Compliance (PII Redaction) ───────────────────────
|
|
27
|
+
export { compileRedactor, initRedactEngine } from './RedactEngine.js';
|
|
26
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presenter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,4DAA4D;AAC5D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGpF,4DAA4D;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAG7B,4DAA4D;AAC5D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEzE,4DAA4D;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,4DAA4D;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,4DAA4D;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,4DAA4D;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAErC,4DAA4D;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,4DAA4D;AAC5D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,4DAA4D;AAC5D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presenter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,4DAA4D;AAC5D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGpF,4DAA4D;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAG7B,4DAA4D;AAC5D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEzE,4DAA4D;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,4DAA4D;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,4DAA4D;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,4DAA4D;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAErC,4DAA4D;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,4DAA4D;AAC5D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,4DAA4D;AAC5D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEjF,4DAA4D;AAC5D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|