@vorionsys/atsf-core 0.1.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 +308 -0
- package/dist/api/index.d.ts +5 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +5 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/server.d.ts +17 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +124 -0
- package/dist/api/server.js.map +1 -0
- package/dist/arbitration/index.d.ts +124 -0
- package/dist/arbitration/index.d.ts.map +1 -0
- package/dist/arbitration/index.js +696 -0
- package/dist/arbitration/index.js.map +1 -0
- package/dist/arbitration/types.d.ts +260 -0
- package/dist/arbitration/types.d.ts.map +1 -0
- package/dist/arbitration/types.js +10 -0
- package/dist/arbitration/types.js.map +1 -0
- package/dist/basis/evaluator.d.ts +57 -0
- package/dist/basis/evaluator.d.ts.map +1 -0
- package/dist/basis/evaluator.js +244 -0
- package/dist/basis/evaluator.js.map +1 -0
- package/dist/basis/index.d.ts +12 -0
- package/dist/basis/index.d.ts.map +1 -0
- package/dist/basis/index.js +12 -0
- package/dist/basis/index.js.map +1 -0
- package/dist/basis/parser.d.ts +376 -0
- package/dist/basis/parser.d.ts.map +1 -0
- package/dist/basis/parser.js +150 -0
- package/dist/basis/parser.js.map +1 -0
- package/dist/basis/types.d.ts +115 -0
- package/dist/basis/types.d.ts.map +1 -0
- package/dist/basis/types.js +5 -0
- package/dist/basis/types.js.map +1 -0
- package/dist/cognigate/index.d.ts +85 -0
- package/dist/cognigate/index.d.ts.map +1 -0
- package/dist/cognigate/index.js +139 -0
- package/dist/cognigate/index.js.map +1 -0
- package/dist/common/config.d.ts +252 -0
- package/dist/common/config.d.ts.map +1 -0
- package/dist/common/config.js +128 -0
- package/dist/common/config.js.map +1 -0
- package/dist/common/index.d.ts +7 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +7 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/logger.d.ts +11 -0
- package/dist/common/logger.d.ts.map +1 -0
- package/dist/common/logger.js +29 -0
- package/dist/common/logger.js.map +1 -0
- package/dist/common/types.d.ts +196 -0
- package/dist/common/types.d.ts.map +1 -0
- package/dist/common/types.js +41 -0
- package/dist/common/types.js.map +1 -0
- package/dist/containment/index.d.ts +120 -0
- package/dist/containment/index.d.ts.map +1 -0
- package/dist/containment/index.js +717 -0
- package/dist/containment/index.js.map +1 -0
- package/dist/containment/types.d.ts +260 -0
- package/dist/containment/types.d.ts.map +1 -0
- package/dist/containment/types.js +21 -0
- package/dist/containment/types.js.map +1 -0
- package/dist/contracts/index.d.ts +237 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +594 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/types.d.ts +374 -0
- package/dist/contracts/types.d.ts.map +1 -0
- package/dist/contracts/types.js +10 -0
- package/dist/contracts/types.js.map +1 -0
- package/dist/enforce/index.d.ts +58 -0
- package/dist/enforce/index.d.ts.map +1 -0
- package/dist/enforce/index.js +77 -0
- package/dist/enforce/index.js.map +1 -0
- package/dist/governance/index.d.ts +133 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/index.js +630 -0
- package/dist/governance/index.js.map +1 -0
- package/dist/governance/types.d.ts +362 -0
- package/dist/governance/types.d.ts.map +1 -0
- package/dist/governance/types.js +21 -0
- package/dist/governance/types.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/intent/index.d.ts +44 -0
- package/dist/intent/index.d.ts.map +1 -0
- package/dist/intent/index.js +64 -0
- package/dist/intent/index.js.map +1 -0
- package/dist/langchain/callback.d.ts +115 -0
- package/dist/langchain/callback.d.ts.map +1 -0
- package/dist/langchain/callback.js +264 -0
- package/dist/langchain/callback.js.map +1 -0
- package/dist/langchain/executor.d.ts +63 -0
- package/dist/langchain/executor.d.ts.map +1 -0
- package/dist/langchain/executor.js +169 -0
- package/dist/langchain/executor.js.map +1 -0
- package/dist/langchain/index.d.ts +12 -0
- package/dist/langchain/index.d.ts.map +1 -0
- package/dist/langchain/index.js +12 -0
- package/dist/langchain/index.js.map +1 -0
- package/dist/langchain/tools.d.ts +25 -0
- package/dist/langchain/tools.d.ts.map +1 -0
- package/dist/langchain/tools.js +167 -0
- package/dist/langchain/tools.js.map +1 -0
- package/dist/langchain/types.d.ts +72 -0
- package/dist/langchain/types.d.ts.map +1 -0
- package/dist/langchain/types.js +9 -0
- package/dist/langchain/types.js.map +1 -0
- package/dist/layers/index.d.ts +147 -0
- package/dist/layers/index.d.ts.map +1 -0
- package/dist/layers/index.js +565 -0
- package/dist/layers/index.js.map +1 -0
- package/dist/layers/types.d.ts +336 -0
- package/dist/layers/types.d.ts.map +1 -0
- package/dist/layers/types.js +10 -0
- package/dist/layers/types.js.map +1 -0
- package/dist/persistence/file.d.ts +55 -0
- package/dist/persistence/file.d.ts.map +1 -0
- package/dist/persistence/file.js +176 -0
- package/dist/persistence/file.js.map +1 -0
- package/dist/persistence/index.d.ts +16 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +34 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/memory.d.ts +32 -0
- package/dist/persistence/memory.d.ts.map +1 -0
- package/dist/persistence/memory.js +91 -0
- package/dist/persistence/memory.js.map +1 -0
- package/dist/persistence/types.d.ts +89 -0
- package/dist/persistence/types.d.ts.map +1 -0
- package/dist/persistence/types.js +9 -0
- package/dist/persistence/types.js.map +1 -0
- package/dist/proof/index.d.ts +87 -0
- package/dist/proof/index.d.ts.map +1 -0
- package/dist/proof/index.js +179 -0
- package/dist/proof/index.js.map +1 -0
- package/dist/provenance/index.d.ts +135 -0
- package/dist/provenance/index.d.ts.map +1 -0
- package/dist/provenance/index.js +356 -0
- package/dist/provenance/index.js.map +1 -0
- package/dist/provenance/types.d.ts +217 -0
- package/dist/provenance/types.d.ts.map +1 -0
- package/dist/provenance/types.js +10 -0
- package/dist/provenance/types.js.map +1 -0
- package/dist/trust-engine/index.d.ts +273 -0
- package/dist/trust-engine/index.d.ts.map +1 -0
- package/dist/trust-engine/index.js +515 -0
- package/dist/trust-engine/index.js.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trust Engine - Behavioral Trust Scoring
|
|
3
|
+
*
|
|
4
|
+
* Calculates and maintains trust scores for entities based on behavioral signals.
|
|
5
|
+
* Features 6-tier trust system with event emission for observability.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import { EventEmitter } from 'events';
|
|
10
|
+
import { createLogger } from '../common/logger.js';
|
|
11
|
+
const logger = createLogger({ component: 'trust-engine' });
|
|
12
|
+
/**
|
|
13
|
+
* Trust level thresholds (6 tiers) - per BASIS specification
|
|
14
|
+
*/
|
|
15
|
+
export const TRUST_THRESHOLDS = {
|
|
16
|
+
0: { min: 0, max: 99 }, // Sandbox
|
|
17
|
+
1: { min: 100, max: 299 }, // Provisional
|
|
18
|
+
2: { min: 300, max: 499 }, // Standard
|
|
19
|
+
3: { min: 500, max: 699 }, // Trusted
|
|
20
|
+
4: { min: 700, max: 899 }, // Certified
|
|
21
|
+
5: { min: 900, max: 1000 }, // Autonomous
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Trust level names (6 tiers) - per BASIS specification
|
|
25
|
+
*/
|
|
26
|
+
export const TRUST_LEVEL_NAMES = {
|
|
27
|
+
0: 'Sandbox',
|
|
28
|
+
1: 'Provisional',
|
|
29
|
+
2: 'Standard',
|
|
30
|
+
3: 'Trusted',
|
|
31
|
+
4: 'Certified',
|
|
32
|
+
5: 'Autonomous',
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Signal weights for score calculation
|
|
36
|
+
*/
|
|
37
|
+
export const SIGNAL_WEIGHTS = {
|
|
38
|
+
behavioral: 0.4,
|
|
39
|
+
compliance: 0.25,
|
|
40
|
+
identity: 0.2,
|
|
41
|
+
context: 0.15,
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Trust Engine service with event emission
|
|
45
|
+
*/
|
|
46
|
+
export class TrustEngine extends EventEmitter {
|
|
47
|
+
records = new Map();
|
|
48
|
+
_decayRate;
|
|
49
|
+
_decayIntervalMs;
|
|
50
|
+
_failureThreshold;
|
|
51
|
+
_acceleratedDecayMultiplier;
|
|
52
|
+
_failureWindowMs;
|
|
53
|
+
_minFailuresForAcceleration;
|
|
54
|
+
_persistence;
|
|
55
|
+
_autoPersist;
|
|
56
|
+
constructor(config = {}) {
|
|
57
|
+
super();
|
|
58
|
+
this._decayRate = config.decayRate ?? 0.01;
|
|
59
|
+
this._decayIntervalMs = config.decayIntervalMs ?? 60000;
|
|
60
|
+
this._failureThreshold = config.failureThreshold ?? 0.3;
|
|
61
|
+
this._acceleratedDecayMultiplier = config.acceleratedDecayMultiplier ?? 3.0;
|
|
62
|
+
this._failureWindowMs = config.failureWindowMs ?? 3600000; // 1 hour
|
|
63
|
+
this._minFailuresForAcceleration = config.minFailuresForAcceleration ?? 2;
|
|
64
|
+
this._persistence = config.persistence;
|
|
65
|
+
this._autoPersist = config.autoPersist ?? (config.persistence !== undefined);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get the current decay rate
|
|
69
|
+
*/
|
|
70
|
+
get decayRate() {
|
|
71
|
+
return this._decayRate;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get the decay interval in milliseconds
|
|
75
|
+
*/
|
|
76
|
+
get decayIntervalMs() {
|
|
77
|
+
return this._decayIntervalMs;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get the failure threshold
|
|
81
|
+
*/
|
|
82
|
+
get failureThreshold() {
|
|
83
|
+
return this._failureThreshold;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get the accelerated decay multiplier
|
|
87
|
+
*/
|
|
88
|
+
get acceleratedDecayMultiplier() {
|
|
89
|
+
return this._acceleratedDecayMultiplier;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get the persistence provider
|
|
93
|
+
*/
|
|
94
|
+
get persistence() {
|
|
95
|
+
return this._persistence;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Load all records from persistence
|
|
99
|
+
*/
|
|
100
|
+
async loadFromPersistence() {
|
|
101
|
+
if (!this._persistence) {
|
|
102
|
+
throw new Error('No persistence provider configured');
|
|
103
|
+
}
|
|
104
|
+
const records = await this._persistence.query();
|
|
105
|
+
this.records.clear();
|
|
106
|
+
for (const record of records) {
|
|
107
|
+
this.records.set(record.entityId, record);
|
|
108
|
+
}
|
|
109
|
+
logger.info({ count: records.length }, 'Loaded trust records from persistence');
|
|
110
|
+
return records.length;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Save all records to persistence
|
|
114
|
+
*/
|
|
115
|
+
async saveToPersistence() {
|
|
116
|
+
if (!this._persistence) {
|
|
117
|
+
throw new Error('No persistence provider configured');
|
|
118
|
+
}
|
|
119
|
+
let count = 0;
|
|
120
|
+
for (const record of this.records.values()) {
|
|
121
|
+
await this._persistence.save(record);
|
|
122
|
+
count++;
|
|
123
|
+
}
|
|
124
|
+
logger.info({ count }, 'Saved trust records to persistence');
|
|
125
|
+
return count;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Persist a single record if auto-persist is enabled
|
|
129
|
+
*/
|
|
130
|
+
async autoPersistRecord(record) {
|
|
131
|
+
if (this._persistence && this._autoPersist) {
|
|
132
|
+
await this._persistence.save(record);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Close the trust engine and persistence provider
|
|
137
|
+
*/
|
|
138
|
+
async close() {
|
|
139
|
+
if (this._persistence) {
|
|
140
|
+
await this._persistence.close();
|
|
141
|
+
}
|
|
142
|
+
this.removeAllListeners();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Emit a trust event
|
|
146
|
+
*/
|
|
147
|
+
emitTrustEvent(event) {
|
|
148
|
+
this.emit(event.type, event);
|
|
149
|
+
this.emit('trust:*', event); // Wildcard for all events
|
|
150
|
+
logger.debug({ event }, 'Trust event emitted');
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Calculate trust score for an entity
|
|
154
|
+
*/
|
|
155
|
+
async calculate(entityId) {
|
|
156
|
+
const record = this.records.get(entityId);
|
|
157
|
+
const signals = record?.signals ?? [];
|
|
158
|
+
// Calculate component scores
|
|
159
|
+
const components = this.calculateComponents(signals);
|
|
160
|
+
// Calculate weighted total
|
|
161
|
+
const score = Math.round(components.behavioral * SIGNAL_WEIGHTS.behavioral * 1000 +
|
|
162
|
+
components.compliance * SIGNAL_WEIGHTS.compliance * 1000 +
|
|
163
|
+
components.identity * SIGNAL_WEIGHTS.identity * 1000 +
|
|
164
|
+
components.context * SIGNAL_WEIGHTS.context * 1000);
|
|
165
|
+
// Clamp to valid range
|
|
166
|
+
const clampedScore = Math.max(0, Math.min(1000, score));
|
|
167
|
+
const level = this.scoreToLevel(clampedScore);
|
|
168
|
+
const factors = this.getSignificantFactors(components);
|
|
169
|
+
logger.debug({ entityId, score: clampedScore, level, components }, 'Trust calculated');
|
|
170
|
+
return {
|
|
171
|
+
score: clampedScore,
|
|
172
|
+
level,
|
|
173
|
+
components,
|
|
174
|
+
factors,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Check if an entity has accelerated decay active
|
|
179
|
+
*/
|
|
180
|
+
hasAcceleratedDecay(record) {
|
|
181
|
+
const now = Date.now();
|
|
182
|
+
const recentFailures = record.recentFailures.filter((timestamp) => now - new Date(timestamp).getTime() < this._failureWindowMs);
|
|
183
|
+
return recentFailures.length >= this._minFailuresForAcceleration;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Clean up old failure timestamps outside the window
|
|
187
|
+
*/
|
|
188
|
+
cleanupFailures(record) {
|
|
189
|
+
const now = Date.now();
|
|
190
|
+
record.recentFailures = record.recentFailures.filter((timestamp) => now - new Date(timestamp).getTime() < this._failureWindowMs);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get trust score for an entity (with automatic decay)
|
|
194
|
+
*/
|
|
195
|
+
async getScore(entityId) {
|
|
196
|
+
const record = this.records.get(entityId);
|
|
197
|
+
if (record) {
|
|
198
|
+
// Clean up old failures
|
|
199
|
+
this.cleanupFailures(record);
|
|
200
|
+
// Apply decay if stale
|
|
201
|
+
const staleness = Date.now() - new Date(record.lastCalculatedAt).getTime();
|
|
202
|
+
if (staleness > this._decayIntervalMs) {
|
|
203
|
+
const previousScore = record.score;
|
|
204
|
+
const previousLevel = record.level;
|
|
205
|
+
// Check if accelerated decay should apply
|
|
206
|
+
const accelerated = this.hasAcceleratedDecay(record);
|
|
207
|
+
const effectiveDecayRate = accelerated
|
|
208
|
+
? this._decayRate * this._acceleratedDecayMultiplier
|
|
209
|
+
: this._decayRate;
|
|
210
|
+
// Apply decay based on staleness
|
|
211
|
+
const decayPeriods = Math.floor(staleness / this._decayIntervalMs);
|
|
212
|
+
const decayMultiplier = Math.pow(1 - effectiveDecayRate, decayPeriods);
|
|
213
|
+
const decayedScore = Math.round(record.score * decayMultiplier);
|
|
214
|
+
const clampedScore = Math.max(0, decayedScore);
|
|
215
|
+
record.score = clampedScore;
|
|
216
|
+
record.level = this.scoreToLevel(clampedScore);
|
|
217
|
+
record.lastCalculatedAt = new Date().toISOString();
|
|
218
|
+
// Emit decay event
|
|
219
|
+
if (previousScore !== record.score) {
|
|
220
|
+
this.emitTrustEvent({
|
|
221
|
+
type: 'trust:decay_applied',
|
|
222
|
+
entityId,
|
|
223
|
+
timestamp: new Date().toISOString(),
|
|
224
|
+
previousScore,
|
|
225
|
+
newScore: record.score,
|
|
226
|
+
decayAmount: previousScore - record.score,
|
|
227
|
+
stalenessMs: staleness,
|
|
228
|
+
accelerated,
|
|
229
|
+
});
|
|
230
|
+
// Emit tier change if applicable
|
|
231
|
+
if (previousLevel !== record.level) {
|
|
232
|
+
this.emitTrustEvent({
|
|
233
|
+
type: 'trust:tier_changed',
|
|
234
|
+
entityId,
|
|
235
|
+
timestamp: new Date().toISOString(),
|
|
236
|
+
previousLevel,
|
|
237
|
+
newLevel: record.level,
|
|
238
|
+
previousLevelName: TRUST_LEVEL_NAMES[previousLevel],
|
|
239
|
+
newLevelName: TRUST_LEVEL_NAMES[record.level],
|
|
240
|
+
direction: record.level < previousLevel ? 'demoted' : 'promoted',
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
// Auto-persist after decay
|
|
244
|
+
await this.autoPersistRecord(record);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return record;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Record a trust signal
|
|
252
|
+
*/
|
|
253
|
+
async recordSignal(signal) {
|
|
254
|
+
let record = this.records.get(signal.entityId);
|
|
255
|
+
let isNewEntity = false;
|
|
256
|
+
if (!record) {
|
|
257
|
+
record = this.createInitialRecord(signal.entityId);
|
|
258
|
+
this.records.set(signal.entityId, record);
|
|
259
|
+
isNewEntity = true;
|
|
260
|
+
}
|
|
261
|
+
const previousScore = record.score;
|
|
262
|
+
const previousLevel = record.level;
|
|
263
|
+
// Detect failure signals
|
|
264
|
+
if (signal.value < this._failureThreshold) {
|
|
265
|
+
record.recentFailures.push(signal.timestamp);
|
|
266
|
+
this.cleanupFailures(record);
|
|
267
|
+
const acceleratedDecayActive = this.hasAcceleratedDecay(record);
|
|
268
|
+
this.emitTrustEvent({
|
|
269
|
+
type: 'trust:failure_detected',
|
|
270
|
+
entityId: signal.entityId,
|
|
271
|
+
timestamp: new Date().toISOString(),
|
|
272
|
+
signal,
|
|
273
|
+
failureCount: record.recentFailures.length,
|
|
274
|
+
acceleratedDecayActive,
|
|
275
|
+
});
|
|
276
|
+
logger.warn({
|
|
277
|
+
entityId: signal.entityId,
|
|
278
|
+
signalType: signal.type,
|
|
279
|
+
signalValue: signal.value,
|
|
280
|
+
failureCount: record.recentFailures.length,
|
|
281
|
+
acceleratedDecayActive,
|
|
282
|
+
}, 'Failure signal detected');
|
|
283
|
+
}
|
|
284
|
+
// Add signal
|
|
285
|
+
record.signals.push(signal);
|
|
286
|
+
// Keep only recent signals (last 1000)
|
|
287
|
+
if (record.signals.length > 1000) {
|
|
288
|
+
record.signals = record.signals.slice(-1000);
|
|
289
|
+
}
|
|
290
|
+
// Recalculate
|
|
291
|
+
const calculation = await this.calculate(signal.entityId);
|
|
292
|
+
// Update record
|
|
293
|
+
record.score = calculation.score;
|
|
294
|
+
record.level = calculation.level;
|
|
295
|
+
record.components = calculation.components;
|
|
296
|
+
record.lastCalculatedAt = new Date().toISOString();
|
|
297
|
+
// Record history if significant change
|
|
298
|
+
if (Math.abs(calculation.score - previousScore) >= 10) {
|
|
299
|
+
record.history.push({
|
|
300
|
+
score: calculation.score,
|
|
301
|
+
level: calculation.level,
|
|
302
|
+
reason: `Signal: ${signal.type}`,
|
|
303
|
+
timestamp: new Date().toISOString(),
|
|
304
|
+
});
|
|
305
|
+
// Keep last 100 history entries
|
|
306
|
+
if (record.history.length > 100) {
|
|
307
|
+
record.history = record.history.slice(-100);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// Emit signal recorded event
|
|
311
|
+
this.emitTrustEvent({
|
|
312
|
+
type: 'trust:signal_recorded',
|
|
313
|
+
entityId: signal.entityId,
|
|
314
|
+
timestamp: new Date().toISOString(),
|
|
315
|
+
signal,
|
|
316
|
+
previousScore,
|
|
317
|
+
newScore: calculation.score,
|
|
318
|
+
});
|
|
319
|
+
// Emit score changed event if significant
|
|
320
|
+
if (Math.abs(calculation.score - previousScore) >= 5) {
|
|
321
|
+
this.emitTrustEvent({
|
|
322
|
+
type: 'trust:score_changed',
|
|
323
|
+
entityId: signal.entityId,
|
|
324
|
+
timestamp: new Date().toISOString(),
|
|
325
|
+
previousScore,
|
|
326
|
+
newScore: calculation.score,
|
|
327
|
+
delta: calculation.score - previousScore,
|
|
328
|
+
reason: `Signal: ${signal.type}`,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
// Emit tier changed event if applicable
|
|
332
|
+
if (previousLevel !== calculation.level && !isNewEntity) {
|
|
333
|
+
this.emitTrustEvent({
|
|
334
|
+
type: 'trust:tier_changed',
|
|
335
|
+
entityId: signal.entityId,
|
|
336
|
+
timestamp: new Date().toISOString(),
|
|
337
|
+
previousLevel,
|
|
338
|
+
newLevel: calculation.level,
|
|
339
|
+
previousLevelName: TRUST_LEVEL_NAMES[previousLevel],
|
|
340
|
+
newLevelName: TRUST_LEVEL_NAMES[calculation.level],
|
|
341
|
+
direction: calculation.level > previousLevel ? 'promoted' : 'demoted',
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
// Auto-persist if enabled
|
|
345
|
+
await this.autoPersistRecord(record);
|
|
346
|
+
logger.debug({
|
|
347
|
+
entityId: signal.entityId,
|
|
348
|
+
signalType: signal.type,
|
|
349
|
+
newScore: calculation.score,
|
|
350
|
+
}, 'Signal recorded');
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Initialize trust for a new entity
|
|
354
|
+
*/
|
|
355
|
+
async initializeEntity(entityId, initialLevel = 1) {
|
|
356
|
+
const score = TRUST_THRESHOLDS[initialLevel].min;
|
|
357
|
+
const record = {
|
|
358
|
+
entityId,
|
|
359
|
+
score,
|
|
360
|
+
level: initialLevel,
|
|
361
|
+
components: {
|
|
362
|
+
behavioral: 0.5,
|
|
363
|
+
compliance: 0.5,
|
|
364
|
+
identity: 0.5,
|
|
365
|
+
context: 0.5,
|
|
366
|
+
},
|
|
367
|
+
signals: [],
|
|
368
|
+
lastCalculatedAt: new Date().toISOString(),
|
|
369
|
+
history: [
|
|
370
|
+
{
|
|
371
|
+
score,
|
|
372
|
+
level: initialLevel,
|
|
373
|
+
reason: 'Initial registration',
|
|
374
|
+
timestamp: new Date().toISOString(),
|
|
375
|
+
},
|
|
376
|
+
],
|
|
377
|
+
recentFailures: [],
|
|
378
|
+
};
|
|
379
|
+
this.records.set(entityId, record);
|
|
380
|
+
// Auto-persist if enabled
|
|
381
|
+
await this.autoPersistRecord(record);
|
|
382
|
+
// Emit initialized event
|
|
383
|
+
this.emitTrustEvent({
|
|
384
|
+
type: 'trust:initialized',
|
|
385
|
+
entityId,
|
|
386
|
+
timestamp: new Date().toISOString(),
|
|
387
|
+
initialScore: score,
|
|
388
|
+
initialLevel,
|
|
389
|
+
});
|
|
390
|
+
logger.info({ entityId, initialLevel }, 'Entity trust initialized');
|
|
391
|
+
return record;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Get all entity IDs
|
|
395
|
+
*/
|
|
396
|
+
getEntityIds() {
|
|
397
|
+
return Array.from(this.records.keys());
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Get trust level name
|
|
401
|
+
*/
|
|
402
|
+
getLevelName(level) {
|
|
403
|
+
return TRUST_LEVEL_NAMES[level];
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Convert score to trust level
|
|
407
|
+
*/
|
|
408
|
+
scoreToLevel(score) {
|
|
409
|
+
for (const [level, { min, max }] of Object.entries(TRUST_THRESHOLDS)) {
|
|
410
|
+
if (score >= min && score <= max) {
|
|
411
|
+
return parseInt(level);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
return 0;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Calculate component scores from signals
|
|
418
|
+
*/
|
|
419
|
+
calculateComponents(signals) {
|
|
420
|
+
// Group signals by type
|
|
421
|
+
const behavioral = signals.filter((s) => s.type.startsWith('behavioral.'));
|
|
422
|
+
const compliance = signals.filter((s) => s.type.startsWith('compliance.'));
|
|
423
|
+
const identity = signals.filter((s) => s.type.startsWith('identity.'));
|
|
424
|
+
const context = signals.filter((s) => s.type.startsWith('context.'));
|
|
425
|
+
return {
|
|
426
|
+
behavioral: this.averageSignalValue(behavioral, 0.5),
|
|
427
|
+
compliance: this.averageSignalValue(compliance, 0.5),
|
|
428
|
+
identity: this.averageSignalValue(identity, 0.5),
|
|
429
|
+
context: this.averageSignalValue(context, 0.5),
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Calculate average signal value with default
|
|
434
|
+
*/
|
|
435
|
+
averageSignalValue(signals, defaultValue) {
|
|
436
|
+
if (signals.length === 0)
|
|
437
|
+
return defaultValue;
|
|
438
|
+
// Weight recent signals more heavily
|
|
439
|
+
const now = Date.now();
|
|
440
|
+
let weightedSum = 0;
|
|
441
|
+
let totalWeight = 0;
|
|
442
|
+
for (const signal of signals) {
|
|
443
|
+
const age = now - new Date(signal.timestamp).getTime();
|
|
444
|
+
const weight = Math.exp(-age / (7 * 24 * 60 * 60 * 1000)); // 7-day half-life
|
|
445
|
+
weightedSum += signal.value * weight;
|
|
446
|
+
totalWeight += weight;
|
|
447
|
+
}
|
|
448
|
+
return totalWeight > 0 ? weightedSum / totalWeight : defaultValue;
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Get significant factors affecting the score
|
|
452
|
+
*/
|
|
453
|
+
getSignificantFactors(components) {
|
|
454
|
+
const factors = [];
|
|
455
|
+
if (components.behavioral < 0.3) {
|
|
456
|
+
factors.push('Low behavioral trust');
|
|
457
|
+
}
|
|
458
|
+
if (components.compliance < 0.3) {
|
|
459
|
+
factors.push('Low compliance score');
|
|
460
|
+
}
|
|
461
|
+
if (components.identity < 0.3) {
|
|
462
|
+
factors.push('Weak identity verification');
|
|
463
|
+
}
|
|
464
|
+
if (components.context < 0.3) {
|
|
465
|
+
factors.push('Unusual context signals');
|
|
466
|
+
}
|
|
467
|
+
return factors;
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Create initial trust record
|
|
471
|
+
*/
|
|
472
|
+
createInitialRecord(entityId) {
|
|
473
|
+
return {
|
|
474
|
+
entityId,
|
|
475
|
+
score: TRUST_THRESHOLDS[1].min, // Start at L1 (Provisional) minimum
|
|
476
|
+
level: 1,
|
|
477
|
+
components: {
|
|
478
|
+
behavioral: 0.5,
|
|
479
|
+
compliance: 0.5,
|
|
480
|
+
identity: 0.5,
|
|
481
|
+
context: 0.5,
|
|
482
|
+
},
|
|
483
|
+
signals: [],
|
|
484
|
+
lastCalculatedAt: new Date().toISOString(),
|
|
485
|
+
history: [],
|
|
486
|
+
recentFailures: [],
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Check if accelerated decay is currently active for an entity
|
|
491
|
+
*/
|
|
492
|
+
isAcceleratedDecayActive(entityId) {
|
|
493
|
+
const record = this.records.get(entityId);
|
|
494
|
+
if (!record)
|
|
495
|
+
return false;
|
|
496
|
+
return this.hasAcceleratedDecay(record);
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Get current failure count for an entity
|
|
500
|
+
*/
|
|
501
|
+
getFailureCount(entityId) {
|
|
502
|
+
const record = this.records.get(entityId);
|
|
503
|
+
if (!record)
|
|
504
|
+
return 0;
|
|
505
|
+
this.cleanupFailures(record);
|
|
506
|
+
return record.recentFailures.length;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Create a new Trust Engine instance
|
|
511
|
+
*/
|
|
512
|
+
export function createTrustEngine(config) {
|
|
513
|
+
return new TrustEngine(config);
|
|
514
|
+
}
|
|
515
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/trust-engine/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vorionsys/atsf-core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Agentic Trust Scoring Framework - Core runtime for AI agent governance",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./trust-engine": {
|
|
14
|
+
"types": "./dist/trust-engine/index.d.ts",
|
|
15
|
+
"import": "./dist/trust-engine/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./basis": {
|
|
18
|
+
"types": "./dist/basis/index.d.ts",
|
|
19
|
+
"import": "./dist/basis/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./intent": {
|
|
22
|
+
"types": "./dist/intent/index.d.ts",
|
|
23
|
+
"import": "./dist/intent/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./enforce": {
|
|
26
|
+
"types": "./dist/enforce/index.d.ts",
|
|
27
|
+
"import": "./dist/enforce/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./proof": {
|
|
30
|
+
"types": "./dist/proof/index.d.ts",
|
|
31
|
+
"import": "./dist/proof/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./cognigate": {
|
|
34
|
+
"types": "./dist/cognigate/index.d.ts",
|
|
35
|
+
"import": "./dist/cognigate/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./types": {
|
|
38
|
+
"types": "./dist/common/types.d.ts",
|
|
39
|
+
"import": "./dist/common/types.js"
|
|
40
|
+
},
|
|
41
|
+
"./persistence": {
|
|
42
|
+
"types": "./dist/persistence/index.d.ts",
|
|
43
|
+
"import": "./dist/persistence/index.js"
|
|
44
|
+
},
|
|
45
|
+
"./langchain": {
|
|
46
|
+
"types": "./dist/langchain/index.d.ts",
|
|
47
|
+
"import": "./dist/langchain/index.js"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"files": [
|
|
51
|
+
"dist"
|
|
52
|
+
],
|
|
53
|
+
"scripts": {
|
|
54
|
+
"build": "tsc",
|
|
55
|
+
"dev": "tsc --watch",
|
|
56
|
+
"test": "vitest run",
|
|
57
|
+
"test:watch": "vitest",
|
|
58
|
+
"typecheck": "tsc --noEmit",
|
|
59
|
+
"lint": "eslint src",
|
|
60
|
+
"clean": "rm -rf dist"
|
|
61
|
+
},
|
|
62
|
+
"dependencies": {
|
|
63
|
+
"pino": "^9.0.0",
|
|
64
|
+
"pino-pretty": "^11.0.0",
|
|
65
|
+
"zod": "^3.24.1",
|
|
66
|
+
"fastify": "^5.0.0",
|
|
67
|
+
"@fastify/cors": "^10.0.0",
|
|
68
|
+
"@fastify/helmet": "^12.0.0",
|
|
69
|
+
"@fastify/rate-limit": "^10.0.0"
|
|
70
|
+
},
|
|
71
|
+
"devDependencies": {
|
|
72
|
+
"@types/node": "^22.10.5",
|
|
73
|
+
"typescript": "^5.7.2",
|
|
74
|
+
"vitest": "^2.1.8"
|
|
75
|
+
},
|
|
76
|
+
"peerDependencies": {
|
|
77
|
+
"typescript": "^5.0.0",
|
|
78
|
+
"@langchain/core": ">=0.2.0"
|
|
79
|
+
},
|
|
80
|
+
"peerDependenciesMeta": {
|
|
81
|
+
"@langchain/core": {
|
|
82
|
+
"optional": true
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"keywords": [
|
|
86
|
+
"ai",
|
|
87
|
+
"agent",
|
|
88
|
+
"trust",
|
|
89
|
+
"governance",
|
|
90
|
+
"atsf",
|
|
91
|
+
"vorion"
|
|
92
|
+
],
|
|
93
|
+
"author": "Vorion",
|
|
94
|
+
"license": "MIT",
|
|
95
|
+
"repository": {
|
|
96
|
+
"type": "git",
|
|
97
|
+
"url": "https://github.com/voriongit/vorion.git",
|
|
98
|
+
"directory": "packages/atsf-core"
|
|
99
|
+
}
|
|
100
|
+
}
|