@tracehound/core 1.4.0 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -29
- package/dist/core/agent.d.ts +8 -2
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +35 -7
- package/dist/core/agent.js.map +1 -1
- package/dist/core/evidence-worker-pool.d.ts +27 -0
- package/dist/core/evidence-worker-pool.d.ts.map +1 -0
- package/dist/core/evidence-worker-pool.js +87 -0
- package/dist/core/evidence-worker-pool.js.map +1 -0
- package/dist/core/evidence-worker.d.ts +20 -0
- package/dist/core/evidence-worker.d.ts.map +1 -0
- package/dist/core/evidence-worker.js +32 -0
- package/dist/core/evidence-worker.js.map +1 -0
- package/dist/core/hound-pool.d.ts.map +1 -1
- package/dist/core/hound-pool.js +7 -1
- package/dist/core/hound-pool.js.map +1 -1
- package/dist/core/hound-process.js +2 -2
- package/dist/core/hound-process.js.map +1 -1
- package/dist/core/quarantine.d.ts +5 -0
- package/dist/core/quarantine.d.ts.map +1 -1
- package/dist/core/quarantine.js +7 -0
- package/dist/core/quarantine.js.map +1 -1
- package/dist/core/rate-limiter.d.ts +3 -0
- package/dist/core/rate-limiter.d.ts.map +1 -1
- package/dist/core/rate-limiter.js +21 -1
- package/dist/core/rate-limiter.js.map +1 -1
- package/dist/core/tracehound.d.ts.map +1 -1
- package/dist/core/tracehound.js +33 -3
- package/dist/core/tracehound.js.map +1 -1
- package/dist/index.d.ts +14 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -13
- package/dist/index.js.map +1 -1
- package/dist/types/config.d.ts +2 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -28,15 +28,10 @@ The main entry point. Orchestrates the threat detection flow.
|
|
|
28
28
|
- **Fail-safe:** Defaults to "clean" on error.
|
|
29
29
|
|
|
30
30
|
```ts
|
|
31
|
-
import {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
createEvidenceFactory,
|
|
36
|
-
} from '@tracehound/core'
|
|
37
|
-
|
|
38
|
-
const agent = createAgent({ maxPayloadSize: 1_000_000 })
|
|
39
|
-
const result = agent.intercept(scent)
|
|
31
|
+
import { createTracehound } from '@tracehound/core'
|
|
32
|
+
|
|
33
|
+
const th = createTracehound({ maxPayloadSize: 1_000_000 })
|
|
34
|
+
const result = th.agent.intercept(scent)
|
|
40
35
|
```
|
|
41
36
|
|
|
42
37
|
### 2. Hound Pool (`IHoundPool`)
|
|
@@ -74,26 +69,18 @@ Background task management.
|
|
|
74
69
|
## Usage Example
|
|
75
70
|
|
|
76
71
|
```ts
|
|
77
|
-
import {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
const rateLimiter = createRateLimiter({ windowMs: 60000, maxRequests: 100 })
|
|
90
|
-
const factory = createEvidenceFactory()
|
|
91
|
-
|
|
92
|
-
// 2. Create Agent
|
|
93
|
-
const agent = createAgent({ maxPayloadSize: 1_000_000 }, quarantine, rateLimiter, factory)
|
|
94
|
-
|
|
95
|
-
// 3. Intercept Traffic
|
|
96
|
-
const result = agent.intercept({
|
|
72
|
+
import { createTracehound } from '@tracehound/core'
|
|
73
|
+
|
|
74
|
+
// 1. Create Tracehound Instance
|
|
75
|
+
const th = createTracehound({
|
|
76
|
+
maxPayloadSize: 1_000_000,
|
|
77
|
+
quarantine: { maxCount: 1000 },
|
|
78
|
+
rateLimit: { windowMs: 60000, maxRequests: 100 },
|
|
79
|
+
houndPool: { poolSize: 4 }, // Automatically provisions process-separated workers
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
// 2. Intercept Traffic
|
|
83
|
+
const result = th.agent.intercept({
|
|
97
84
|
id: 'req-1',
|
|
98
85
|
source: '192.168.1.1',
|
|
99
86
|
payload: { user: 'input' },
|
package/dist/core/agent.d.ts
CHANGED
|
@@ -12,8 +12,11 @@
|
|
|
12
12
|
import type { InterceptResult } from '../types/result.js';
|
|
13
13
|
import type { Scent } from '../types/scent.js';
|
|
14
14
|
import type { IEvidenceFactory } from './evidence-factory.js';
|
|
15
|
+
import type { IHoundPool } from './hound-pool.js';
|
|
16
|
+
import type { INotificationEmitter } from './notification-emitter.js';
|
|
15
17
|
import type { Quarantine } from './quarantine.js';
|
|
16
18
|
import type { IRateLimiter } from './rate-limiter.js';
|
|
19
|
+
import type { IWatcher } from './watcher.js';
|
|
17
20
|
/**
|
|
18
21
|
* Agent configuration (subset of TracehoundConfig).
|
|
19
22
|
*/
|
|
@@ -68,8 +71,11 @@ export declare class Agent implements IAgent {
|
|
|
68
71
|
private readonly quarantine;
|
|
69
72
|
private readonly rateLimiter;
|
|
70
73
|
private readonly evidenceFactory;
|
|
74
|
+
private readonly houndPool?;
|
|
75
|
+
private readonly watcher?;
|
|
76
|
+
private readonly notifications?;
|
|
71
77
|
private readonly stats;
|
|
72
|
-
constructor(config: AgentConfig, quarantine: Quarantine, rateLimiter: IRateLimiter, evidenceFactory: IEvidenceFactory);
|
|
78
|
+
constructor(config: AgentConfig, quarantine: Quarantine, rateLimiter: IRateLimiter, evidenceFactory: IEvidenceFactory, houndPool?: IHoundPool | undefined, watcher?: IWatcher | undefined, notifications?: INotificationEmitter | undefined);
|
|
73
79
|
intercept(scent: Scent): InterceptResult;
|
|
74
80
|
/**
|
|
75
81
|
* Get current agent statistics.
|
|
@@ -85,5 +91,5 @@ export declare class Agent implements IAgent {
|
|
|
85
91
|
* @param evidenceFactory - Evidence factory instance
|
|
86
92
|
* @returns Agent instance
|
|
87
93
|
*/
|
|
88
|
-
export declare function createAgent(config: AgentConfig, quarantine: Quarantine, rateLimiter: IRateLimiter, evidenceFactory: IEvidenceFactory): IAgent;
|
|
94
|
+
export declare function createAgent(config: AgentConfig, quarantine: Quarantine, rateLimiter: IRateLimiter, evidenceFactory: IEvidenceFactory, houndPool?: IHoundPool, watcher?: IWatcher, notifications?: INotificationEmitter): IAgent;
|
|
89
95
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/core/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,CAAA;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAA;IACvB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,mBAAmB;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,kCAAkC;IAClC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,KAAM,YAAW,MAAM;IAYhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAjBjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAQrB;gBAGkB,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,YAAY,EACzB,eAAe,EAAE,gBAAgB,EACjC,SAAS,CAAC,EAAE,UAAU,YAAA,EACtB,OAAO,CAAC,EAAE,QAAQ,YAAA,EAClB,aAAa,CAAC,EAAE,oBAAoB,YAAA;IAQvD,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe;IA4HxC;;OAEG;IACH,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC;CAGjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,YAAY,EACzB,eAAe,EAAE,gBAAgB,EACjC,SAAS,CAAC,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,QAAQ,EAClB,aAAa,CAAC,EAAE,oBAAoB,GACnC,MAAM,CAUR"}
|
package/dist/core/agent.js
CHANGED
|
@@ -17,6 +17,9 @@ export class Agent {
|
|
|
17
17
|
quarantine;
|
|
18
18
|
rateLimiter;
|
|
19
19
|
evidenceFactory;
|
|
20
|
+
houndPool;
|
|
21
|
+
watcher;
|
|
22
|
+
notifications;
|
|
20
23
|
stats = {
|
|
21
24
|
totalIntercepts: 0,
|
|
22
25
|
cleanCount: 0,
|
|
@@ -26,11 +29,14 @@ export class Agent {
|
|
|
26
29
|
quarantinedCount: 0,
|
|
27
30
|
errorCount: 0,
|
|
28
31
|
};
|
|
29
|
-
constructor(config, quarantine, rateLimiter, evidenceFactory) {
|
|
32
|
+
constructor(config, quarantine, rateLimiter, evidenceFactory, houndPool, watcher, notifications) {
|
|
30
33
|
this.config = config;
|
|
31
34
|
this.quarantine = quarantine;
|
|
32
35
|
this.rateLimiter = rateLimiter;
|
|
33
36
|
this.evidenceFactory = evidenceFactory;
|
|
37
|
+
this.houndPool = houndPool;
|
|
38
|
+
this.watcher = watcher;
|
|
39
|
+
this.notifications = notifications;
|
|
34
40
|
// Validate config
|
|
35
41
|
if (config.maxPayloadSize <= 0) {
|
|
36
42
|
throw new Error('maxPayloadSize must be positive');
|
|
@@ -43,10 +49,12 @@ export class Agent {
|
|
|
43
49
|
const rateResult = this.rateLimiter.check(scent.source);
|
|
44
50
|
if (!rateResult.allowed) {
|
|
45
51
|
this.stats.rateLimitedCount++;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
const retryAfter = rateResult.retryAfter;
|
|
53
|
+
this.notifications?.emit('rate_limit.exceeded', {
|
|
54
|
+
source: scent.source,
|
|
55
|
+
retryAfterMs: retryAfter,
|
|
56
|
+
});
|
|
57
|
+
return { status: 'rate_limited', retryAfter };
|
|
50
58
|
}
|
|
51
59
|
// Step 2: Check for threat signal
|
|
52
60
|
if (!scent.threat) {
|
|
@@ -55,6 +63,8 @@ export class Agent {
|
|
|
55
63
|
this.stats.cleanCount++;
|
|
56
64
|
return { status: 'clean' };
|
|
57
65
|
}
|
|
66
|
+
// Record threat in Watcher (observability) — before any further processing
|
|
67
|
+
this.watcher?.recordThreat(scent.threat.category, scent.threat.severity);
|
|
58
68
|
// Step 3: Create evidence via factory
|
|
59
69
|
// Factory handles: validation, encoding, hashing, signature generation
|
|
60
70
|
const creationResult = this.evidenceFactory.create(scent, scent.threat, this.config.maxPayloadSize);
|
|
@@ -97,6 +107,24 @@ export class Agent {
|
|
|
97
107
|
signature,
|
|
98
108
|
};
|
|
99
109
|
}
|
|
110
|
+
// Forward quarantined evidence to HoundPool for async processing.
|
|
111
|
+
// This is the canonical wiring point: evidence is still typed as Evidence
|
|
112
|
+
// here (not yet narrowed to EvidenceHandle), enabling direct activation.
|
|
113
|
+
this.houndPool?.activate(evidence);
|
|
114
|
+
// Emit observability events — fire-and-forget, must not throw
|
|
115
|
+
const qStats = this.quarantine.stats;
|
|
116
|
+
this.notifications?.emit('threat.detected', {
|
|
117
|
+
scentId: scent.id,
|
|
118
|
+
category: scent.threat.category,
|
|
119
|
+
severity: scent.threat.severity,
|
|
120
|
+
source: scent.source,
|
|
121
|
+
});
|
|
122
|
+
this.notifications?.emit('evidence.quarantined', {
|
|
123
|
+
signature,
|
|
124
|
+
severity: scent.threat.severity,
|
|
125
|
+
sizeBytes: qStats.bytes,
|
|
126
|
+
});
|
|
127
|
+
this.watcher?.updateQuarantine(qStats.count, qStats.bytes, this.quarantine.maxBytes);
|
|
100
128
|
// Success
|
|
101
129
|
this.stats.quarantinedCount++;
|
|
102
130
|
return {
|
|
@@ -135,7 +163,7 @@ export class Agent {
|
|
|
135
163
|
* @param evidenceFactory - Evidence factory instance
|
|
136
164
|
* @returns Agent instance
|
|
137
165
|
*/
|
|
138
|
-
export function createAgent(config, quarantine, rateLimiter, evidenceFactory) {
|
|
139
|
-
return new Agent(config, quarantine, rateLimiter, evidenceFactory);
|
|
166
|
+
export function createAgent(config, quarantine, rateLimiter, evidenceFactory, houndPool, watcher, notifications) {
|
|
167
|
+
return new Agent(config, quarantine, rateLimiter, evidenceFactory, houndPool, watcher, notifications);
|
|
140
168
|
}
|
|
141
169
|
//# sourceMappingURL=agent.js.map
|
package/dist/core/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Scent, ThreatSignal } from '../types/scent.js';
|
|
2
|
+
import type { HotPathCodec } from '../utils/binary-codec.js';
|
|
3
|
+
import type { IHoundPool } from './hound-pool.js';
|
|
4
|
+
import type { Quarantine } from './quarantine.js';
|
|
5
|
+
export interface EvidenceWorkerPoolOptions {
|
|
6
|
+
poolSize?: number;
|
|
7
|
+
quarantine: Quarantine;
|
|
8
|
+
maxPayloadSize: number;
|
|
9
|
+
codec?: HotPathCodec;
|
|
10
|
+
houndPool?: IHoundPool;
|
|
11
|
+
}
|
|
12
|
+
export declare class EvidenceWorkerPool {
|
|
13
|
+
private readonly options;
|
|
14
|
+
private workers;
|
|
15
|
+
private nextWorkerIndex;
|
|
16
|
+
private pendingJobs;
|
|
17
|
+
constructor(options: EvidenceWorkerPoolOptions);
|
|
18
|
+
/**
|
|
19
|
+
* Dispatches a scent to the worker pool for async Hash and Evidence creation.
|
|
20
|
+
* Does NOT return a promise to avoid blocking the caller. It internally
|
|
21
|
+
* updates the Quarantine cache once the true Hash is ready.
|
|
22
|
+
*/
|
|
23
|
+
dispatch(scent: Scent, threat: ThreatSignal, temporarySignature: string): void;
|
|
24
|
+
private handleWorkerMessage;
|
|
25
|
+
shutdown(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=evidence-worker-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence-worker-pool.d.ts","sourceRoot":"","sources":["../../src/core/evidence-worker-pool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,UAAU,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,SAAS,CAAC,EAAE,UAAU,CAAA;CACvB;AAED,qBAAa,kBAAkB;IAcjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAbpC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,WAAW,CAShB;gBAE0B,OAAO,EAAE,yBAAyB;IAyB/D;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI;IA2BrF,OAAO,CAAC,mBAAmB;IAwCd,QAAQ;CAItB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { dirname, join } from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { Worker } from 'node:worker_threads';
|
|
4
|
+
import { Evidence } from './evidence.js';
|
|
5
|
+
export class EvidenceWorkerPool {
|
|
6
|
+
options;
|
|
7
|
+
workers = [];
|
|
8
|
+
nextWorkerIndex = 0;
|
|
9
|
+
pendingJobs = new Map();
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
const size = options.poolSize || 2;
|
|
13
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
+
const __dirname = dirname(__filename);
|
|
15
|
+
// We assume the compiled .js file is next to us in dist
|
|
16
|
+
// EXCEPT during testing/benchmarking with tsx, where we load the .ts file
|
|
17
|
+
const ext = process.env['VITEST'] || __filename.endsWith('.ts') ? '.ts' : '.js';
|
|
18
|
+
const workerScript = join(__dirname, `evidence-worker${ext}`);
|
|
19
|
+
for (let i = 0; i < size; i++) {
|
|
20
|
+
const worker = new Worker(workerScript);
|
|
21
|
+
worker.on('message', (result) => {
|
|
22
|
+
this.handleWorkerMessage(result);
|
|
23
|
+
});
|
|
24
|
+
worker.on('error', (err) => {
|
|
25
|
+
console.error(`EvidenceWorkerPool Worker Error:`, err);
|
|
26
|
+
});
|
|
27
|
+
this.workers.push(worker);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Dispatches a scent to the worker pool for async Hash and Evidence creation.
|
|
32
|
+
* Does NOT return a promise to avoid blocking the caller. It internally
|
|
33
|
+
* updates the Quarantine cache once the true Hash is ready.
|
|
34
|
+
*/
|
|
35
|
+
dispatch(scent, threat, temporarySignature) {
|
|
36
|
+
if (this.workers.length === 0)
|
|
37
|
+
return;
|
|
38
|
+
const worker = this.workers[this.nextWorkerIndex];
|
|
39
|
+
if (!worker)
|
|
40
|
+
return;
|
|
41
|
+
this.nextWorkerIndex = (this.nextWorkerIndex + 1) % this.workers.length;
|
|
42
|
+
// Register job to backfill Quarantine later
|
|
43
|
+
this.pendingJobs.set(scent.id, {
|
|
44
|
+
resolve: () => { }, // Handled directly in message listener now
|
|
45
|
+
reject: () => { },
|
|
46
|
+
temporarySignature,
|
|
47
|
+
threat,
|
|
48
|
+
timestamp: scent.timestamp,
|
|
49
|
+
});
|
|
50
|
+
const msg = {
|
|
51
|
+
id: scent.id,
|
|
52
|
+
scent,
|
|
53
|
+
threat,
|
|
54
|
+
maxPayloadSize: this.options.maxPayloadSize,
|
|
55
|
+
};
|
|
56
|
+
worker.postMessage(msg);
|
|
57
|
+
}
|
|
58
|
+
handleWorkerMessage(result) {
|
|
59
|
+
const job = this.pendingJobs.get(result.id);
|
|
60
|
+
if (!job)
|
|
61
|
+
return;
|
|
62
|
+
this.pendingJobs.delete(result.id);
|
|
63
|
+
if (!result.ok || !result.bytes || !result.hash || !result.signature) {
|
|
64
|
+
// Worker failed (e.g., payload too large check failed inside worker)
|
|
65
|
+
// We must purge the temporary evidence from Quarantine
|
|
66
|
+
this.options.quarantine.purge(job.temporarySignature, 'error');
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
let finalBytes = result.bytes;
|
|
70
|
+
let compressed = false;
|
|
71
|
+
if (this.options.codec) {
|
|
72
|
+
finalBytes = this.options.codec.encode(result.bytes);
|
|
73
|
+
compressed = true;
|
|
74
|
+
}
|
|
75
|
+
// Build the TRUE Evidence Object
|
|
76
|
+
const trueEvidence = new Evidence(finalBytes.buffer.slice(finalBytes.byteOffset, finalBytes.byteOffset + finalBytes.byteLength), result.signature, result.hash, job.threat.severity, job.timestamp, compressed);
|
|
77
|
+
// Backfill Quarantine: Replace the temporary UUID signature with the True Signature
|
|
78
|
+
this.options.quarantine.replace(job.temporarySignature, trueEvidence);
|
|
79
|
+
// Notify WAF via HoundPool now that parsing and hashing are complete
|
|
80
|
+
this.options.houndPool?.activate(trueEvidence);
|
|
81
|
+
}
|
|
82
|
+
async shutdown() {
|
|
83
|
+
await Promise.all(this.workers.map((w) => w.terminate()));
|
|
84
|
+
this.workers = [];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=evidence-worker-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence-worker-pool.js","sourceRoot":"","sources":["../../src/core/evidence-worker-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Scent, ThreatSignal } from '../types/scent.js';
|
|
2
|
+
export interface EvidenceWorkerMessage {
|
|
3
|
+
id: string;
|
|
4
|
+
scent: Scent;
|
|
5
|
+
threat: ThreatSignal;
|
|
6
|
+
maxPayloadSize: number;
|
|
7
|
+
}
|
|
8
|
+
export interface EvidenceWorkerResult {
|
|
9
|
+
id: string;
|
|
10
|
+
ok: boolean;
|
|
11
|
+
hash?: string;
|
|
12
|
+
signature?: string;
|
|
13
|
+
size?: number;
|
|
14
|
+
bytes?: Uint8Array;
|
|
15
|
+
error?: {
|
|
16
|
+
code: string;
|
|
17
|
+
message: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=evidence-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence-worker.d.ts","sourceRoot":"","sources":["../../src/core/evidence-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAI5D,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,YAAY,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { parentPort } from 'node:worker_threads';
|
|
2
|
+
import { encodePayload } from '../utils/encode.js';
|
|
3
|
+
import { hashBuffer } from '../utils/hash.js';
|
|
4
|
+
if (parentPort) {
|
|
5
|
+
parentPort.on('message', (msg) => {
|
|
6
|
+
try {
|
|
7
|
+
const encoded = encodePayload(msg.scent.payload, msg.maxPayloadSize);
|
|
8
|
+
const hash = hashBuffer(encoded.bytes);
|
|
9
|
+
const signature = `${msg.threat.category}:${hash}`;
|
|
10
|
+
const result = {
|
|
11
|
+
id: msg.id,
|
|
12
|
+
ok: true,
|
|
13
|
+
hash,
|
|
14
|
+
signature,
|
|
15
|
+
size: encoded.size,
|
|
16
|
+
bytes: encoded.bytes,
|
|
17
|
+
};
|
|
18
|
+
parentPort.postMessage(result, [result.bytes.buffer]);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
parentPort.postMessage({
|
|
22
|
+
id: msg.id,
|
|
23
|
+
ok: false,
|
|
24
|
+
error: {
|
|
25
|
+
code: err.code || 'UNKNOWN_WORKER_ERROR',
|
|
26
|
+
message: err.message || 'Error processing evidence in worker',
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=evidence-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence-worker.js","sourceRoot":"","sources":["../../src/core/evidence-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAsB7C,IAAI,UAAU,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAA0B,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;YACpE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACtC,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAA;YAElD,MAAM,MAAM,GAAyB;gBACnC,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,EAAE,EAAE,IAAI;gBACR,IAAI;gBACJ,SAAS;gBACT,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAA;YAED,UAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAM,CAAC,MAAqB,CAAC,CAAC,CAAA;QACxE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,UAAW,CAAC,WAAW,CAAC;gBACtB,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,sBAAsB;oBACxC,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,qCAAqC;iBAC9D;aACsB,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hound-pool.d.ts","sourceRoot":"","sources":["../../src/core/hound-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"hound-pool.d.ts","sourceRoot":"","sources":["../../src/core/hound-pool.ts"],"names":[],"mappings":"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"}
|
package/dist/core/hound-pool.js
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
* INVARIANT: activeProcesses <= totalProcesses
|
|
12
12
|
* activeProcesses reflects OS-level active child processes
|
|
13
13
|
*/
|
|
14
|
+
import { dirname, join } from 'node:path';
|
|
15
|
+
import { fileURLToPath } from 'node:url';
|
|
14
16
|
import { decodeHoundMessage } from './hound-ipc.js';
|
|
15
17
|
import { createMockAdapter, createProcessAdapter, DEFAULT_CONSTRAINTS, } from './process-adapter.js';
|
|
16
18
|
/**
|
|
@@ -34,9 +36,13 @@ export class HoundPool {
|
|
|
34
36
|
_totalErrors = 0;
|
|
35
37
|
constructor(config) {
|
|
36
38
|
this.config = config;
|
|
39
|
+
// Determine default script path relative to this file
|
|
40
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
41
|
+
const __dirname = dirname(__filename);
|
|
42
|
+
const defaultScript = join(__dirname, 'hound-process.js');
|
|
37
43
|
// Use provided adapter or create real one
|
|
38
44
|
this.adapter = config.adapter ?? createProcessAdapter();
|
|
39
|
-
this.processScriptPath = config.processScriptPath ??
|
|
45
|
+
this.processScriptPath = config.processScriptPath ?? defaultScript;
|
|
40
46
|
this.onPoolExhausted = config.onPoolExhausted ?? 'drop';
|
|
41
47
|
this.deferQueueLimit = config.deferQueueLimit ?? 100;
|
|
42
48
|
// Pre-spawn process slots (lazy spawn)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hound-pool.js","sourceRoot":"","sources":["../../src/core/hound-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"hound-pool.js","sourceRoot":"","sources":["../../src/core/hound-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ import { createMessageParser, encodeHoundMessage } from './hound-ipc.js';
|
|
|
14
14
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
15
15
|
// Constants
|
|
16
16
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
17
|
-
/** Processing
|
|
18
|
-
const PROCESSING_DELAY_MS = 10;
|
|
17
|
+
/** Processing delay in ms — overridable via HOUND_PROCESSING_DELAY_MS env for chaos testing */
|
|
18
|
+
const PROCESSING_DELAY_MS = parseInt(process.env['HOUND_PROCESSING_DELAY_MS'] ?? '10', 10);
|
|
19
19
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
20
20
|
// State
|
|
21
21
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hound-process.js","sourceRoot":"","sources":["../../src/core/hound-process.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAA2B,MAAM,gBAAgB,CAAA;AAEjG,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF
|
|
1
|
+
{"version":3,"file":"hound-process.js","sourceRoot":"","sources":["../../src/core/hound-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,6 +78,11 @@ export declare class Quarantine {
|
|
|
78
78
|
* Get current quarantine statistics.
|
|
79
79
|
*/
|
|
80
80
|
get stats(): QuarantineStats;
|
|
81
|
+
/**
|
|
82
|
+
* Get the configured maximum bytes limit.
|
|
83
|
+
* Used by Agent to pass capacity context to Watcher.
|
|
84
|
+
*/
|
|
85
|
+
get maxBytes(): number;
|
|
81
86
|
/**
|
|
82
87
|
* Evict lowest priority evidence.
|
|
83
88
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quarantine.d.ts","sourceRoot":"","sources":["../../src/core/quarantine.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC7F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,GAAG,WAAW,CAAA;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B;AAED,4BAA4B;AAC5B,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;CACrC;AAED,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,GAAG,eAAe,CAAA;IACpC,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,cAAc,CAAA;CAC3B;AAUD;;;GAGG;AACH,qBAAa,UAAU;IAKnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAI;gBAGZ,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,UAAU;IAGhC;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,YAAY;IAqB9C;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAI7C;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAoB1D;;;OAGG;IACH,KAAK,IAAI,oBAAoB,EAAE;IAgB/B;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,IAAI;IAqC7F;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,GAAG,aAAa;IAwBzE;;OAEG;IACH,IAAI,KAAK,IAAI,eAAe,CAiB3B;IAED;;OAEG;IACH,OAAO,CAAC,KAAK;IAoBb;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,aAAa;CAGtB"}
|
|
1
|
+
{"version":3,"file":"quarantine.d.ts","sourceRoot":"","sources":["../../src/core/quarantine.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC7F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,GAAG,WAAW,CAAA;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B;AAED,4BAA4B;AAC5B,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;CACrC;AAED,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,GAAG,eAAe,CAAA;IACpC,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,cAAc,CAAA;CAC3B;AAUD;;;GAGG;AACH,qBAAa,UAAU;IAKnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAI;gBAGZ,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,UAAU;IAGhC;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,YAAY;IAqB9C;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAI7C;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAoB1D;;;OAGG;IACH,KAAK,IAAI,oBAAoB,EAAE;IAgB/B;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,IAAI;IAqC7F;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,GAAG,aAAa;IAwBzE;;OAEG;IACH,IAAI,KAAK,IAAI,eAAe,CAiB3B;IAED;;;OAGG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,OAAO,CAAC,KAAK;IAoBb;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,aAAa;CAGtB"}
|
package/dist/core/quarantine.js
CHANGED
|
@@ -176,6 +176,13 @@ export class Quarantine {
|
|
|
176
176
|
bySeverity,
|
|
177
177
|
};
|
|
178
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Get the configured maximum bytes limit.
|
|
181
|
+
* Used by Agent to pass capacity context to Watcher.
|
|
182
|
+
*/
|
|
183
|
+
get maxBytes() {
|
|
184
|
+
return this.config.maxBytes;
|
|
185
|
+
}
|
|
179
186
|
/**
|
|
180
187
|
* Evict lowest priority evidence.
|
|
181
188
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quarantine.js","sourceRoot":"","sources":["../../src/core/quarantine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quarantine.js","sourceRoot":"","sources":["../../src/core/quarantine.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,8 @@ export interface RateLimiterStats {
|
|
|
57
57
|
totalChecks: number;
|
|
58
58
|
/** Total rejections */
|
|
59
59
|
totalRejections: number;
|
|
60
|
+
/** Total capacity evictions */
|
|
61
|
+
totalEvictions: number;
|
|
60
62
|
}
|
|
61
63
|
/**
|
|
62
64
|
* Sliding window rate limiter implementation.
|
|
@@ -77,6 +79,7 @@ export declare class RateLimiter implements IRateLimiter {
|
|
|
77
79
|
private readonly config;
|
|
78
80
|
private totalChecks;
|
|
79
81
|
private totalRejections;
|
|
82
|
+
private totalEvictions;
|
|
80
83
|
constructor(config: RateLimitConfig);
|
|
81
84
|
check(source: string): RateLimitResult;
|
|
82
85
|
reset(source: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/core/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IACE,OAAO,EAAE,KAAK,CAAA;IACd,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAcL;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAA;IAEtC;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAE3B;;;;OAIG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/core/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IACE,OAAO,EAAE,KAAK,CAAA;IACd,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAcL;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAA;IAEtC;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAE3B;;;;OAIG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,cAAc,CAAI;gBAEd,MAAM,EAAE,eAAe;IAuBnC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IA0FtC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,IAAI,MAAM;IAsBjB,IAAI,KAAK,IAAI,gBAAgB,CAiB5B;CACF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CAEvE"}
|
|
@@ -23,6 +23,7 @@ export class RateLimiter {
|
|
|
23
23
|
config;
|
|
24
24
|
totalChecks = 0;
|
|
25
25
|
totalRejections = 0;
|
|
26
|
+
totalEvictions = 0;
|
|
26
27
|
constructor(config) {
|
|
27
28
|
// Validate config
|
|
28
29
|
if (config.windowMs <= 0) {
|
|
@@ -34,10 +35,14 @@ export class RateLimiter {
|
|
|
34
35
|
if (config.blockDurationMs < 0) {
|
|
35
36
|
throw new Error('blockDurationMs cannot be negative');
|
|
36
37
|
}
|
|
38
|
+
if (config.maxSources !== undefined && config.maxSources <= 0) {
|
|
39
|
+
throw new Error('maxSources must be positive');
|
|
40
|
+
}
|
|
37
41
|
this.config = {
|
|
38
42
|
windowMs: config.windowMs,
|
|
39
43
|
maxRequests: config.maxRequests,
|
|
40
44
|
blockDurationMs: config.blockDurationMs,
|
|
45
|
+
maxSources: config.maxSources ?? 100_000,
|
|
41
46
|
};
|
|
42
47
|
}
|
|
43
48
|
check(source) {
|
|
@@ -45,7 +50,21 @@ export class RateLimiter {
|
|
|
45
50
|
const now = Date.now();
|
|
46
51
|
// Get or create source entry
|
|
47
52
|
let entry = this.sources.get(source);
|
|
48
|
-
if (
|
|
53
|
+
if (entry) {
|
|
54
|
+
// LRU Eviction Logic: Push to the back of the Map (youngest)
|
|
55
|
+
this.sources.delete(source);
|
|
56
|
+
this.sources.set(source, entry);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Capacity Bound check
|
|
60
|
+
if (this.sources.size >= this.config.maxSources) {
|
|
61
|
+
// Evict oldest (O(1)) from front of Map
|
|
62
|
+
const oldestSource = this.sources.keys().next().value;
|
|
63
|
+
if (oldestSource !== undefined) {
|
|
64
|
+
this.sources.delete(oldestSource);
|
|
65
|
+
this.totalEvictions++;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
49
68
|
entry = {
|
|
50
69
|
timestamps: [],
|
|
51
70
|
blockedUntil: null,
|
|
@@ -140,6 +159,7 @@ export class RateLimiter {
|
|
|
140
159
|
blocked,
|
|
141
160
|
totalChecks: this.totalChecks,
|
|
142
161
|
totalRejections: this.totalRejections,
|
|
162
|
+
totalEvictions: this.totalEvictions,
|
|
143
163
|
};
|
|
144
164
|
}
|
|
145
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/core/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/core/rate-limiter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracehound.d.ts","sourceRoot":"","sources":["../../src/core/tracehound.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAmB,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACxF,OAAO,EAA6B,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAM3D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IAED;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;IAED;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,uBAAuB,CAAC,EAAE,MAAM,CAAA;KACjC,CAAA;IAED;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,6BAA6B;IAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAA;IAClC,oCAAoC;IACpC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,+BAA+B;IAC/B,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAA;IAC5C,qBAAqB;IACrB,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;CAC/B;
|
|
1
|
+
{"version":3,"file":"tracehound.d.ts","sourceRoot":"","sources":["../../src/core/tracehound.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAmB,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACxF,OAAO,EAA6B,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAM3D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IAED;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;IAED;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,uBAAuB,CAAC,EAAE,MAAM,CAAA;KACjC,CAAA;IAED;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,6BAA6B;IAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAA;IAClC,oCAAoC;IACpC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,+BAA+B;IAC/B,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAA;IAC5C,qBAAqB;IACrB,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;CAC/B;AAiHD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,WAAW,CAE7E"}
|
package/dist/core/tracehound.js
CHANGED
|
@@ -56,14 +56,44 @@ class Tracehound {
|
|
|
56
56
|
quarantineHighWatermark: options.watcher?.quarantineHighWatermark ?? 0.8,
|
|
57
57
|
});
|
|
58
58
|
this.evidenceFactory = new EvidenceFactory();
|
|
59
|
-
// Create
|
|
60
|
-
this.agent = createAgent({ maxPayloadSize: options.maxPayloadSize ?? 1_000_000 }, this.quarantine, this.rateLimiter, this.evidenceFactory);
|
|
61
|
-
// Create HoundPool
|
|
59
|
+
// Create HoundPool first — Agent depends on it for auto-activation
|
|
62
60
|
const poolConfig = {
|
|
63
61
|
...DEFAULT_POOL_CONFIG,
|
|
64
62
|
...options.houndPool,
|
|
65
63
|
};
|
|
66
64
|
this.houndPool = createHoundPool(poolConfig);
|
|
65
|
+
// Create agent — houndPool, watcher, and notifications are all wired in.
|
|
66
|
+
// Quarantined evidence is forwarded to the pool, and observability events
|
|
67
|
+
// are emitted automatically without any user configuration.
|
|
68
|
+
this.agent = createAgent({ maxPayloadSize: options.maxPayloadSize ?? 1_000_000 }, this.quarantine, this.rateLimiter, this.evidenceFactory, this.houndPool, this.watcher, this.notifications);
|
|
69
|
+
// Wire HoundPool results back into Watcher and NotificationEmitter.
|
|
70
|
+
// timeout/error outcomes are security-relevant events that SecOps must see.
|
|
71
|
+
this.houndPool.onResult((result) => {
|
|
72
|
+
if (result.status === 'timeout') {
|
|
73
|
+
this.watcher.alert({
|
|
74
|
+
type: 'hound_timeout',
|
|
75
|
+
severity: 'warning',
|
|
76
|
+
message: `Hound worker timed out after ${result.durationMs}ms`,
|
|
77
|
+
context: { signature: result.signature, processId: result.processId },
|
|
78
|
+
});
|
|
79
|
+
this.notifications.emit('system.panic', {
|
|
80
|
+
level: 'warning',
|
|
81
|
+
reason: `hound_timeout: signature=${result.signature}`,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else if (result.status === 'error') {
|
|
85
|
+
this.watcher.alert({
|
|
86
|
+
type: 'system_overload',
|
|
87
|
+
severity: 'critical',
|
|
88
|
+
message: `Hound worker error: ${result.error ?? 'unknown'}`,
|
|
89
|
+
context: { signature: result.signature, processId: result.processId },
|
|
90
|
+
});
|
|
91
|
+
this.notifications.emit('system.panic', {
|
|
92
|
+
level: 'critical',
|
|
93
|
+
reason: `hound_error: ${result.error ?? 'unknown'}`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
});
|
|
67
97
|
}
|
|
68
98
|
}
|
|
69
99
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracehound.js","sourceRoot":"","sources":["../../src/core/tracehound.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAe,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAyB,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAyC,MAAM,iBAAiB,CAAA;AACxF,OAAO,EAAE,yBAAyB,EAA6B,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAqB,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,aAAa,EAAiB,MAAM,cAAc,CAAA;AAoE3D,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,mBAAmB,GAAoB;IAC3C,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,MAAM;IACf,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,GAAG;CACrB,CAAA;AAED;;GAEG;AACH,MAAM,UAAU;IACL,KAAK,CAAQ;IACb,UAAU,CAAY;IACtB,WAAW,CAAc;IACzB,OAAO,CAAU;IACjB,UAAU,CAAY;IACtB,aAAa,CAAsB;IACnC,SAAS,CAAY;IAEb,eAAe,CAAkB;IAElD,YAAY,UAA6B,EAAE;QACzC,wBAAwB;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QAClC,IAAI,CAAC,aAAa,GAAG,yBAAyB,EAAE,CAAA;QAEhD,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAC9B;YACE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,IAAI,MAAM;YAChD,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,IAAI,WAAW;YACrD,cAAc,EAAE,UAAU;SAC3B,EACD,IAAI,CAAC,UAAU,CAChB,CAAA;QAED,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;YACnC,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,IAAI,MAAM;YAC/C,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,IAAI,GAAG;YAClD,eAAe,EAAE,OAAO,CAAC,SAAS,EAAE,eAAe,IAAI,OAAO;SAC/D,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;YAC3B,kBAAkB,EAAE,OAAO,CAAC,OAAO,EAAE,kBAAkB,IAAI,EAAE;YAC7D,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,aAAa,IAAI,MAAM;YACvD,uBAAuB,EAAE,OAAO,CAAC,OAAO,EAAE,uBAAuB,IAAI,GAAG;SACzE,CAAC,CAAA;QAEF,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAE5C,eAAe;
|
|
1
|
+
{"version":3,"file":"tracehound.js","sourceRoot":"","sources":["../../src/core/tracehound.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export type { AlertConfig, AuditConfig, ColdStorageConfig, ErrorState, EvacuateRecord, EvidenceHandle, GenerateSignatureOptions, HoundConfig, InterceptResult, JsonPrimitive, JsonSerializable, NeutralizationRecord, PurgeRecord, QuarantineConfig, RateLimitConfig, RuntimeConfig, Scent, SchedulerConfig, Severity, Threat, ThreatCategory, ThreatInput, ThreatSignal, TracehoundConfig, TracehoundError, } from './types/index.js';
|
|
7
7
|
export { DEFAULT_CONFIG, mergeWithDefaults } from './types/index.js';
|
|
8
|
-
export {
|
|
8
|
+
export { Errors, createError } from './types/index.js';
|
|
9
9
|
export { isClean, isError, isIgnored, isQuarantined, isRateLimited } from './types/index.js';
|
|
10
10
|
export { createThreatInput } from './types/index.js';
|
|
11
11
|
export { compareSignatures, generateSignature, validateSignature } from './types/index.js';
|
|
@@ -13,41 +13,41 @@ export { AuditChain, GENESIS_HASH } from './core/audit-chain.js';
|
|
|
13
13
|
export { Evidence } from './core/evidence.js';
|
|
14
14
|
export { Quarantine } from './core/quarantine.js';
|
|
15
15
|
export type { InsertResult, QuarantineStats } from './core/quarantine.js';
|
|
16
|
-
export {
|
|
17
|
-
export type { IRateLimiter,
|
|
18
|
-
export {
|
|
16
|
+
export { RateLimiter, createRateLimiter } from './core/rate-limiter.js';
|
|
17
|
+
export type { IRateLimiter, RateLimitResult, RateLimiterStats } from './core/rate-limiter.js';
|
|
18
|
+
export { EvidenceFactory, createEvidenceFactory } from './core/evidence-factory.js';
|
|
19
19
|
export type { EvidenceCreationResult, EvidenceFactoryOptions, IEvidenceFactory, } from './core/evidence-factory.js';
|
|
20
20
|
export { Agent, createAgent } from './core/agent.js';
|
|
21
21
|
export type { AgentConfig, AgentStats, IAgent } from './core/agent.js';
|
|
22
|
-
export { createHoundPool, createMockAdapter
|
|
22
|
+
export { HoundPool, createHoundPool, createMockAdapter } from './core/hound-pool.js';
|
|
23
23
|
export type { HoundPoolConfig, HoundPoolStats, HoundResult, IHoundPool, PoolExhaustedAction, } from './core/hound-pool.js';
|
|
24
24
|
export type { HoundProcessConstraints } from './core/process-adapter.js';
|
|
25
|
-
export {
|
|
25
|
+
export { Scheduler, createScheduler } from './core/scheduler.js';
|
|
26
26
|
export type { BusyChecker, IScheduler, ScheduledTask, SchedulerStats, TickSchedulerConfig, } from './core/scheduler.js';
|
|
27
|
-
export {
|
|
27
|
+
export { Watcher, createWatcher } from './core/watcher.js';
|
|
28
28
|
export type { Alert, AlertSeverity, AlertType, IWatcher, ThreatStats, WatcherConfig, WatcherQuarantineStats, WatcherSnapshot, } from './core/watcher.js';
|
|
29
29
|
export { hash, hashBuffer } from './utils/hash.js';
|
|
30
30
|
export { generateSecureId, isValidSecureId } from './utils/id.js';
|
|
31
31
|
export { serialize } from './utils/serialize.js';
|
|
32
|
-
export { AsyncGzipCodec, createAsyncColdPathCodec, createColdPathCodec, createHotPathCodec, decodeWithIntegrityAsync, encodeWithIntegrityAsync,
|
|
32
|
+
export { AsyncGzipCodec, GzipCodec, createAsyncColdPathCodec, createColdPathCodec, createHotPathCodec, decodeWithIntegrity, decodeWithIntegrityAsync, encodeWithIntegrity, encodeWithIntegrityAsync, verify, } from './utils/binary-codec.js';
|
|
33
33
|
export type { AsyncColdPathCodec, AsyncHotPathCodec, CodecStats, ColdPathCodec, HotPathCodec, } from './utils/binary-codec.js';
|
|
34
34
|
export { constantTimeBufferEqual, constantTimeEqual } from './utils/compare.js';
|
|
35
35
|
export { encodePayload, estimatePayloadSize } from './utils/encode.js';
|
|
36
36
|
export type { EncodeResult } from './utils/encode.js';
|
|
37
|
-
export {
|
|
37
|
+
export { MemoryColdStorage, createMemoryColdStorage } from './core/cold-storage.js';
|
|
38
38
|
export type { ColdStorageReadResult, ColdStorageWriteResult, IColdStorageAdapter, } from './core/cold-storage.js';
|
|
39
|
-
export {
|
|
39
|
+
export { S3ColdStorage, createS3ColdStorage } from './core/s3-cold-storage.js';
|
|
40
40
|
export type { S3ColdStorageConfig, S3LikeClient } from './core/s3-cold-storage.js';
|
|
41
41
|
export { DEFAULT_TRUST_BOUNDARY, isClusterUntrusted, mergeTrustBoundary, shouldVerifyDetector, validateTrustBoundary, } from './core/trust-boundary.js';
|
|
42
42
|
export type { ClusterBoundaryConfig, ClusterTrustLevel, ColdStorageBoundaryConfig, ColdStorageTrustLevel, DetectorBoundaryConfig, DetectorTrustLevel, TrustBoundaryConfig, } from './core/trust-boundary.js';
|
|
43
|
-
export {
|
|
43
|
+
export { DEFAULT_LANE_CONFIG, LaneQueue, createLaneQueue } from './core/lane-queue.js';
|
|
44
44
|
export type { Alert as LaneAlert, LaneConfig, LaneQueueConfig, LaneStats, } from './core/lane-queue.js';
|
|
45
|
-
export {
|
|
45
|
+
export { DEFAULT_FAIL_SAFE_CONFIG, FailSafe, createFailSafe } from './core/fail-safe.js';
|
|
46
46
|
export type { FailSafeConfig, PanicCallback, PanicEvent, PanicLevel, PanicReason, ThresholdConfig, } from './core/fail-safe.js';
|
|
47
47
|
export { createTracehound } from './core/tracehound.js';
|
|
48
48
|
export type { ITracehound, TracehoundOptions } from './core/tracehound.js';
|
|
49
|
-
export {
|
|
49
|
+
export { NotificationEmitter, createNotificationEmitter } from './core/notification-emitter.js';
|
|
50
50
|
export type { EventCallback, EventType, EvidenceEvictedPayload, EvidenceQuarantinedPayload, INotificationEmitter, LicenseExpiredPayload, LicenseValidatedPayload, NotificationEmitterStats, RateLimitExceededPayload, SystemPanicPayload, ThreatDetectedPayload, TracehoundEvent, WebhookConfig, } from './core/notification-emitter.js';
|
|
51
|
-
export {
|
|
51
|
+
export { SecurityState, createSecurityState } from './core/security-state.js';
|
|
52
52
|
export type { ISecurityState, LicenseState, QuarantineStateStats, RateLimitStats, SecurityHistoryEntry, SecuritySnapshot, SecurityStateConfig, SecurityStateStats, } from './core/security-state.js';
|
|
53
53
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,YAAY,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,KAAK,EACL,eAAe,EACf,QAAQ,EACR,MAAM,EACN,cAAc,EACd,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAMpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ export { DEFAULT_CONFIG, mergeWithDefaults } from './types/index.js';
|
|
|
10
10
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
11
11
|
// Errors
|
|
12
12
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
13
|
-
export {
|
|
13
|
+
export { Errors, createError } from './types/index.js';
|
|
14
14
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
15
15
|
// Result type guards
|
|
16
16
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -38,11 +38,11 @@ export { Quarantine } from './core/quarantine.js';
|
|
|
38
38
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
39
39
|
// Core - Rate Limiter
|
|
40
40
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
41
|
-
export {
|
|
41
|
+
export { RateLimiter, createRateLimiter } from './core/rate-limiter.js';
|
|
42
42
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
43
43
|
// Core - Evidence Factory
|
|
44
44
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
45
|
-
export {
|
|
45
|
+
export { EvidenceFactory, createEvidenceFactory } from './core/evidence-factory.js';
|
|
46
46
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
47
47
|
// Core - Agent
|
|
48
48
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -50,15 +50,15 @@ export { Agent, createAgent } from './core/agent.js';
|
|
|
50
50
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
51
51
|
// Core - Hound Pool
|
|
52
52
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
53
|
-
export { createHoundPool, createMockAdapter
|
|
53
|
+
export { HoundPool, createHoundPool, createMockAdapter } from './core/hound-pool.js';
|
|
54
54
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
55
55
|
// Core - Scheduler
|
|
56
56
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
57
|
-
export {
|
|
57
|
+
export { Scheduler, createScheduler } from './core/scheduler.js';
|
|
58
58
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
59
59
|
// Core - Watcher
|
|
60
60
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
61
|
-
export {
|
|
61
|
+
export { Watcher, createWatcher } from './core/watcher.js';
|
|
62
62
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
63
63
|
// Utils - Hashing
|
|
64
64
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -74,17 +74,17 @@ export { serialize } from './utils/serialize.js';
|
|
|
74
74
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
75
75
|
// Utils - Security
|
|
76
76
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
77
|
-
export { AsyncGzipCodec, createAsyncColdPathCodec, createColdPathCodec, createHotPathCodec, decodeWithIntegrityAsync, encodeWithIntegrityAsync,
|
|
77
|
+
export { AsyncGzipCodec, GzipCodec, createAsyncColdPathCodec, createColdPathCodec, createHotPathCodec, decodeWithIntegrity, decodeWithIntegrityAsync, encodeWithIntegrity, encodeWithIntegrityAsync, verify, } from './utils/binary-codec.js';
|
|
78
78
|
export { constantTimeBufferEqual, constantTimeEqual } from './utils/compare.js';
|
|
79
79
|
export { encodePayload, estimatePayloadSize } from './utils/encode.js';
|
|
80
80
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
81
81
|
// Core - Cold Storage
|
|
82
82
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
83
|
-
export {
|
|
83
|
+
export { MemoryColdStorage, createMemoryColdStorage } from './core/cold-storage.js';
|
|
84
84
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
85
85
|
// Core - S3 Cold Storage
|
|
86
86
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
87
|
-
export {
|
|
87
|
+
export { S3ColdStorage, createS3ColdStorage } from './core/s3-cold-storage.js';
|
|
88
88
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
89
89
|
// Core - Trust Boundary
|
|
90
90
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -92,11 +92,11 @@ export { DEFAULT_TRUST_BOUNDARY, isClusterUntrusted, mergeTrustBoundary, shouldV
|
|
|
92
92
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
93
93
|
// Core - Lane Queue
|
|
94
94
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
95
|
-
export {
|
|
95
|
+
export { DEFAULT_LANE_CONFIG, LaneQueue, createLaneQueue } from './core/lane-queue.js';
|
|
96
96
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
97
97
|
// Core - Fail-Safe
|
|
98
98
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
99
|
-
export {
|
|
99
|
+
export { DEFAULT_FAIL_SAFE_CONFIG, FailSafe, createFailSafe } from './core/fail-safe.js';
|
|
100
100
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
101
101
|
// Core - Tracehound Factory
|
|
102
102
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -104,9 +104,9 @@ export { createTracehound } from './core/tracehound.js';
|
|
|
104
104
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
105
105
|
// Core - Notification Emitter
|
|
106
106
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
107
|
-
export {
|
|
107
|
+
export { NotificationEmitter, createNotificationEmitter } from './core/notification-emitter.js';
|
|
108
108
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
109
109
|
// Core - Security State
|
|
110
110
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
111
|
-
export {
|
|
111
|
+
export { SecurityState, createSecurityState } from './core/security-state.js';
|
|
112
112
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkCH,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpE,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export interface RateLimitConfig {
|
|
|
9
9
|
maxRequests: number;
|
|
10
10
|
/** Block duration after limit exceeded */
|
|
11
11
|
blockDurationMs: number;
|
|
12
|
+
/** Maximum sources to track before LRU eviction (default: 100,000) */
|
|
13
|
+
maxSources?: number;
|
|
12
14
|
}
|
|
13
15
|
/** Quarantine storage configuration */
|
|
14
16
|
export interface QuarantineConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iCAAiC;AACjC,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iCAAiC;AACjC,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAA;IACvB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,wBAAwB;IACxB,cAAc,EAAE,KAAK,GAAG,UAAU,CAAA;CACnC;AAED,+BAA+B;AAC/B,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,gBAAgB,EAAE,MAAM,CAAA;IACxB,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAA;IACzB,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IACxB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAA;IACjB,4BAA4B;IAC5B,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,0BAA0B;AAC1B,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAED,iCAAiC;AACjC,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,IAAI,EAAE,KAAK,CAAA;IACX,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,0BAA0B;AAC1B,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,YAAY,EAAE,OAAO,CAAA;IACrB,gCAAgC;IAChC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAC5C;AAED,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAA;IACtB,6BAA6B;IAC7B,SAAS,EAAE,eAAe,CAAA;IAC1B,0BAA0B;IAC1B,UAAU,EAAE,gBAAgB,CAAA;IAC5B,0BAA0B;IAC1B,KAAK,EAAE,WAAW,CAAA;IAClB,yBAAyB;IACzB,SAAS,EAAE,eAAe,CAAA;IAC1B,qBAAqB;IACrB,MAAM,EAAE,WAAW,CAAA;IACnB,qBAAqB;IACrB,KAAK,EAAE,WAAW,CAAA;IAClB,uBAAuB;IACvB,OAAO,EAAE,aAAa,CAAA;CACvB;AAED,mCAAmC;AACnC,eAAO,MAAM,cAAc,EAAE,gBAmC5B,CAAA;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAYtF"}
|
package/dist/types/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoGH,mCAAmC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAqB;IAC9C,cAAc,EAAE,SAAS;IACzB,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,GAAG;QAChB,eAAe,EAAE,OAAO;KACzB;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,WAAW;QACrB,cAAc,EAAE,UAAU;KAC3B;IACD,KAAK,EAAE;QACL,cAAc,EAAE,CAAC;QACjB,SAAS,EAAE,CAAC;QACZ,gBAAgB,EAAE,IAAI;QACtB,iBAAiB,EAAE,KAAK;QACxB,cAAc,EAAE,GAAG;KACpB;IACD,SAAS,EAAE;QACT,gBAAgB,EAAE,MAAM;QACxB,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,IAAI;KACjB;IACD,MAAM,EAAE;QACN,kBAAkB,EAAE,EAAE;QACtB,QAAQ,EAAE,MAAM;QAChB,mBAAmB,EAAE,CAAC;KACvB;IACD,KAAK,EAAE;QACL,YAAY,EAAE,IAAI;KACnB;IACD,OAAO,EAAE;QACP,kBAAkB,EAAE,IAAI;KACzB;CACF,CAAA;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAkC;IAClE,OAAO;QACL,GAAG,cAAc;QACjB,GAAG,OAAO;QACV,SAAS,EAAE,EAAE,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE;QAChE,UAAU,EAAE,EAAE,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE;QACnE,KAAK,EAAE,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE;QACpD,SAAS,EAAE,EAAE,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE;QAChE,MAAM,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE;QACvD,KAAK,EAAE,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE;QACpD,OAAO,EAAE,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;KAC3D,CAAA;AACH,CAAC"}
|