@vinkius-core/mcp-fusion 2.13.1 → 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/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/presenter/Presenter.d.ts +66 -0
- package/dist/presenter/Presenter.d.ts.map +1 -1
- package/dist/presenter/Presenter.js +89 -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/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/package.json +13 -3
package/dist/index.d.ts
CHANGED
|
@@ -56,9 +56,9 @@ export { createDebugObserver, SpanStatusCode } from './observability/index.js';
|
|
|
56
56
|
/** @category Observability */
|
|
57
57
|
export type { DebugEvent, DebugObserverFn, RouteEvent, ValidateEvent, MiddlewareEvent, ExecuteEvent, ErrorEvent, GovernanceEvent, GovernanceOperation, FusionSpan, FusionTracer, FusionAttributeValue, } from './observability/index.js';
|
|
58
58
|
/** @category Presenter */
|
|
59
|
-
export { ResponseBuilder, response, isResponseBuilder, ui, t, suggest, Presenter, createPresenter, isPresenter, PresenterValidationError, definePresenter, extractZodDescriptions, } from './presenter/index.js';
|
|
59
|
+
export { ResponseBuilder, response, isResponseBuilder, ui, t, suggest, Presenter, createPresenter, isPresenter, PresenterValidationError, definePresenter, extractZodDescriptions, compileRedactor, initRedactEngine, } from './presenter/index.js';
|
|
60
60
|
/** @category Presenter */
|
|
61
|
-
export type { UiBlock, ActionSuggestion, PresenterConfig, AgentLimitDef, EmbedDef } from './presenter/index.js';
|
|
61
|
+
export type { UiBlock, ActionSuggestion, PresenterConfig, AgentLimitDef, EmbedDef, RedactConfig, RedactFn } from './presenter/index.js';
|
|
62
62
|
/** @category Prompt */
|
|
63
63
|
export { definePrompt, PromptMessage, assertFlatSchema, coercePromptArgs } from './prompt/index.js';
|
|
64
64
|
/** @category Prompt */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -58,7 +58,7 @@ export { createFusionClient, createTypedRegistry, FusionClientError } from './cl
|
|
|
58
58
|
export { createDebugObserver, SpanStatusCode } from './observability/index.js';
|
|
59
59
|
// ── Presenter (MVA View Layer) ───────────────────────────
|
|
60
60
|
/** @category Presenter */
|
|
61
|
-
export { ResponseBuilder, response, isResponseBuilder, ui, t, suggest, Presenter, createPresenter, isPresenter, PresenterValidationError, definePresenter, extractZodDescriptions, } from './presenter/index.js';
|
|
61
|
+
export { ResponseBuilder, response, isResponseBuilder, ui, t, suggest, Presenter, createPresenter, isPresenter, PresenterValidationError, definePresenter, extractZodDescriptions, compileRedactor, initRedactEngine, } from './presenter/index.js';
|
|
62
62
|
// ── Prompt Engine ────────────────────────────────────────
|
|
63
63
|
/** @category Prompt */
|
|
64
64
|
export { definePrompt, PromptMessage, assertFlatSchema, coercePromptArgs } from './prompt/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,4DAA4D;AAC5D,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,8BAA8B;AAC9B,OAAO,EAAa,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,8BAA8B;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,8BAA8B;AAC9B,OAAO,EAAoB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,8BAA8B;AAC9B,OAAO,EAAwB,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,8BAA8B;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,8BAA8B;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,4DAA4D;AAC5D,2BAA2B;AAC3B,OAAO,EACH,aAAa,EACQ,kBAAkB,EACnB,iBAAiB,EACf,mBAAmB,EACjB,qBAAqB,EACd,4BAA4B,EAC9D,MAAM,uBAAuB,CAAC;AAE/B,4DAA4D;AAC5D,qBAAqB;AACrB,OAAO,EACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAChD,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAC9D,YAAY,EACZ,uBAAuB,EACvB,OAAO,EAAE,IAAI,EACb,QAAQ,EACR,gBAAgB,EAAE,iBAAiB,EACnC,UAAU,EACV,WAAW,EACX,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa;AACnE,aAAa;AACb,iBAAiB,EAAE,YAAY,GAClC,MAAM,iBAAiB,CAAC;AAqBzB,4DAA4D;AAC5D,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAI/F,4DAA4D;AAC5D,8BAA8B;AAC9B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAS/E,4DAA4D;AAC5D,0BAA0B;AAC1B,OAAO,EACH,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAC5C,EAAE,EAAE,CAAC,EAAE,OAAO,EACd,SAAS,EAAE,eAAe,EAAE,WAAW,EACvC,wBAAwB,EACxB,eAAe,EACf,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -107,6 +107,7 @@ export declare class Presenter<T> {
|
|
|
107
107
|
private _embeds;
|
|
108
108
|
private _sealed;
|
|
109
109
|
private _compiledStringify;
|
|
110
|
+
private _compiledRedactor;
|
|
110
111
|
/** @internal Use {@link createPresenter} factory instead */
|
|
111
112
|
constructor(name: string);
|
|
112
113
|
/**
|
|
@@ -359,6 +360,65 @@ export declare class Presenter<T> {
|
|
|
359
360
|
* ```
|
|
360
361
|
*/
|
|
361
362
|
embed(key: string, childPresenter: Presenter<unknown>): this;
|
|
363
|
+
/**
|
|
364
|
+
* Declare PII fields to redact before data leaves the framework.
|
|
365
|
+
*
|
|
366
|
+
* Uses `fast-redact` (Pino's V8-optimized serialization engine) to
|
|
367
|
+
* compile object paths into hyper-fast masking functions at config
|
|
368
|
+
* time — zero overhead on the hot path.
|
|
369
|
+
*
|
|
370
|
+
* The redaction is applied **structurally** on the wire-facing data
|
|
371
|
+
* (after `_select` filter, before `ResponseBuilder`). UI blocks and
|
|
372
|
+
* system rules still see the **full unmasked data** (Late Guillotine
|
|
373
|
+
* pattern preserved).
|
|
374
|
+
*
|
|
375
|
+
* Requires `fast-redact` as an optional peer dependency.
|
|
376
|
+
* If not installed, passes data through unmodified (defensive fallback).
|
|
377
|
+
*
|
|
378
|
+
* @param paths - Object paths to redact. Supports dot notation,
|
|
379
|
+
* bracket notation, wildcards (`'*'`), and array indices.
|
|
380
|
+
* @param censor - Replacement value. Default: `'[REDACTED]'`.
|
|
381
|
+
* Can be a function `(originalValue) => maskedValue`.
|
|
382
|
+
* @returns `this` for chaining
|
|
383
|
+
*
|
|
384
|
+
* @example
|
|
385
|
+
* ```typescript
|
|
386
|
+
* // Basic PII masking
|
|
387
|
+
* createPresenter('Patient')
|
|
388
|
+
* .schema({ name: t.string, ssn: t.string, diagnosis: t.string })
|
|
389
|
+
* .redactPII(['ssn', 'diagnosis'])
|
|
390
|
+
*
|
|
391
|
+
* // Wildcard — redact all nested SSN fields
|
|
392
|
+
* createPresenter('Users')
|
|
393
|
+
* .redactPII(['*.ssn', '*.password', 'credit_card.number'])
|
|
394
|
+
*
|
|
395
|
+
* // Array wildcard — redact diagnosis in all patients
|
|
396
|
+
* createPresenter('Hospital')
|
|
397
|
+
* .redactPII(['patients[*].diagnosis', 'patients[*].ssn'])
|
|
398
|
+
*
|
|
399
|
+
* // Custom censor — last 4 digits visible
|
|
400
|
+
* createPresenter('Payment')
|
|
401
|
+
* .redactPII(['credit_card.number'], (v) => '****-****-****-' + String(v).slice(-4))
|
|
402
|
+
* ```
|
|
403
|
+
*
|
|
404
|
+
* @see {@link https://github.com/davidmarkclements/fast-redact | fast-redact}
|
|
405
|
+
*/
|
|
406
|
+
redactPII(paths: string[], censor?: string | ((value: unknown) => string)): this;
|
|
407
|
+
/**
|
|
408
|
+
* Alias for `.redactPII()` — fluent shorthand.
|
|
409
|
+
*
|
|
410
|
+
* @param paths - Object paths to redact
|
|
411
|
+
* @param censor - Replacement value or function
|
|
412
|
+
* @returns `this` for chaining
|
|
413
|
+
*
|
|
414
|
+
* @example
|
|
415
|
+
* ```typescript
|
|
416
|
+
* createPresenter('User')
|
|
417
|
+
* .schema({ name: t.string, ssn: t.string })
|
|
418
|
+
* .redact(['ssn'])
|
|
419
|
+
* ```
|
|
420
|
+
*/
|
|
421
|
+
redact(paths: string[], censor?: string | ((value: unknown) => string)): this;
|
|
362
422
|
/**
|
|
363
423
|
* Get the Zod schema's top-level keys.
|
|
364
424
|
*
|
|
@@ -423,6 +483,12 @@ export declare class Presenter<T> {
|
|
|
423
483
|
* ```
|
|
424
484
|
*/
|
|
425
485
|
make(data: T | T[], ctx?: unknown, selectFields?: string[]): ResponseBuilder;
|
|
486
|
+
/**
|
|
487
|
+
* Apply PII redaction to wire-facing data.
|
|
488
|
+
* Creates a deep clone to preserve original data for UI/rules.
|
|
489
|
+
* @internal
|
|
490
|
+
*/
|
|
491
|
+
private _applyRedaction;
|
|
426
492
|
/**
|
|
427
493
|
* Validate data through the Zod schema (if configured).
|
|
428
494
|
* For arrays, each item is validated independently.
|
|
@@ -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":"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;AAUvC;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,CAOvE;AAID,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAiBD,iDAAiD;AACjD,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;AAExE,4DAA4D;AAC5D,KAAK,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;AAEjF,uDAAuD;AACvD,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,gBAAgB,EAAE,CAAC;AAI1E;;;;;;;;;;;;;;GAcG;AACH,qBAAa,SAAS,CAAC,CAAC;IACpB,yDAAyD;IACzD,QAAQ,CAAC,OAAO,oBAAmB;IAEnC,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,aAAa,CAAC,CAAoB;IAC1C,OAAO,CAAC,mBAAmB,CAAC,CAA0B;IACtD,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,WAAW,CAAC,CAAmB;IACvC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,kBAAkB,CAA0B;IACpD,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,4DAA4D;gBAChD,IAAI,EAAE,MAAM;IAMxB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,OAAO,SAAS,OAAO,EAC1B,SAAS,EAAE,OAAO,GACnB,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,MAAM,SAAS,WAAW,EAC7B,KAAK,EAAE,MAAM,GACd,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAuB1C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;IAM7F;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAMrC;;;;;;;;;;;;;;;;;OAiBG;IACH,kBAAkB,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAMrD;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI;IAM5E;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,cAAc,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;IAQ7C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;IAItC;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;IAIvF;;;;;;;;;;;;OAYG;IACH,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAI/B;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI;IAQ5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,SAAS,CACL,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,GAC/C,IAAI;IAYP;;;;;;;;;;;;;OAaG;IACH,MAAM,CACF,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,GAC/C,IAAI;IAMP;;;;;;;OAOG;IACH,aAAa,IAAI,MAAM,EAAE;IAKzB;;;;;;;OAOG;IACH,eAAe,IAAI,MAAM,EAAE;IAS3B;;;;;;;OAOG;IACH,kBAAkB,IAAI,OAAO;IAM7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,eAAe;IAiE5E;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAYvB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAgBjB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAepB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAqBzB;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAEhE"}
|
|
@@ -58,6 +58,7 @@ import {} from './ui.js';
|
|
|
58
58
|
import { PresenterValidationError } from './PresenterValidationError.js';
|
|
59
59
|
import { applySelectFilter, extractZodKeys } from './SelectUtils.js';
|
|
60
60
|
import { defaultSerializer } from '../core/serialization/JsonSerializer.js';
|
|
61
|
+
import { compileRedactor } from './RedactEngine.js';
|
|
61
62
|
// ── Brand ────────────────────────────────────────────────
|
|
62
63
|
const PRESENTER_BRAND = 'FusionPresenter';
|
|
63
64
|
/**
|
|
@@ -105,6 +106,7 @@ export class Presenter {
|
|
|
105
106
|
_embeds = [];
|
|
106
107
|
_sealed = false;
|
|
107
108
|
_compiledStringify;
|
|
109
|
+
_compiledRedactor;
|
|
108
110
|
/** @internal Use {@link createPresenter} factory instead */
|
|
109
111
|
constructor(name) {
|
|
110
112
|
this.name = name;
|
|
@@ -375,6 +377,76 @@ export class Presenter {
|
|
|
375
377
|
this._embeds.push({ key, presenter: childPresenter });
|
|
376
378
|
return this;
|
|
377
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
|
+
}
|
|
378
450
|
// ── Introspection (read-only metadata accessors) ─────
|
|
379
451
|
/**
|
|
380
452
|
* Get the Zod schema's top-level keys.
|
|
@@ -485,7 +557,10 @@ export class Presenter {
|
|
|
485
557
|
const wireData = (selectFields && selectFields.length > 0)
|
|
486
558
|
? applySelectFilter(validated, selectFields, isArray)
|
|
487
559
|
: validated;
|
|
488
|
-
|
|
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);
|
|
489
564
|
// Step 3.5: Truncation warning (first UI block, before all others)
|
|
490
565
|
if (truncationBlock) {
|
|
491
566
|
builder.uiBlock(truncationBlock);
|
|
@@ -501,6 +576,19 @@ export class Presenter {
|
|
|
501
576
|
return builder;
|
|
502
577
|
}
|
|
503
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
|
+
}
|
|
504
592
|
/**
|
|
505
593
|
* Validate data through the Zod schema (if configured).
|
|
506
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;AACrE,OAAO,EAAE,iBAAiB,EAAoB,MAAM,yCAAyC,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"}
|
|
@@ -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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vinkius-core/mcp-fusion",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.14.0",
|
|
4
4
|
"description": "MVA (Model-View-Agent) framework for the Model Context Protocol. Structured perception packages with Presenters, cognitive guardrails, self-healing errors, action consolidation, and tRPC-style type safety — so AI agents perceive and act on your data deterministically.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -82,7 +82,10 @@
|
|
|
82
82
|
"guardrails",
|
|
83
83
|
"agentic",
|
|
84
84
|
"structured-data",
|
|
85
|
-
"action-consolidation"
|
|
85
|
+
"action-consolidation",
|
|
86
|
+
"dlp",
|
|
87
|
+
"compliance",
|
|
88
|
+
"pii-redaction"
|
|
86
89
|
],
|
|
87
90
|
"author": "Vinkius Labs",
|
|
88
91
|
"repository": {
|
|
@@ -113,6 +116,7 @@
|
|
|
113
116
|
"peerDependencies": {
|
|
114
117
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
115
118
|
"fast-json-stringify": "^6.0.0",
|
|
119
|
+
"fast-redact": "^3.0.0",
|
|
116
120
|
"isolated-vm": "^5.0.4",
|
|
117
121
|
"zod": "^3.25.1 || ^4.0.0"
|
|
118
122
|
},
|
|
@@ -125,7 +129,13 @@
|
|
|
125
129
|
},
|
|
126
130
|
"fast-json-stringify": {
|
|
127
131
|
"optional": true
|
|
132
|
+
},
|
|
133
|
+
"fast-redact": {
|
|
134
|
+
"optional": true
|
|
128
135
|
}
|
|
129
136
|
},
|
|
130
|
-
"license": "Apache-2.0"
|
|
137
|
+
"license": "Apache-2.0",
|
|
138
|
+
"devDependencies": {
|
|
139
|
+
"fast-redact": "^3.5.0"
|
|
140
|
+
}
|
|
131
141
|
}
|