shieldcortex 2.2.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -5
- package/dist/api/events.d.ts +11 -1
- package/dist/api/events.d.ts.map +1 -1
- package/dist/api/events.js +3 -0
- package/dist/api/events.js.map +1 -1
- package/dist/api/visualization-server.d.ts.map +1 -1
- package/dist/api/visualization-server.js +60 -4
- package/dist/api/visualization-server.js.map +1 -1
- package/dist/database/init.d.ts.map +1 -1
- package/dist/database/init.js +44 -0
- package/dist/database/init.js.map +1 -1
- package/dist/defence/__tests__/access-control.test.d.ts +5 -0
- package/dist/defence/__tests__/access-control.test.d.ts.map +1 -0
- package/dist/defence/__tests__/access-control.test.js +89 -0
- package/dist/defence/__tests__/access-control.test.js.map +1 -0
- package/dist/defence/__tests__/agent-scorer.test.d.ts +5 -0
- package/dist/defence/__tests__/agent-scorer.test.d.ts.map +1 -0
- package/dist/defence/__tests__/agent-scorer.test.js +75 -0
- package/dist/defence/__tests__/agent-scorer.test.js.map +1 -0
- package/dist/defence/__tests__/env-detector.test.d.ts +5 -0
- package/dist/defence/__tests__/env-detector.test.d.ts.map +1 -0
- package/dist/defence/__tests__/env-detector.test.js +99 -0
- package/dist/defence/__tests__/env-detector.test.js.map +1 -0
- package/dist/defence/__tests__/pipeline.test.js +1 -0
- package/dist/defence/__tests__/pipeline.test.js.map +1 -1
- package/dist/defence/__tests__/trust.test.js +3 -2
- package/dist/defence/__tests__/trust.test.js.map +1 -1
- package/dist/defence/audit/index.d.ts +2 -2
- package/dist/defence/audit/index.d.ts.map +1 -1
- package/dist/defence/audit/index.js +1 -1
- package/dist/defence/audit/index.js.map +1 -1
- package/dist/defence/audit/logger.d.ts.map +1 -1
- package/dist/defence/audit/logger.js +3 -2
- package/dist/defence/audit/logger.js.map +1 -1
- package/dist/defence/audit/queries.d.ts +35 -1
- package/dist/defence/audit/queries.d.ts.map +1 -1
- package/dist/defence/audit/queries.js +93 -21
- package/dist/defence/audit/queries.js.map +1 -1
- package/dist/defence/pipeline.d.ts +1 -1
- package/dist/defence/pipeline.d.ts.map +1 -1
- package/dist/defence/pipeline.js +22 -1
- package/dist/defence/pipeline.js.map +1 -1
- package/dist/defence/quarantine/auto-expire.d.ts +15 -0
- package/dist/defence/quarantine/auto-expire.d.ts.map +1 -0
- package/dist/defence/quarantine/auto-expire.js +38 -0
- package/dist/defence/quarantine/auto-expire.js.map +1 -0
- package/dist/defence/trust/access-control.d.ts +29 -0
- package/dist/defence/trust/access-control.d.ts.map +1 -0
- package/dist/defence/trust/access-control.js +64 -0
- package/dist/defence/trust/access-control.js.map +1 -0
- package/dist/defence/trust/agent-scorer.d.ts +33 -0
- package/dist/defence/trust/agent-scorer.d.ts.map +1 -0
- package/dist/defence/trust/agent-scorer.js +55 -0
- package/dist/defence/trust/agent-scorer.js.map +1 -0
- package/dist/defence/trust/env-detector.d.ts +43 -0
- package/dist/defence/trust/env-detector.d.ts.map +1 -0
- package/dist/defence/trust/env-detector.js +99 -0
- package/dist/defence/trust/env-detector.js.map +1 -0
- package/dist/defence/trust/index.d.ts +6 -0
- package/dist/defence/trust/index.d.ts.map +1 -1
- package/dist/defence/trust/index.js +3 -0
- package/dist/defence/trust/index.js.map +1 -1
- package/dist/defence/trust/source-scorer.d.ts.map +1 -1
- package/dist/defence/trust/source-scorer.js +33 -15
- package/dist/defence/trust/source-scorer.js.map +1 -1
- package/dist/defence/types.d.ts +3 -0
- package/dist/defence/types.d.ts.map +1 -1
- package/dist/defence/types.js +1 -0
- package/dist/defence/types.js.map +1 -1
- package/dist/memory/consolidate.d.ts +1 -0
- package/dist/memory/consolidate.d.ts.map +1 -1
- package/dist/memory/consolidate.js +8 -1
- package/dist/memory/consolidate.js.map +1 -1
- package/dist/memory/store.d.ts +6 -6
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +139 -16
- package/dist/memory/store.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +82 -11
- package/dist/server.js.map +1 -1
- package/dist/setup/claude-md.d.ts +3 -1
- package/dist/setup/claude-md.d.ts.map +1 -1
- package/dist/setup/claude-md.js +47 -3
- package/dist/setup/claude-md.js.map +1 -1
- package/dist/setup/doctor.d.ts.map +1 -1
- package/dist/setup/doctor.js +7 -4
- package/dist/setup/doctor.js.map +1 -1
- package/dist/setup/uninstall.d.ts.map +1 -1
- package/dist/setup/uninstall.js +27 -0
- package/dist/setup/uninstall.js.map +1 -1
- package/dist/tools/context.d.ts +18 -0
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +4 -0
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/forget.d.ts +18 -0
- package/dist/tools/forget.d.ts.map +1 -1
- package/dist/tools/forget.js +12 -1
- package/dist/tools/forget.js.map +1 -1
- package/dist/tools/recall.d.ts +38 -0
- package/dist/tools/recall.d.ts.map +1 -1
- package/dist/tools/recall.js +12 -5
- package/dist/tools/recall.js.map +1 -1
- package/dist/tools/remember.d.ts +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Access Control Tests
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from '@jest/globals';
|
|
5
|
+
import { checkAccess } from '../trust/access-control.js';
|
|
6
|
+
describe('Access Control', () => {
|
|
7
|
+
const highTrustSource = { type: 'cli', identifier: 'mcp' }; // 0.9
|
|
8
|
+
const mediumTrustSource = { type: 'agent', identifier: 'user-spawned>task-1' }; // 0.63
|
|
9
|
+
const lowTrustSource = { type: 'agent', identifier: 'agent-spawned>deep>chain' }; // 0.3 * 0.7^2 = 0.147
|
|
10
|
+
const publicMemory = {
|
|
11
|
+
id: 1,
|
|
12
|
+
source: 'cli:mcp',
|
|
13
|
+
sensitivity_level: 'PUBLIC',
|
|
14
|
+
};
|
|
15
|
+
const restrictedMemory = {
|
|
16
|
+
id: 2,
|
|
17
|
+
source: 'user:direct',
|
|
18
|
+
sensitivity_level: 'RESTRICTED',
|
|
19
|
+
};
|
|
20
|
+
const ownedMemory = {
|
|
21
|
+
id: 3,
|
|
22
|
+
source: 'agent:user-spawned>task-1',
|
|
23
|
+
sensitivity_level: 'INTERNAL',
|
|
24
|
+
};
|
|
25
|
+
describe('read access', () => {
|
|
26
|
+
it('should allow high-trust to read all memories', () => {
|
|
27
|
+
const policy = checkAccess(publicMemory, highTrustSource, 'read');
|
|
28
|
+
expect(policy.canRead).toBe(true);
|
|
29
|
+
});
|
|
30
|
+
it('should allow high-trust to read RESTRICTED', () => {
|
|
31
|
+
const policy = checkAccess(restrictedMemory, highTrustSource, 'read');
|
|
32
|
+
expect(policy.canRead).toBe(true);
|
|
33
|
+
});
|
|
34
|
+
it('should block medium-trust from RESTRICTED (credential isolation)', () => {
|
|
35
|
+
const policy = checkAccess(restrictedMemory, mediumTrustSource, 'read');
|
|
36
|
+
expect(policy.canRead).toBe(false);
|
|
37
|
+
expect(policy.reason).toContain('Credential isolation');
|
|
38
|
+
});
|
|
39
|
+
it('should allow medium-trust to read non-restricted', () => {
|
|
40
|
+
const policy = checkAccess(publicMemory, mediumTrustSource, 'read');
|
|
41
|
+
expect(policy.canRead).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
it('should block low-trust from shared memories', () => {
|
|
44
|
+
const policy = checkAccess(publicMemory, lowTrustSource, 'read');
|
|
45
|
+
expect(policy.canRead).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
it('should allow owner to read own memory regardless of trust', () => {
|
|
48
|
+
const policy = checkAccess(ownedMemory, mediumTrustSource, 'read');
|
|
49
|
+
expect(policy.canRead).toBe(true);
|
|
50
|
+
expect(policy.reason).toContain('Owner');
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('write access', () => {
|
|
54
|
+
it('should allow direct write for high-trust', () => {
|
|
55
|
+
const policy = checkAccess(publicMemory, highTrustSource, 'write');
|
|
56
|
+
expect(policy.canWrite).toBe(true);
|
|
57
|
+
expect(policy.writeRequiresQuarantine).toBe(false);
|
|
58
|
+
});
|
|
59
|
+
it('should require quarantine for medium-trust', () => {
|
|
60
|
+
const policy = checkAccess(publicMemory, mediumTrustSource, 'write');
|
|
61
|
+
expect(policy.canWrite).toBe(false);
|
|
62
|
+
expect(policy.writeRequiresQuarantine).toBe(true);
|
|
63
|
+
});
|
|
64
|
+
it('should require quarantine for low-trust', () => {
|
|
65
|
+
const policy = checkAccess(publicMemory, lowTrustSource, 'write');
|
|
66
|
+
expect(policy.writeRequiresQuarantine).toBe(true);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('delete access', () => {
|
|
70
|
+
it('should allow owner to delete own memory', () => {
|
|
71
|
+
const policy = checkAccess(ownedMemory, mediumTrustSource, 'delete');
|
|
72
|
+
expect(policy.canDelete).toBe(true);
|
|
73
|
+
});
|
|
74
|
+
it('should block non-owner deletion', () => {
|
|
75
|
+
const policy = checkAccess(publicMemory, mediumTrustSource, 'delete');
|
|
76
|
+
expect(policy.canDelete).toBe(false);
|
|
77
|
+
});
|
|
78
|
+
it('should block low-trust deletion even of own', () => {
|
|
79
|
+
const lowOwnedMemory = {
|
|
80
|
+
id: 4,
|
|
81
|
+
source: 'agent:agent-spawned>deep>chain',
|
|
82
|
+
sensitivity_level: 'INTERNAL',
|
|
83
|
+
};
|
|
84
|
+
const policy = checkAccess(lowOwnedMemory, lowTrustSource, 'delete');
|
|
85
|
+
expect(policy.canDelete).toBe(false); // trust < 0.5
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=access-control.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-control.test.js","sourceRoot":"","sources":["../../../src/defence/__tests__/access-control.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-scorer.test.d.ts","sourceRoot":"","sources":["../../../src/defence/__tests__/agent-scorer.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Trust Scorer Tests
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from '@jest/globals';
|
|
5
|
+
import { scoreAgent, getAgentDepth, buildAgentHierarchy, DEFAULT_AGENT_CONFIG } from '../trust/agent-scorer.js';
|
|
6
|
+
describe('Agent Trust Scorer', () => {
|
|
7
|
+
describe('scoreAgent', () => {
|
|
8
|
+
it('should score user-spawned parent at 0.9', () => {
|
|
9
|
+
expect(scoreAgent('user-spawned')).toBe(0.9);
|
|
10
|
+
});
|
|
11
|
+
it('should decay by 0.7 per generation', () => {
|
|
12
|
+
expect(scoreAgent('user-spawned>task-1')).toBe(0.63);
|
|
13
|
+
expect(scoreAgent('user-spawned>task-1>subtask')).toBe(0.441);
|
|
14
|
+
});
|
|
15
|
+
it('should score cron origin at 0.5', () => {
|
|
16
|
+
expect(scoreAgent('cron')).toBe(0.5);
|
|
17
|
+
});
|
|
18
|
+
it('should score agent-spawned at 0.3', () => {
|
|
19
|
+
expect(scoreAgent('agent-spawned')).toBe(0.3);
|
|
20
|
+
});
|
|
21
|
+
it('should decay cron sub-agents', () => {
|
|
22
|
+
expect(scoreAgent('cron>job-1')).toBe(0.35);
|
|
23
|
+
});
|
|
24
|
+
it('should default unknown origins to 0.3', () => {
|
|
25
|
+
expect(scoreAgent('unknown-origin')).toBe(0.3);
|
|
26
|
+
});
|
|
27
|
+
it('should block agents beyond max depth', () => {
|
|
28
|
+
const deep = 'user-spawned>a>b>c>d>e>f'; // depth 6, max is 5
|
|
29
|
+
expect(scoreAgent(deep)).toBe(0);
|
|
30
|
+
});
|
|
31
|
+
it('should allow agents at max depth', () => {
|
|
32
|
+
const atMax = 'user-spawned>a>b>c>d>e'; // depth 5 = max
|
|
33
|
+
expect(scoreAgent(atMax)).toBeGreaterThan(0);
|
|
34
|
+
});
|
|
35
|
+
it('should accept custom config', () => {
|
|
36
|
+
const config = { ...DEFAULT_AGENT_CONFIG, decayFactor: 0.5 };
|
|
37
|
+
expect(scoreAgent('user-spawned>task', config)).toBe(0.45);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('getAgentDepth', () => {
|
|
41
|
+
it('should return 0 for parent agents', () => {
|
|
42
|
+
expect(getAgentDepth('user-spawned')).toBe(0);
|
|
43
|
+
});
|
|
44
|
+
it('should count hierarchy depth', () => {
|
|
45
|
+
expect(getAgentDepth('user-spawned>a>b>c')).toBe(3);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('buildAgentHierarchy', () => {
|
|
49
|
+
it('should build readable hierarchy', () => {
|
|
50
|
+
const hierarchy = buildAgentHierarchy('user-spawned>task-1');
|
|
51
|
+
expect(hierarchy).toHaveLength(2);
|
|
52
|
+
expect(hierarchy[0]).toContain('user-spawned');
|
|
53
|
+
expect(hierarchy[0]).toContain('0.900');
|
|
54
|
+
expect(hierarchy[1]).toContain('task-1');
|
|
55
|
+
expect(hierarchy[1]).toContain('0.630');
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe('integration with scoreSource', () => {
|
|
59
|
+
it('should use hierarchy scoring for agent sources', async () => {
|
|
60
|
+
const { scoreSource } = await import('../trust/source-scorer.js');
|
|
61
|
+
const parent = scoreSource({ type: 'agent', identifier: 'user-spawned' });
|
|
62
|
+
expect(parent.score).toBe(0.9);
|
|
63
|
+
const child = scoreSource({ type: 'agent', identifier: 'user-spawned>task-1' });
|
|
64
|
+
expect(child.score).toBe(0.63);
|
|
65
|
+
// Hierarchy should show agent chain
|
|
66
|
+
expect(child.hierarchy[0]).toContain('Agent Hierarchy');
|
|
67
|
+
});
|
|
68
|
+
it('should not affect non-agent sources', async () => {
|
|
69
|
+
const { scoreSource } = await import('../trust/source-scorer.js');
|
|
70
|
+
const cli = scoreSource({ type: 'cli', identifier: 'mcp' });
|
|
71
|
+
expect(cli.score).toBe(0.9);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=agent-scorer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-scorer.test.js","sourceRoot":"","sources":["../../../src/defence/__tests__/agent-scorer.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,IAAI,GAAG,0BAA0B,CAAC,CAAC,oBAAoB;YAC7D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,KAAK,GAAG,wBAAwB,CAAC,CAAC,gBAAgB;YACxD,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,MAAM,GAAG,EAAE,GAAG,oBAAoB,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;YAC7D,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,SAAS,GAAG,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;YAC7D,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAC/C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YAElE,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE/B,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAChF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE/B,oCAAoC;YACpC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YAElE,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-detector.test.d.ts","sourceRoot":"","sources":["../../../src/defence/__tests__/env-detector.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment-Based Source Inference Tests
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, beforeEach, afterEach } from '@jest/globals';
|
|
5
|
+
import { inferSourceFromEnvironment, resolveSource } from '../trust/env-detector.js';
|
|
6
|
+
describe('Environment-Based Source Inference', () => {
|
|
7
|
+
const originalEnv = { ...process.env };
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
// Clear all relevant env vars
|
|
10
|
+
delete process.env.CLAUDE_CODE_ENTRYPOINT;
|
|
11
|
+
delete process.env.CLAUDE_AGENT_CONTEXT;
|
|
12
|
+
delete process.env.SHIELDCORTEX_AGENT_SOURCE;
|
|
13
|
+
});
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
// Restore original env
|
|
16
|
+
process.env = { ...originalEnv };
|
|
17
|
+
});
|
|
18
|
+
describe('inferSourceFromEnvironment', () => {
|
|
19
|
+
it('should detect direct Claude Code CLI', () => {
|
|
20
|
+
process.env.CLAUDE_CODE_ENTRYPOINT = 'cli';
|
|
21
|
+
const result = inferSourceFromEnvironment();
|
|
22
|
+
expect(result.source).toEqual({ type: 'cli', identifier: 'mcp' });
|
|
23
|
+
expect(result.method).toBe('env:CLAUDE_CODE_ENTRYPOINT');
|
|
24
|
+
expect(result.confidence).toBe('high');
|
|
25
|
+
});
|
|
26
|
+
it('should detect Claude Code sub-agent', () => {
|
|
27
|
+
process.env.CLAUDE_CODE_ENTRYPOINT = 'subagent';
|
|
28
|
+
const result = inferSourceFromEnvironment();
|
|
29
|
+
expect(result.source).toEqual({ type: 'agent', identifier: 'agent-spawned' });
|
|
30
|
+
expect(result.confidence).toBe('high');
|
|
31
|
+
});
|
|
32
|
+
it('should detect CLAUDE_AGENT_CONTEXT=subagent', () => {
|
|
33
|
+
process.env.CLAUDE_AGENT_CONTEXT = 'subagent';
|
|
34
|
+
const result = inferSourceFromEnvironment();
|
|
35
|
+
expect(result.source.type).toBe('agent');
|
|
36
|
+
expect(result.source.identifier).toBe('agent-spawned');
|
|
37
|
+
expect(result.method).toBe('env:CLAUDE_AGENT_CONTEXT');
|
|
38
|
+
});
|
|
39
|
+
it('should detect CLAUDE_AGENT_CONTEXT=hook', () => {
|
|
40
|
+
process.env.CLAUDE_AGENT_CONTEXT = 'hook';
|
|
41
|
+
const result = inferSourceFromEnvironment();
|
|
42
|
+
expect(result.source.identifier).toBe('hook');
|
|
43
|
+
});
|
|
44
|
+
it('should parse SHIELDCORTEX_AGENT_SOURCE with type prefix', () => {
|
|
45
|
+
process.env.SHIELDCORTEX_AGENT_SOURCE = 'agent:user-spawned>task-1';
|
|
46
|
+
const result = inferSourceFromEnvironment();
|
|
47
|
+
expect(result.source).toEqual({ type: 'agent', identifier: 'user-spawned>task-1' });
|
|
48
|
+
expect(result.method).toBe('env:SHIELDCORTEX_AGENT_SOURCE');
|
|
49
|
+
expect(result.confidence).toBe('high');
|
|
50
|
+
});
|
|
51
|
+
it('should handle SHIELDCORTEX_AGENT_SOURCE without type prefix', () => {
|
|
52
|
+
process.env.SHIELDCORTEX_AGENT_SOURCE = 'some-agent';
|
|
53
|
+
const result = inferSourceFromEnvironment();
|
|
54
|
+
expect(result.source.type).toBe('agent'); // defaults to agent
|
|
55
|
+
expect(result.source.identifier).toBe('some-agent');
|
|
56
|
+
});
|
|
57
|
+
it('should prioritise SHIELDCORTEX_AGENT_SOURCE over CLAUDE_CODE_ENTRYPOINT', () => {
|
|
58
|
+
process.env.SHIELDCORTEX_AGENT_SOURCE = 'cli:custom-tool';
|
|
59
|
+
process.env.CLAUDE_CODE_ENTRYPOINT = 'subagent';
|
|
60
|
+
const result = inferSourceFromEnvironment();
|
|
61
|
+
expect(result.source).toEqual({ type: 'cli', identifier: 'custom-tool' });
|
|
62
|
+
});
|
|
63
|
+
it('should return unknown:default with low confidence when no env vars set', () => {
|
|
64
|
+
const result = inferSourceFromEnvironment();
|
|
65
|
+
expect(result.source).toEqual({ type: 'cli', identifier: 'unknown' });
|
|
66
|
+
expect(result.method).toBe('default');
|
|
67
|
+
expect(result.confidence).toBe('low');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('resolveSource', () => {
|
|
71
|
+
it('should use declared source when provided', () => {
|
|
72
|
+
const declared = { type: 'agent', identifier: 'user-spawned>task-1' };
|
|
73
|
+
const result = resolveSource(declared);
|
|
74
|
+
expect(result.source).toEqual(declared);
|
|
75
|
+
expect(result.inferred).toBe(false);
|
|
76
|
+
expect(result.detection).toBeUndefined();
|
|
77
|
+
});
|
|
78
|
+
it('should infer from environment when no source declared', () => {
|
|
79
|
+
process.env.CLAUDE_CODE_ENTRYPOINT = 'cli';
|
|
80
|
+
const result = resolveSource(undefined);
|
|
81
|
+
expect(result.source).toEqual({ type: 'cli', identifier: 'mcp' });
|
|
82
|
+
expect(result.inferred).toBe(true);
|
|
83
|
+
expect(result.detection).toBeDefined();
|
|
84
|
+
});
|
|
85
|
+
it('should downgrade unknown sources in strict mode', () => {
|
|
86
|
+
// No env vars → unknown
|
|
87
|
+
const result = resolveSource(undefined, true);
|
|
88
|
+
expect(result.source).toEqual({ type: 'agent', identifier: 'unknown:strict' });
|
|
89
|
+
expect(result.inferred).toBe(true);
|
|
90
|
+
});
|
|
91
|
+
it('should not downgrade env-detected sources in strict mode', () => {
|
|
92
|
+
process.env.CLAUDE_CODE_ENTRYPOINT = 'cli';
|
|
93
|
+
const result = resolveSource(undefined, true);
|
|
94
|
+
// Not default method, so no downgrade
|
|
95
|
+
expect(result.source).toEqual({ type: 'cli', identifier: 'mcp' });
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=env-detector.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-detector.test.js","sourceRoot":"","sources":["../../../src/defence/__tests__/env-detector.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../../src/defence/__tests__/pipeline.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGrE,kEAAkE;AAClE,mEAAmE;AACnE,iDAAiD;AACjD,MAAM,UAAU,GAAkB;IAChC,IAAI,EAAE,UAAU;IAChB,4BAA4B,EAAE,KAAK;IACnC,wBAAwB,EAAE,EAAE;IAC5B,wBAAwB,EAAE,GAAG;IAC7B,uBAAuB,EAAE,GAAG;IAC5B,aAAa,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../../src/defence/__tests__/pipeline.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,10 +20,11 @@ describe('Trust Source Scorer', () => {
|
|
|
20
20
|
const result = scoreSource({ type: 'web', identifier: 'scraper' });
|
|
21
21
|
expect(result.score).toBe(0.3);
|
|
22
22
|
});
|
|
23
|
-
it('should score agent source
|
|
23
|
+
it('should score agent source using hierarchy scorer', async () => {
|
|
24
24
|
const { scoreSource } = await import('../trust/source-scorer.js');
|
|
25
|
+
// Unknown origin defaults to 0.3 base
|
|
25
26
|
const result = scoreSource({ type: 'agent', identifier: 'assistant' });
|
|
26
|
-
expect(result.score).toBe(0.
|
|
27
|
+
expect(result.score).toBe(0.3);
|
|
27
28
|
});
|
|
28
29
|
it('should score user:approved as 0.9', async () => {
|
|
29
30
|
const { scoreSource } = await import('../trust/source-scorer.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust.test.js","sourceRoot":"","sources":["../../../src/defence/__tests__/trust.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAErD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"trust.test.js","sourceRoot":"","sources":["../../../src/defence/__tests__/trust.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { logAudit, createContentHash } from './logger.js';
|
|
2
|
-
export { queryAuditLogs, getAuditStats } from './queries.js';
|
|
3
|
-
export type { AuditQueryOptions, AuditStats } from './queries.js';
|
|
2
|
+
export { queryAuditLogs, getAuditStats, queryAgentRegistry, queryAgentTimeline, queryAgentOperations } from './queries.js';
|
|
3
|
+
export type { AuditQueryOptions, AuditStats, AgentInfo, AgentTimelinePoint } from './queries.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/defence/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/defence/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC3H,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { logAudit, createContentHash } from './logger.js';
|
|
2
|
-
export { queryAuditLogs, getAuditStats } from './queries.js';
|
|
2
|
+
export { queryAuditLogs, getAuditStats, queryAgentRegistry, queryAgentTimeline, queryAgentOperations } from './queries.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/defence/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/defence/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/defence/audit/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/defence/audit/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,MAAM,CAuC9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
|
@@ -12,12 +12,12 @@ export function logAudit(entry) {
|
|
|
12
12
|
const db = getDatabase();
|
|
13
13
|
const stmt = db.prepare(`
|
|
14
14
|
INSERT INTO defence_audit (
|
|
15
|
-
memory_id, timestamp, source_type, source_identifier,
|
|
15
|
+
memory_id, project, timestamp, source_type, source_identifier,
|
|
16
16
|
trust_score, sensitivity_level, firewall_result,
|
|
17
17
|
anomaly_score, threat_indicators, blocked_patterns,
|
|
18
18
|
reason, fragmentation_score, pipeline_duration_ms
|
|
19
19
|
) VALUES (
|
|
20
|
-
@memory_id, @timestamp, @source_type, @source_identifier,
|
|
20
|
+
@memory_id, @project, @timestamp, @source_type, @source_identifier,
|
|
21
21
|
@trust_score, @sensitivity_level, @firewall_result,
|
|
22
22
|
@anomaly_score, @threat_indicators, @blocked_patterns,
|
|
23
23
|
@reason, @fragmentation_score, @pipeline_duration_ms
|
|
@@ -25,6 +25,7 @@ export function logAudit(entry) {
|
|
|
25
25
|
`);
|
|
26
26
|
const result = stmt.run({
|
|
27
27
|
memory_id: entry.memory_id ?? null,
|
|
28
|
+
project: entry.project ?? null,
|
|
28
29
|
timestamp: entry.timestamp ?? new Date().toISOString(),
|
|
29
30
|
source_type: entry.source_type,
|
|
30
31
|
source_identifier: entry.source_identifier,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/defence/audit/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAA6B;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;KAYvB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;YAClC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACtD,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;YACvC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,IAAI;YAClD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;YAChD,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;YAC5B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,IAAI;YACtD,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,IAAI,IAAI;SACzD,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/defence/audit/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAA6B;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;KAYvB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACtD,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;YACvC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,IAAI;YAClD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;YAChD,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;YAC5B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,IAAI;YACtD,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,IAAI,IAAI;SACzD,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
* Forensic query helpers for the defence audit log
|
|
3
3
|
*/
|
|
4
4
|
import type { AuditEntry, FirewallResult } from '../types.js';
|
|
5
|
+
export interface AgentInfo {
|
|
6
|
+
source_type: string;
|
|
7
|
+
source_identifier: string;
|
|
8
|
+
operation_count: number;
|
|
9
|
+
last_seen: string;
|
|
10
|
+
avg_trust_score: number;
|
|
11
|
+
min_trust_score: number;
|
|
12
|
+
max_trust_score: number;
|
|
13
|
+
flagged_count: number;
|
|
14
|
+
}
|
|
15
|
+
export interface AgentTimelinePoint {
|
|
16
|
+
timestamp: string;
|
|
17
|
+
trust_score: number;
|
|
18
|
+
firewall_result: string;
|
|
19
|
+
anomaly_score: number;
|
|
20
|
+
}
|
|
5
21
|
export interface AuditQueryOptions {
|
|
6
22
|
startTime?: string;
|
|
7
23
|
endTime?: string;
|
|
@@ -9,6 +25,7 @@ export interface AuditQueryOptions {
|
|
|
9
25
|
source?: string;
|
|
10
26
|
firewallResult?: FirewallResult;
|
|
11
27
|
memoryId?: number;
|
|
28
|
+
project?: string;
|
|
12
29
|
limit?: number;
|
|
13
30
|
}
|
|
14
31
|
export interface AuditStats {
|
|
@@ -29,5 +46,22 @@ export declare function queryAuditLogs(options?: AuditQueryOptions): AuditEntry[
|
|
|
29
46
|
/**
|
|
30
47
|
* Get aggregate audit statistics for a time range.
|
|
31
48
|
*/
|
|
32
|
-
export declare function getAuditStats(timeRange: '24h' | '7d' | '30d'): AuditStats;
|
|
49
|
+
export declare function getAuditStats(timeRange: '24h' | '7d' | '30d', project?: string): AuditStats;
|
|
50
|
+
/**
|
|
51
|
+
* Get distinct agents aggregated from audit logs.
|
|
52
|
+
*/
|
|
53
|
+
export declare function queryAgentRegistry(timeRange?: '24h' | '7d' | '30d', project?: string): AgentInfo[];
|
|
54
|
+
/**
|
|
55
|
+
* Get trust score timeline for a specific agent.
|
|
56
|
+
*/
|
|
57
|
+
export declare function queryAgentTimeline(identifier: string, timeRange?: '24h' | '7d' | '30d', project?: string): AgentTimelinePoint[];
|
|
58
|
+
/**
|
|
59
|
+
* Get paginated audit entries for a specific agent.
|
|
60
|
+
*/
|
|
61
|
+
export declare function queryAgentOperations(identifier: string, options?: {
|
|
62
|
+
limit?: number;
|
|
63
|
+
offset?: number;
|
|
64
|
+
firewallResult?: FirewallResult;
|
|
65
|
+
project?: string;
|
|
66
|
+
}): AuditEntry[];
|
|
33
67
|
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/defence/audit/queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI9D,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAID;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/defence/audit/queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI9D,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAID,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAID;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU,EAAE,CAsC5E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAmE3F;AAID;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,GAAE,KAAK,GAAG,IAAI,GAAG,KAAa,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAqBzG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,KAAK,GAAG,IAAI,GAAG,KAAa,EACvC,OAAO,CAAC,EAAE,MAAM,GACf,kBAAkB,EAAE,CActB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACnG,UAAU,EAAE,CAyBd"}
|