@develler/remediation-agent 1.0.4 → 1.0.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAUtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAS,yBAAyB,CAAC;AAGnE,YAAY,EAAE,gBAAgB,EAAE,MAAqC,yBAAyB,CAAC;AAC/F,YAAY,EAAE,wBAAwB,EAAE,MAA6B,gCAAgC,CAAC;AACtG,YAAY,EAAE,6BAA6B,EAAE,MAAwB,qCAAqC,CAAC;AAC3G,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAO,yBAAyB,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAA6C,gCAAgC,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAA+C,6BAA6B,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAA6C,6BAA6B,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAuC,mCAAmC,CAAC;AACzG,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAM1G,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAQ,MAAM,CAAC;IACjC,gFAAgF;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAM,gBAAgB,CAAC;IAC3C,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAS,OAAO,CAAC;IAClC,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,CAAC,EAAI,MAAM,CAAC;IACjC,oFAAoF;IACpF,QAAQ,CAAC,WAAW,CAAC,EAAK,MAAM,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAMD,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,OAAO,IAAI,cAAc,CAAC;IAC1B,+EAA+E;IAC/E,aAAa,IAAI,MAAM,CAAC;IACxB,0CAA0C;IAC1C,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAMD,wBAAsB,2BAA2B,CAC/C,GAAG,GAAE,iBAAsB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CA+B3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAWtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAS,yBAAyB,CAAC;AAGnE,YAAY,EAAE,gBAAgB,EAAE,MAAqC,yBAAyB,CAAC;AAC/F,YAAY,EAAE,wBAAwB,EAAE,MAA6B,gCAAgC,CAAC;AACtG,YAAY,EAAE,6BAA6B,EAAE,MAAwB,qCAAqC,CAAC;AAC3G,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAO,yBAAyB,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAA6C,gCAAgC,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAA+C,6BAA6B,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAA6C,6BAA6B,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAuC,mCAAmC,CAAC;AACzG,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAM1G,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAQ,MAAM,CAAC;IACjC,gFAAgF;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAM,gBAAgB,CAAC;IAC3C,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAS,OAAO,CAAC;IAClC,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,CAAC,EAAI,MAAM,CAAC;IACjC,oFAAoF;IACpF,QAAQ,CAAC,WAAW,CAAC,EAAK,MAAM,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAMD,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,OAAO,IAAI,cAAc,CAAC;IAC1B,+EAA+E;IAC/E,aAAa,IAAI,MAAM,CAAC;IACxB,0CAA0C;IAC1C,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAMD,wBAAsB,2BAA2B,CAC/C,GAAG,GAAE,iBAAsB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAgC3B"}
package/dist/index.js CHANGED
@@ -27,6 +27,7 @@ const InstructionCacheService_js_1 = require("./services/InstructionCacheService
27
27
  const MaskingEngine_js_1 = require("./services/MaskingEngine.js");
28
28
  const AgentConnectionService_js_1 = require("./services/AgentConnectionService.js");
29
29
  const remediationInterceptor_js_1 = require("./middleware/remediationInterceptor.js");
30
+ const TelemetryReporterService_js_1 = require("./services/TelemetryReporterService.js");
30
31
  const webhookController_js_1 = require("./controllers/webhookController.js");
31
32
  var instructions_js_1 = require("./types/instructions.js");
32
33
  Object.defineProperty(exports, "MaskRule", { enumerable: true, get: function () { return instructions_js_1.MaskRule; } });
@@ -55,7 +56,8 @@ async function createRemediationMiddleware(cfg = {}) {
55
56
  const breaker = new CircuitBreakerService_js_1.CircuitBreakerService(redis, connection.client_id, cbTtl);
56
57
  const masker = new MaskingEngine_js_1.MaskingEngine();
57
58
  const agentConn = new AgentConnectionService_js_1.AgentConnectionService(redis, cache, connection);
58
- const interceptor = new remediationInterceptor_js_1.RemediationInterceptor(agentConn, masker, breaker, enabled);
59
+ const reporter = new TelemetryReporterService_js_1.TelemetryReporterService(connection);
60
+ const interceptor = new remediationInterceptor_js_1.RemediationInterceptor(agentConn, masker, breaker, enabled, reporter);
59
61
  return {
60
62
  handler() {
61
63
  return interceptor.handler();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { LifecycleInterceptorInterface } from '../contracts/lifecycleInterc
4
4
  import type { MaskRule } from '../types/instructions.js';
5
5
  import { CircuitBreakerService } from '../services/CircuitBreakerService.js';
6
6
  import { MaskingEngine } from '../services/MaskingEngine.js';
7
+ import { TelemetryReporterService } from '../services/TelemetryReporterService.js';
7
8
  /**
8
9
  * Production-grade in-memory interceptor for Express (Mode B).
9
10
  *
@@ -29,7 +30,8 @@ export declare class RemediationInterceptor implements LifecycleInterceptorInter
29
30
  private readonly masker;
30
31
  private readonly breaker;
31
32
  private readonly enabled;
32
- constructor(connection: AgentConnectionInterface, masker: MaskingEngine, breaker: CircuitBreakerService, enabled: boolean);
33
+ private readonly reporter;
34
+ constructor(connection: AgentConnectionInterface, masker: MaskingEngine, breaker: CircuitBreakerService, enabled: boolean, reporter?: TelemetryReporterService | null);
33
35
  /** Returns an Express RequestHandler — the function registered via app.use(). */
34
36
  handler(): RequestHandler;
35
37
  interceptRequest(req: Request, res: Response): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"remediationInterceptor.d.ts","sourceRoot":"","sources":["../../src/middleware/remediationInterceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,sBAAuB,YAAW,6BAA6B;IAExE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHP,UAAU,EAAE,wBAAwB,EACpC,MAAM,EAAM,aAAa,EACzB,OAAO,EAAK,qBAAqB,EACjC,OAAO,EAAK,OAAO;IAGtC,iFAAiF;IACjF,OAAO,IAAI,cAAc;IAiFnB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAC/D,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BrF,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO;IAI1D,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC,kBAAkB,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;CAG3C"}
1
+ {"version":3,"file":"remediationInterceptor.d.ts","sourceRoot":"","sources":["../../src/middleware/remediationInterceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAGnF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,sBAAuB,YAAW,6BAA6B;IAExE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAJR,UAAU,EAAE,wBAAwB,EACpC,MAAM,EAAM,aAAa,EACzB,OAAO,EAAK,qBAAqB,EACjC,OAAO,EAAK,OAAO,EACnB,QAAQ,GAAI,wBAAwB,GAAG,IAAW;IAGrE,iFAAiF;IACjF,OAAO,IAAI,cAAc;IAyGnB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAC/D,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BrF,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO;IAI1D,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC,kBAAkB,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;CAG3C"}
@@ -26,11 +26,13 @@ class RemediationInterceptor {
26
26
  masker;
27
27
  breaker;
28
28
  enabled;
29
- constructor(connection, masker, breaker, enabled) {
29
+ reporter;
30
+ constructor(connection, masker, breaker, enabled, reporter = null) {
30
31
  this.connection = connection;
31
32
  this.masker = masker;
32
33
  this.breaker = breaker;
33
34
  this.enabled = enabled;
35
+ this.reporter = reporter;
34
36
  }
35
37
  /** Returns an Express RequestHandler — the function registered via app.use(). */
36
38
  handler() {
@@ -44,7 +46,8 @@ class RemediationInterceptor {
44
46
  next();
45
47
  return;
46
48
  }
47
- // Step 2 — load instructions from Redis.
49
+ // Step 2 — load instructions from Redis (measure latency for telemetry).
50
+ const t0 = performance.now();
48
51
  let instructions;
49
52
  try {
50
53
  instructions = await this.connection.getActiveInstructions();
@@ -54,6 +57,7 @@ class RemediationInterceptor {
54
57
  next();
55
58
  return;
56
59
  }
60
+ const latencyMs = performance.now() - t0;
57
61
  if (instructions.isEmpty()) {
58
62
  next();
59
63
  return;
@@ -70,8 +74,27 @@ class RemediationInterceptor {
70
74
  next();
71
75
  return;
72
76
  }
73
- if (blocked)
74
- return; // Response already sent by interceptRequest.
77
+ if (blocked) {
78
+ this.reporter?.record({
79
+ route: req.path,
80
+ method: req.method,
81
+ instruction_type: 'route_block',
82
+ latency_ms: Math.round(latencyMs * 1000) / 1000,
83
+ applied_at: new Date().toISOString(),
84
+ });
85
+ return;
86
+ }
87
+ // Determine primary instruction type for this request.
88
+ const instrType = instructions.hasMaskRules() ? 'pii_mask'
89
+ : Object.keys(instructions.injectHeaders()).length > 0 ? 'header_inject'
90
+ : 'pii_mask';
91
+ this.reporter?.record({
92
+ route: req.path,
93
+ method: req.method,
94
+ instruction_type: instrType,
95
+ latency_ms: Math.round(latencyMs * 1000) / 1000,
96
+ applied_at: new Date().toISOString(),
97
+ });
75
98
  // Step 4 — intercept res.json() before calling next().
76
99
  // We override the method here so that when the downstream route handler
77
100
  // calls res.json(body), our version executes instead.
@@ -1 +1 @@
1
- {"version":3,"file":"remediationInterceptor.js","sourceRoot":"","sources":["../../src/middleware/remediationInterceptor.ts"],"names":[],"mappings":";;;AAQA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAa,sBAAsB;IAEd;IACA;IACA;IACA;IAJnB,YACmB,UAAoC,EACpC,MAAyB,EACzB,OAAiC,EACjC,OAAmB;QAHnB,eAAU,GAAV,UAAU,CAA0B;QACpC,WAAM,GAAN,MAAM,CAAmB;QACzB,YAAO,GAAP,OAAO,CAA0B;QACjC,YAAO,GAAP,OAAO,CAAY;IACnC,CAAC;IAEJ,iFAAiF;IACjF,OAAO;QACL,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;YAC9E,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YAED,iCAAiC;YACjC,IAAI,MAAM,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;gBACtC,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YAED,yCAAyC;YACzC,IAAI,YAAY,CAAC;YACjB,IAAI,CAAC;gBACH,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;YAC/D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnF,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YAED,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3B,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YAED,uEAAuE;YACvE,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,IAAI;oBAC7F,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAE;oBACvC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACb,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnF,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YAED,IAAI,OAAO;gBAAE,OAAO,CAAC,6CAA6C;YAElE,uDAAuD;YACvD,wEAAwE;YACxE,sDAAsD;YACtD,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiC,CAAC;YACxE,MAAM,SAAS,GAAM,YAAY,CAAC,SAAS,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAQ,YAAY,CAAC,aAAa,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAO,YAAY,CAAC,YAAY,EAAE,CAAC;YAEjD,GAAG,CAAC,IAAI,GAAG,CAAC,IAAc,EAAY,EAAE;gBACtC,IAAI,CAAC;oBACH,4BAA4B;oBAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;wBACpD,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC7B,CAAC;oBAED,oCAAoC;oBACpC,IAAI,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;wBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;wBACvD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,uEAAuE;oBACvE,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAClF,+CAA+C;oBAC/C,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;gBAED,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC;YAEF,wCAAwC;YACxC,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;IACJ,CAAC;IAQD,KAAK,CAAC,gBAAgB,CAAC,GAAY,EAAE,GAAa,EAAE,KAAe;QACjE,0DAA0D;QAC1D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,KAAiF,CAAC;YACrG,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBACpE,OAAO,KAAK,CAAC,CAAC,UAAU;YAC1B,CAAC;YACD,OAAO,IAAI,CAAC,CAAC,eAAe;QAC9B,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;YACnE,MAAM,OAAO,GAAQ,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC1D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC9D,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,CAAC,yBAAyB;QACxC,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,IAAa,EAAE,SAAqB;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAa;QACpC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AApID,wDAoIC"}
1
+ {"version":3,"file":"remediationInterceptor.js","sourceRoot":"","sources":["../../src/middleware/remediationInterceptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { ConnectionConfig } from '../types/wireProtocol.js';
2
+ export interface TelemetryEvent {
3
+ route: string;
4
+ method: string;
5
+ instruction_type: string;
6
+ latency_ms: number;
7
+ applied_at: string;
8
+ }
9
+ /**
10
+ * Fire-and-forget telemetry reporter.
11
+ * Buffers events in memory and flushes to the SaaS every 5 seconds,
12
+ * or immediately when the buffer reaches 50 events.
13
+ * All errors are swallowed — telemetry must never impact request latency.
14
+ */
15
+ export declare class TelemetryReporterService {
16
+ private readonly url;
17
+ private readonly clientId;
18
+ private readonly token;
19
+ private readonly buffer;
20
+ private flushTimer;
21
+ constructor(config: ConnectionConfig);
22
+ record(event: TelemetryEvent): void;
23
+ private flush;
24
+ }
25
+ //# sourceMappingURL=TelemetryReporterService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryReporterService.d.ts","sourceRoot":"","sources":["../../src/services/TelemetryReporterService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAa,MAAM,CAAC;IACzB,MAAM,EAAY,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAQ,MAAM,CAAC;IACzB,UAAU,EAAQ,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,UAAU,CAA8C;gBAEpD,MAAM,EAAE,gBAAgB;IAMpC,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAWnC,OAAO,CAAC,KAAK;CAqBd"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TelemetryReporterService = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const logger_js_1 = require("../logger.js");
9
+ /**
10
+ * Fire-and-forget telemetry reporter.
11
+ * Buffers events in memory and flushes to the SaaS every 5 seconds,
12
+ * or immediately when the buffer reaches 50 events.
13
+ * All errors are swallowed — telemetry must never impact request latency.
14
+ */
15
+ class TelemetryReporterService {
16
+ url;
17
+ clientId;
18
+ token;
19
+ buffer = [];
20
+ flushTimer = null;
21
+ constructor(config) {
22
+ this.url = config.saas_url.replace(/\/+$/, '') + '/api/remediation/v1/telemetry';
23
+ this.clientId = config.client_id;
24
+ this.token = config.token;
25
+ }
26
+ record(event) {
27
+ this.buffer.push(event);
28
+ if (this.buffer.length >= 50) {
29
+ this.flush();
30
+ return;
31
+ }
32
+ if (this.flushTimer === null) {
33
+ this.flushTimer = setTimeout(() => this.flush(), 5000);
34
+ }
35
+ }
36
+ flush() {
37
+ if (this.flushTimer !== null) {
38
+ clearTimeout(this.flushTimer);
39
+ this.flushTimer = null;
40
+ }
41
+ if (this.buffer.length === 0)
42
+ return;
43
+ const events = this.buffer.splice(0);
44
+ axios_1.default.post(this.url, { events }, {
45
+ headers: {
46
+ 'X-Remediation-Client-Id': this.clientId,
47
+ 'X-Remediation-Token': this.token,
48
+ },
49
+ timeout: 5000,
50
+ }).catch((err) => {
51
+ logger_js_1.logger.debug('RemediationEngine: telemetry flush failed.', {
52
+ error: err instanceof Error ? err.message : String(err),
53
+ });
54
+ });
55
+ }
56
+ }
57
+ exports.TelemetryReporterService = TelemetryReporterService;
58
+ //# sourceMappingURL=TelemetryReporterService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryReporterService.js","sourceRoot":"","sources":["../../src/services/TelemetryReporterService.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,4CAAsC;AAUtC;;;;;GAKG;AACH,MAAa,wBAAwB;IAClB,GAAG,CAAc;IACjB,QAAQ,CAAS;IACjB,KAAK,CAAY;IACjB,MAAM,GAAuB,EAAE,CAAC;IACzC,UAAU,GAAyC,IAAI,CAAC;IAEhE,YAAY,MAAwB;QAClC,IAAI,CAAC,GAAG,GAAQ,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,+BAA+B,CAAC;QACtF,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,KAAK,GAAM,MAAM,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,KAAqB;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,KAAK;QACX,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAErC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE;YAC/B,OAAO,EAAE;gBACP,yBAAyB,EAAE,IAAI,CAAC,QAAQ;gBACxC,qBAAqB,EAAM,IAAI,CAAC,KAAK;aACtC;YACD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACxB,kBAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE;gBACzD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA7CD,4DA6CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@develler/remediation-agent",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Remediation agent for Node.js/Express — real-time PII masking and automated code-fix pipeline",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",