@vorionsys/atsf-core 0.2.2 → 0.2.4

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.
Files changed (135) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/README.md +77 -11
  3. package/dist/api/server.d.ts +4 -1
  4. package/dist/api/server.d.ts.map +1 -1
  5. package/dist/api/server.js +3 -3
  6. package/dist/api/server.js.map +1 -1
  7. package/dist/basis/parser.d.ts +14 -14
  8. package/dist/common/adapters.d.ts +16 -9
  9. package/dist/common/adapters.d.ts.map +1 -1
  10. package/dist/common/adapters.js +69 -58
  11. package/dist/common/adapters.js.map +1 -1
  12. package/dist/common/config.d.ts +4 -3
  13. package/dist/common/config.d.ts.map +1 -1
  14. package/dist/common/config.js +2 -2
  15. package/dist/common/config.js.map +1 -1
  16. package/dist/common/types.d.ts +3 -3
  17. package/dist/crewai/callback.d.ts +91 -0
  18. package/dist/crewai/callback.d.ts.map +1 -0
  19. package/dist/crewai/callback.js +271 -0
  20. package/dist/crewai/callback.js.map +1 -0
  21. package/dist/crewai/executor.d.ts +226 -0
  22. package/dist/crewai/executor.d.ts.map +1 -0
  23. package/dist/crewai/executor.js +822 -0
  24. package/dist/crewai/executor.js.map +1 -0
  25. package/dist/crewai/index.d.ts +12 -0
  26. package/dist/crewai/index.d.ts.map +1 -0
  27. package/dist/crewai/index.js +12 -0
  28. package/dist/crewai/index.js.map +1 -0
  29. package/dist/crewai/tools.d.ts +21 -0
  30. package/dist/crewai/tools.d.ts.map +1 -0
  31. package/dist/crewai/tools.js +163 -0
  32. package/dist/crewai/tools.js.map +1 -0
  33. package/dist/crewai/types.d.ts +202 -0
  34. package/dist/crewai/types.d.ts.map +1 -0
  35. package/dist/crewai/types.js +9 -0
  36. package/dist/crewai/types.js.map +1 -0
  37. package/dist/enforce/index.d.ts +50 -2
  38. package/dist/enforce/index.d.ts.map +1 -1
  39. package/dist/enforce/index.js +73 -4
  40. package/dist/enforce/index.js.map +1 -1
  41. package/dist/enforce/trust-aware-enforcement-service.d.ts +121 -0
  42. package/dist/enforce/trust-aware-enforcement-service.d.ts.map +1 -0
  43. package/dist/enforce/trust-aware-enforcement-service.js +583 -0
  44. package/dist/enforce/trust-aware-enforcement-service.js.map +1 -0
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +4 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/intent/index.d.ts +18 -3
  50. package/dist/intent/index.d.ts.map +1 -1
  51. package/dist/intent/index.js +37 -6
  52. package/dist/intent/index.js.map +1 -1
  53. package/dist/intent/persistent-intent-service.d.ts +68 -0
  54. package/dist/intent/persistent-intent-service.d.ts.map +1 -0
  55. package/dist/intent/persistent-intent-service.js +265 -0
  56. package/dist/intent/persistent-intent-service.js.map +1 -0
  57. package/dist/intent/supabase-intent-repository.d.ts +124 -0
  58. package/dist/intent/supabase-intent-repository.d.ts.map +1 -0
  59. package/dist/intent/supabase-intent-repository.js +404 -0
  60. package/dist/intent/supabase-intent-repository.js.map +1 -0
  61. package/dist/langchain/tools.d.ts.map +1 -1
  62. package/dist/langchain/tools.js +1 -3
  63. package/dist/langchain/tools.js.map +1 -1
  64. package/dist/layers/implementations/L0-request-format.d.ts +37 -0
  65. package/dist/layers/implementations/L0-request-format.d.ts.map +1 -0
  66. package/dist/layers/implementations/L0-request-format.js +216 -0
  67. package/dist/layers/implementations/L0-request-format.js.map +1 -0
  68. package/dist/layers/implementations/L1-input-size.d.ts +36 -0
  69. package/dist/layers/implementations/L1-input-size.d.ts.map +1 -0
  70. package/dist/layers/implementations/L1-input-size.js +150 -0
  71. package/dist/layers/implementations/L1-input-size.js.map +1 -0
  72. package/dist/layers/implementations/L2-charset-sanitizer.d.ts +28 -0
  73. package/dist/layers/implementations/L2-charset-sanitizer.d.ts.map +1 -0
  74. package/dist/layers/implementations/L2-charset-sanitizer.js +220 -0
  75. package/dist/layers/implementations/L2-charset-sanitizer.js.map +1 -0
  76. package/dist/layers/implementations/L3-schema-conformance.d.ts +47 -0
  77. package/dist/layers/implementations/L3-schema-conformance.d.ts.map +1 -0
  78. package/dist/layers/implementations/L3-schema-conformance.js +258 -0
  79. package/dist/layers/implementations/L3-schema-conformance.js.map +1 -0
  80. package/dist/layers/implementations/L4-injection-detector.d.ts +47 -0
  81. package/dist/layers/implementations/L4-injection-detector.d.ts.map +1 -0
  82. package/dist/layers/implementations/L4-injection-detector.js +256 -0
  83. package/dist/layers/implementations/L4-injection-detector.js.map +1 -0
  84. package/dist/layers/implementations/L5-rate-limiter.d.ts +51 -0
  85. package/dist/layers/implementations/L5-rate-limiter.d.ts.map +1 -0
  86. package/dist/layers/implementations/L5-rate-limiter.js +183 -0
  87. package/dist/layers/implementations/L5-rate-limiter.js.map +1 -0
  88. package/dist/layers/implementations/index.d.ts +16 -0
  89. package/dist/layers/implementations/index.d.ts.map +1 -0
  90. package/dist/layers/implementations/index.js +16 -0
  91. package/dist/layers/implementations/index.js.map +1 -0
  92. package/dist/persistence/sqlite.d.ts.map +1 -1
  93. package/dist/persistence/sqlite.js +4 -3
  94. package/dist/persistence/sqlite.js.map +1 -1
  95. package/dist/persistence/supabase.js +2 -2
  96. package/dist/persistence/supabase.js.map +1 -1
  97. package/dist/phase6/ceiling.js +5 -5
  98. package/dist/phase6/ceiling.js.map +1 -1
  99. package/dist/phase6/context.js +6 -6
  100. package/dist/phase6/context.js.map +1 -1
  101. package/dist/phase6/index.d.ts +1 -1
  102. package/dist/phase6/index.js +1 -1
  103. package/dist/phase6/role-gates.js +2 -2
  104. package/dist/phase6/role-gates.js.map +1 -1
  105. package/dist/phase6/types.d.ts +31 -30
  106. package/dist/phase6/types.d.ts.map +1 -1
  107. package/dist/phase6/types.js +17 -12
  108. package/dist/phase6/types.js.map +1 -1
  109. package/dist/phase6/weight-presets/canonical.d.ts +2 -2
  110. package/dist/phase6/weight-presets/canonical.js +2 -2
  111. package/dist/phase6/weight-presets/index.d.ts +1 -1
  112. package/dist/phase6/weight-presets/index.js +1 -1
  113. package/dist/phase6/weight-presets/merger.d.ts +1 -1
  114. package/dist/phase6/weight-presets/merger.js +1 -1
  115. package/dist/proof/merkle.d.ts +21 -0
  116. package/dist/proof/merkle.d.ts.map +1 -1
  117. package/dist/proof/merkle.js +92 -7
  118. package/dist/proof/merkle.js.map +1 -1
  119. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +11 -9
  120. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -1
  121. package/dist/trust-engine/ceiling-enforcement/kernel.js +25 -19
  122. package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -1
  123. package/dist/trust-engine/decay-profiles.d.ts +37 -136
  124. package/dist/trust-engine/decay-profiles.d.ts.map +1 -1
  125. package/dist/trust-engine/decay-profiles.js +68 -178
  126. package/dist/trust-engine/decay-profiles.js.map +1 -1
  127. package/dist/trust-engine/index.d.ts +96 -63
  128. package/dist/trust-engine/index.d.ts.map +1 -1
  129. package/dist/trust-engine/index.js +183 -112
  130. package/dist/trust-engine/index.js.map +1 -1
  131. package/dist/trust-engine/phase6-types.d.ts +10 -3
  132. package/dist/trust-engine/phase6-types.d.ts.map +1 -1
  133. package/dist/trust-engine/phase6-types.js +19 -13
  134. package/dist/trust-engine/phase6-types.js.map +1 -1
  135. package/package.json +5 -4
@@ -0,0 +1,583 @@
1
+ /**
2
+ * Trust-Aware Enforcement Service
3
+ *
4
+ * Production-quality enforcement service that provides:
5
+ * - Real-time trust score lookups via TrustEngine
6
+ * - Three-tier fluid governance (GREEN/YELLOW/RED)
7
+ * - Configurable trust thresholds for automatic decisions
8
+ * - Risk-based constraint computation from intent metadata
9
+ * - Refinement workflow with attempt tracking
10
+ * - Tenant isolation and decision expiration
11
+ *
12
+ * Replaces MockEnforcementService for production use.
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ import { createLogger } from '../common/logger.js';
17
+ import { TRUST_LEVEL_NAMES } from '../trust-engine/index.js';
18
+ const logger = createLogger({ component: 'trust-aware-enforcement' });
19
+ /**
20
+ * Compute risk level from intent metadata fields.
21
+ */
22
+ function computeRiskLevel(context) {
23
+ const intent = context.intent;
24
+ // Irreversible + high sensitivity = critical
25
+ if (intent.reversibility === 'IRREVERSIBLE' && intent.dataSensitivity === 'RESTRICTED') {
26
+ return 'critical';
27
+ }
28
+ // Delete/execute with restricted data = high
29
+ if ((intent.actionType === 'delete' || intent.actionType === 'execute') &&
30
+ (intent.dataSensitivity === 'RESTRICTED' || intent.dataSensitivity === 'CONFIDENTIAL')) {
31
+ return 'high';
32
+ }
33
+ // Irreversible actions = high
34
+ if (intent.reversibility === 'IRREVERSIBLE') {
35
+ return 'high';
36
+ }
37
+ // Write/transfer with confidential data = medium
38
+ if ((intent.actionType === 'write' || intent.actionType === 'transfer') &&
39
+ intent.dataSensitivity === 'CONFIDENTIAL') {
40
+ return 'medium';
41
+ }
42
+ // Read-only or public data = low
43
+ if (intent.actionType === 'read' || intent.dataSensitivity === 'PUBLIC') {
44
+ return 'low';
45
+ }
46
+ return 'medium';
47
+ }
48
+ // =============================================================================
49
+ // CONSTRAINT COMPUTATION
50
+ // =============================================================================
51
+ /**
52
+ * Build constraints based on risk level and trust.
53
+ */
54
+ function buildConstraints(riskLevel, trustLevel, policy, defaultConstraints) {
55
+ const base = {
56
+ allowedTools: defaultConstraints?.allowedTools ?? ['*'],
57
+ dataScopes: defaultConstraints?.dataScopes ?? ['*'],
58
+ rateLimits: defaultConstraints?.rateLimits ?? [],
59
+ requiredApprovals: defaultConstraints?.requiredApprovals ?? [],
60
+ reversibilityRequired: false,
61
+ maxRetries: 3,
62
+ };
63
+ // Tighten constraints based on risk
64
+ if (riskLevel === 'critical' || riskLevel === 'high') {
65
+ base.reversibilityRequired = true;
66
+ base.maxExecutionTimeMs = 300_000; // 5 minutes
67
+ base.maxRetries = 1;
68
+ }
69
+ if (riskLevel === 'critical') {
70
+ base.requiredApprovals = [
71
+ {
72
+ type: 'human_review',
73
+ approver: 'admin',
74
+ timeoutMs: policy.refinementDeadlineMs,
75
+ reason: 'Critical risk action requires human approval',
76
+ },
77
+ ];
78
+ }
79
+ // Lower trust = tighter constraints
80
+ if (trustLevel <= 2) {
81
+ base.maxExecutionTimeMs = Math.min(base.maxExecutionTimeMs ?? 600_000, 60_000);
82
+ base.maxRetries = 1;
83
+ }
84
+ return base;
85
+ }
86
+ // =============================================================================
87
+ // REFINEMENT OPTIONS
88
+ // =============================================================================
89
+ /**
90
+ * Generate refinement options for YELLOW decisions.
91
+ */
92
+ function buildRefinementOptions(riskLevel, trustLevel) {
93
+ const options = [];
94
+ // Always offer "add constraints"
95
+ options.push({
96
+ id: crypto.randomUUID(),
97
+ action: 'ADD_CONSTRAINTS',
98
+ description: 'Accept additional operational constraints to proceed',
99
+ successProbability: riskLevel === 'high' ? 0.6 : 0.9,
100
+ effort: 'low',
101
+ });
102
+ // Offer scope reduction for high-risk
103
+ if (riskLevel === 'high' || riskLevel === 'critical') {
104
+ options.push({
105
+ id: crypto.randomUUID(),
106
+ action: 'REDUCE_SCOPE',
107
+ description: 'Reduce the scope of the action (e.g., fewer resources, read-only)',
108
+ successProbability: 0.8,
109
+ effort: 'medium',
110
+ });
111
+ }
112
+ // Offer human approval
113
+ options.push({
114
+ id: crypto.randomUUID(),
115
+ action: 'REQUEST_APPROVAL',
116
+ description: 'Request explicit human approval for this action',
117
+ successProbability: 0.7,
118
+ effort: 'medium',
119
+ });
120
+ // Offer decomposition for complex actions
121
+ if (riskLevel !== 'low') {
122
+ options.push({
123
+ id: crypto.randomUUID(),
124
+ action: 'DECOMPOSE',
125
+ description: 'Break this action into smaller, individually-approvable steps',
126
+ successProbability: 0.85,
127
+ effort: 'high',
128
+ });
129
+ }
130
+ // Offer "wait for trust" if trust is close to threshold
131
+ if (trustLevel >= 2 && trustLevel <= 4) {
132
+ options.push({
133
+ id: crypto.randomUUID(),
134
+ action: 'WAIT_FOR_TRUST',
135
+ description: 'Continue building trust through lower-risk actions first',
136
+ successProbability: 0.5,
137
+ effort: 'high',
138
+ });
139
+ }
140
+ return options;
141
+ }
142
+ const DEFAULT_CONFIG = {
143
+ autoApproveLevel: 4,
144
+ requireRefinementLevel: 2,
145
+ autoDenyLevel: 0,
146
+ decisionExpirationMs: 3_600_000,
147
+ refinementDeadlineMs: 900_000,
148
+ maxRefinementAttempts: 3,
149
+ defaultConstraints: {},
150
+ };
151
+ // =============================================================================
152
+ // TRUST-AWARE ENFORCEMENT SERVICE
153
+ // =============================================================================
154
+ /**
155
+ * Production enforcement service wired to the Trust Engine.
156
+ *
157
+ * Provides real three-tier fluid governance with:
158
+ * - Trust-based tier determination using live TrustEngine scores
159
+ * - Risk-aware constraint computation from intent metadata
160
+ * - Refinement workflow with configurable attempt limits
161
+ * - Full audit trail via decision/workflow records
162
+ */
163
+ export class TrustAwareEnforcementService {
164
+ config;
165
+ policy;
166
+ decisions = new Map();
167
+ workflows = new Map(); // keyed by intentId
168
+ trustEngine;
169
+ policyEngine;
170
+ constructor(trustEngine, config, policy) {
171
+ this.trustEngine = trustEngine;
172
+ this.policyEngine = config?.policyEngine ?? null;
173
+ this.config = { ...DEFAULT_CONFIG, ...(config ? { ...config, policyEngine: undefined } : {}) };
174
+ this.policy = policy ?? {
175
+ defaultAction: 'deny',
176
+ trustThresholds: {
177
+ autoApproveLevel: this.config.autoApproveLevel,
178
+ requireRefinementLevel: this.config.requireRefinementLevel,
179
+ autoDenyLevel: this.config.autoDenyLevel,
180
+ },
181
+ decisionExpirationMs: this.config.decisionExpirationMs,
182
+ refinementDeadlineMs: this.config.refinementDeadlineMs,
183
+ maxRefinementAttempts: this.config.maxRefinementAttempts,
184
+ };
185
+ }
186
+ // ===========================================================================
187
+ // IEnforcementService implementation
188
+ // ===========================================================================
189
+ async decide(context) {
190
+ const t0 = performance.now();
191
+ const { intent, evaluation, tenantId } = context;
192
+ const correlationId = context.correlationId ?? crypto.randomUUID();
193
+ const now = new Date().toISOString();
194
+ // Resolve trust: prefer live engine, fall back to context values
195
+ let trustScore = context.trustScore;
196
+ let trustLevel = context.trustLevel;
197
+ if (this.trustEngine) {
198
+ const record = await this.trustEngine.getScore(intent.entityId);
199
+ if (record) {
200
+ trustScore = record.score;
201
+ trustLevel = record.level;
202
+ }
203
+ }
204
+ // Determine risk level from intent metadata
205
+ const riskLevel = computeRiskLevel(context);
206
+ // Evaluate security policies if engine is available
207
+ if (this.policyEngine) {
208
+ const policyInput = {
209
+ intent,
210
+ trustScore: trustScore ?? 0,
211
+ trustLevel: trustLevel ?? 0,
212
+ context: { riskLevel, tenantId, correlationId },
213
+ };
214
+ const violations = this.policyEngine.evaluate(policyInput);
215
+ if (violations.length > 0) {
216
+ logger.info({ intentId: intent.id, violationCount: violations.length }, 'Security policy violations detected');
217
+ // Convert violations to RuleResult entries for tier determination
218
+ for (const violation of violations) {
219
+ if (violation.action === 'deny') {
220
+ evaluation.violatedRules.push({
221
+ ruleId: violation.policyId,
222
+ ruleName: violation.policyName,
223
+ matched: true,
224
+ action: 'deny',
225
+ reason: violation.reason,
226
+ details: { source: 'security-policy-engine' },
227
+ durationMs: 0,
228
+ });
229
+ }
230
+ else if (violation.action === 'escalate') {
231
+ evaluation.violatedRules.push({
232
+ ruleId: violation.policyId,
233
+ ruleName: violation.policyName,
234
+ matched: true,
235
+ action: 'escalate',
236
+ reason: violation.reason,
237
+ details: { source: 'security-policy-engine' },
238
+ durationMs: 0,
239
+ });
240
+ }
241
+ }
242
+ // If any deny violations, mark evaluation as failed
243
+ if (violations.some((v) => v.action === 'deny')) {
244
+ evaluation.passed = false;
245
+ }
246
+ }
247
+ }
248
+ // Determine decision tier
249
+ const tier = this.determineTier(evaluation, trustLevel, riskLevel);
250
+ const latencyMs = Math.round(performance.now() - t0);
251
+ // Build the decision
252
+ const decision = {
253
+ id: crypto.randomUUID(),
254
+ tenantId,
255
+ intentId: intent.id,
256
+ agentId: intent.entityId,
257
+ correlationId,
258
+ tier,
259
+ permitted: tier === 'GREEN',
260
+ trustBand: `T${trustLevel}_${this.getTrustBandName(trustLevel)}`,
261
+ trustScore,
262
+ reasoning: this.buildReasoning(tier, evaluation, trustLevel, riskLevel),
263
+ refinementAttempt: 0,
264
+ decidedAt: now,
265
+ expiresAt: new Date(Date.now() + this.config.decisionExpirationMs).toISOString(),
266
+ latencyMs,
267
+ };
268
+ // Tier-specific enrichment
269
+ if (tier === 'GREEN') {
270
+ decision.constraints = buildConstraints(riskLevel, trustLevel, this.config, this.config.defaultConstraints);
271
+ }
272
+ if (tier === 'YELLOW') {
273
+ decision.refinementDeadline = new Date(Date.now() + this.config.refinementDeadlineMs).toISOString();
274
+ decision.maxRefinementAttempts = this.config.maxRefinementAttempts;
275
+ decision.refinementOptions = buildRefinementOptions(riskLevel, trustLevel);
276
+ }
277
+ if (tier === 'RED') {
278
+ const violatedPolicies = evaluation.violatedRules
279
+ .filter((r) => r.action === 'deny' || r.action === 'terminate')
280
+ .map((r) => ({
281
+ policyId: r.ruleId,
282
+ policyName: r.ruleName,
283
+ severity: r.action === 'terminate' ? 'critical' : 'error',
284
+ }));
285
+ decision.denialReason = violatedPolicies.length > 0
286
+ ? `Policy violations: ${violatedPolicies.map((p) => p.policyName).join(', ')}`
287
+ : `Trust level T${trustLevel} below minimum threshold`;
288
+ decision.hardDenial = evaluation.violatedRules.some((r) => r.action === 'terminate');
289
+ decision.violatedPolicies = violatedPolicies.length > 0 ? violatedPolicies : undefined;
290
+ }
291
+ // Store
292
+ this.decisions.set(decision.id, decision);
293
+ // Create workflow
294
+ const workflow = {
295
+ id: crypto.randomUUID(),
296
+ tenantId,
297
+ intentId: intent.id,
298
+ agentId: intent.entityId,
299
+ correlationId,
300
+ state: this.tierToState(tier),
301
+ currentDecisionId: decision.id,
302
+ stateHistory: [
303
+ {
304
+ from: 'SUBMITTED',
305
+ to: this.tierToState(tier),
306
+ reason: `Decision: ${tier} (trust=T${trustLevel}, risk=${riskLevel})`,
307
+ timestamp: now,
308
+ },
309
+ ],
310
+ createdAt: now,
311
+ updatedAt: now,
312
+ expiresAt: decision.expiresAt,
313
+ };
314
+ this.workflows.set(intent.id, workflow);
315
+ logger.info({
316
+ decisionId: decision.id,
317
+ intentId: intent.id,
318
+ tier,
319
+ trustLevel,
320
+ trustScore,
321
+ riskLevel,
322
+ latencyMs,
323
+ }, 'Enforcement decision made');
324
+ return {
325
+ decision,
326
+ workflow,
327
+ tier,
328
+ refinementOptions: decision.refinementOptions,
329
+ };
330
+ }
331
+ async refine(request, tenantId) {
332
+ const original = this.decisions.get(request.decisionId);
333
+ if (!original || original.tenantId !== tenantId)
334
+ return null;
335
+ if (original.tier !== 'YELLOW')
336
+ return null;
337
+ // Check refinement deadline
338
+ if (original.refinementDeadline) {
339
+ const deadline = new Date(original.refinementDeadline).getTime();
340
+ if (Date.now() > deadline) {
341
+ logger.warn({ decisionId: request.decisionId }, 'Refinement deadline exceeded');
342
+ return null;
343
+ }
344
+ }
345
+ // Check attempt limit
346
+ const maxAttempts = original.maxRefinementAttempts ?? this.config.maxRefinementAttempts;
347
+ if (original.refinementAttempt >= maxAttempts) {
348
+ logger.warn({ decisionId: request.decisionId, attempts: original.refinementAttempt }, 'Max refinement attempts reached');
349
+ return null;
350
+ }
351
+ // Validate selected refinements exist
352
+ const validRefinements = original.refinementOptions ?? [];
353
+ const selectedOptions = request.selectedRefinements
354
+ .map((id) => validRefinements.find((opt) => opt.id === id))
355
+ .filter((opt) => opt !== undefined);
356
+ if (selectedOptions.length === 0) {
357
+ logger.warn({ decisionId: request.decisionId }, 'No valid refinement options selected');
358
+ return null;
359
+ }
360
+ const now = new Date().toISOString();
361
+ // Compute resulting constraints from refinements
362
+ const mergedConstraints = {
363
+ allowedTools: ['*'],
364
+ dataScopes: ['*'],
365
+ rateLimits: [],
366
+ requiredApprovals: [],
367
+ reversibilityRequired: true, // Refinement always requires reversibility
368
+ maxRetries: 1,
369
+ maxExecutionTimeMs: 300_000,
370
+ };
371
+ // Apply constraint overrides from selected options
372
+ for (const opt of selectedOptions) {
373
+ if (opt.resultingConstraints) {
374
+ Object.assign(mergedConstraints, opt.resultingConstraints);
375
+ }
376
+ if (opt.action === 'REQUEST_APPROVAL') {
377
+ mergedConstraints.requiredApprovals.push({
378
+ type: 'human_review',
379
+ approver: 'admin',
380
+ timeoutMs: this.config.refinementDeadlineMs,
381
+ reason: 'Refinement requested human approval',
382
+ });
383
+ }
384
+ }
385
+ // Create refined decision
386
+ const refined = {
387
+ ...original,
388
+ id: crypto.randomUUID(),
389
+ tier: 'GREEN',
390
+ permitted: true,
391
+ refinementAttempt: original.refinementAttempt + 1,
392
+ reasoning: [
393
+ `Refined from YELLOW to GREEN via: ${selectedOptions.map((o) => o.action).join(', ')}`,
394
+ 'Additional constraints applied',
395
+ ],
396
+ constraints: mergedConstraints,
397
+ decidedAt: now,
398
+ expiresAt: new Date(Date.now() + this.config.decisionExpirationMs).toISOString(),
399
+ latencyMs: 0,
400
+ };
401
+ this.decisions.set(refined.id, refined);
402
+ // Update workflow
403
+ const workflow = this.workflows.get(original.intentId);
404
+ if (workflow) {
405
+ const previousState = workflow.state;
406
+ workflow.state = 'APPROVED';
407
+ workflow.currentDecisionId = refined.id;
408
+ workflow.updatedAt = now;
409
+ workflow.stateHistory.push({
410
+ from: previousState,
411
+ to: 'APPROVED',
412
+ reason: `Refined via: ${selectedOptions.map((o) => o.action).join(', ')}`,
413
+ timestamp: now,
414
+ });
415
+ }
416
+ logger.info({
417
+ originalDecisionId: request.decisionId,
418
+ refinedDecisionId: refined.id,
419
+ attempt: refined.refinementAttempt,
420
+ actions: selectedOptions.map((o) => o.action),
421
+ }, 'Decision refined to GREEN');
422
+ return {
423
+ decision: refined,
424
+ workflow: workflow,
425
+ tier: 'GREEN',
426
+ };
427
+ }
428
+ async getDecision(id, tenantId) {
429
+ const decision = this.decisions.get(id);
430
+ if (!decision || decision.tenantId !== tenantId)
431
+ return null;
432
+ // Check expiration
433
+ if (new Date(decision.expiresAt).getTime() < Date.now()) {
434
+ return null;
435
+ }
436
+ return decision;
437
+ }
438
+ async getWorkflow(intentId, tenantId) {
439
+ const workflow = this.workflows.get(intentId);
440
+ if (!workflow || workflow.tenantId !== tenantId)
441
+ return null;
442
+ return workflow;
443
+ }
444
+ setPolicy(policy) {
445
+ this.policy = { ...this.policy, ...policy };
446
+ // Sync threshold config from policy
447
+ if (policy.trustThresholds) {
448
+ this.config.autoApproveLevel = policy.trustThresholds.autoApproveLevel;
449
+ this.config.requireRefinementLevel = policy.trustThresholds.requireRefinementLevel;
450
+ this.config.autoDenyLevel = policy.trustThresholds.autoDenyLevel;
451
+ }
452
+ }
453
+ /**
454
+ * Refresh policy configuration at runtime (hot-reload).
455
+ * Accepts partial updates — only specified fields are changed.
456
+ * Existing in-flight decisions are not affected.
457
+ */
458
+ refreshPolicy(updates) {
459
+ const previousConfig = { ...this.config };
460
+ // Extract policyEngine separately — it is not part of the config object
461
+ if (updates.policyEngine !== undefined) {
462
+ this.setPolicyEngine(updates.policyEngine ?? null);
463
+ }
464
+ const { policyEngine: _pe, ...restUpdates } = updates;
465
+ this.config = { ...this.config, ...restUpdates };
466
+ // Sync policy thresholds if updated
467
+ if (updates.autoApproveLevel !== undefined || updates.requireRefinementLevel !== undefined || updates.autoDenyLevel !== undefined) {
468
+ this.policy.trustThresholds = {
469
+ autoApproveLevel: this.config.autoApproveLevel,
470
+ requireRefinementLevel: this.config.requireRefinementLevel,
471
+ autoDenyLevel: this.config.autoDenyLevel,
472
+ };
473
+ }
474
+ logger.info({ previous: previousConfig, updated: this.config }, 'Enforcement policy refreshed at runtime');
475
+ }
476
+ /**
477
+ * Get current policy configuration (for inspection/debugging).
478
+ */
479
+ getPolicy() {
480
+ return { config: { ...this.config }, policy: { ...this.policy } };
481
+ }
482
+ // ===========================================================================
483
+ // Public helpers
484
+ // ===========================================================================
485
+ /**
486
+ * Set or replace the security policy engine.
487
+ * Can be called at runtime to add/swap policy evaluation.
488
+ */
489
+ setPolicyEngine(engine) {
490
+ this.policyEngine = engine;
491
+ logger.info({ hasEngine: engine !== null }, 'Security policy engine updated');
492
+ }
493
+ /**
494
+ * Get count of active decisions.
495
+ */
496
+ decisionCount() {
497
+ return this.decisions.size;
498
+ }
499
+ /**
500
+ * Get count of active workflows.
501
+ */
502
+ workflowCount() {
503
+ return this.workflows.size;
504
+ }
505
+ /**
506
+ * Clear all state (for testing).
507
+ */
508
+ clear() {
509
+ this.decisions.clear();
510
+ this.workflows.clear();
511
+ }
512
+ // ===========================================================================
513
+ // Private helpers
514
+ // ===========================================================================
515
+ determineTier(evaluation, trustLevel, riskLevel) {
516
+ // Hard denials from rule violations
517
+ if (evaluation.violatedRules.some((r) => r.action === 'deny' || r.action === 'terminate')) {
518
+ return 'RED';
519
+ }
520
+ // Trust below auto-deny threshold
521
+ if (trustLevel < this.config.autoDenyLevel) {
522
+ return 'RED';
523
+ }
524
+ // Critical risk always requires at least YELLOW unless T6+
525
+ if (riskLevel === 'critical' && trustLevel < 6) {
526
+ return trustLevel < this.config.requireRefinementLevel ? 'RED' : 'YELLOW';
527
+ }
528
+ // High risk requires higher trust for auto-approve
529
+ if (riskLevel === 'high') {
530
+ const elevatedApproveLevel = Math.min(7, this.config.autoApproveLevel + 1);
531
+ if (trustLevel >= elevatedApproveLevel && evaluation.passed)
532
+ return 'GREEN';
533
+ if (trustLevel < this.config.requireRefinementLevel)
534
+ return 'RED';
535
+ return 'YELLOW';
536
+ }
537
+ // Standard tier determination
538
+ if (trustLevel >= this.config.autoApproveLevel && evaluation.passed)
539
+ return 'GREEN';
540
+ if (trustLevel < this.config.requireRefinementLevel)
541
+ return 'YELLOW';
542
+ return 'YELLOW';
543
+ }
544
+ buildReasoning(tier, evaluation, trustLevel, riskLevel) {
545
+ const reasons = [];
546
+ const bandName = this.getTrustBandName(trustLevel);
547
+ if (tier === 'GREEN') {
548
+ reasons.push(`Trust T${trustLevel} (${bandName}) meets auto-approve threshold`);
549
+ reasons.push(`Risk level: ${riskLevel}`);
550
+ if (evaluation.passed)
551
+ reasons.push('All policy checks passed');
552
+ }
553
+ else if (tier === 'YELLOW') {
554
+ reasons.push(`Trust T${trustLevel} (${bandName}) requires refinement`);
555
+ reasons.push(`Risk level: ${riskLevel}`);
556
+ reasons.push('Refinement options available — select one or more to proceed');
557
+ }
558
+ else {
559
+ if (evaluation.violatedRules.length > 0) {
560
+ reasons.push('Policy violations detected:');
561
+ for (const rule of evaluation.violatedRules.slice(0, 5)) {
562
+ reasons.push(` - ${rule.reason}`);
563
+ }
564
+ }
565
+ else {
566
+ reasons.push(`Trust T${trustLevel} (${bandName}) below minimum threshold`);
567
+ }
568
+ reasons.push(`Risk level: ${riskLevel}`);
569
+ }
570
+ return reasons;
571
+ }
572
+ tierToState(tier) {
573
+ switch (tier) {
574
+ case 'GREEN': return 'APPROVED';
575
+ case 'YELLOW': return 'PENDING_REFINEMENT';
576
+ case 'RED': return 'DENIED';
577
+ }
578
+ }
579
+ getTrustBandName(level) {
580
+ return TRUST_LEVEL_NAMES[level] ?? 'Unknown';
581
+ }
582
+ }
583
+ //# sourceMappingURL=trust-aware-enforcement-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-aware-enforcement-service.js","sourceRoot":"","sources":["../../src/enforce/trust-aware-enforcement-service.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export { POLYGON_NETWORKS, type NetworkName, type ChainAnchorConfig, type ProofT
17
17
  export * from './provenance/index.js';
18
18
  export * from './trust-engine/index.js';
19
19
  export * from './layers/index.js';
20
+ export * from './layers/implementations/index.js';
20
21
  export * from './arbitration/index.js';
21
22
  export * from './containment/index.js';
22
23
  export * from './contracts/index.js';
@@ -26,6 +27,7 @@ export { FluidWorkflowEngine, createFluidWorkflowEngine, } from './governance/fl
26
27
  export type { StateTransition, FluidWorkflowConfig, } from './governance/fluid-workflow.js';
27
28
  export * from './persistence/index.js';
28
29
  export * from './langchain/index.js';
30
+ export * from './crewai/index.js';
29
31
  export * as phase6 from './phase6/index.js';
30
32
  export { createPhase6TrustEngine, type Phase6TrustEngine, type Phase6Config, PHASE6_VERSION, } from './phase6/index.js';
31
33
  export * from './sandbox-training/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EACL,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,IAAI,EACJ,aAAa,EACb,aAAa,IAAI,kBAAkB,EACnC,UAAU,EACV,iBAAiB,EACjB,gBAAgB,IAAI,qBAAqB,GAC1C,MAAM,kBAAkB,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,YAAY,EAEjB,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAElB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,sBAAsB,CAAC;AAIrC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,eAAe,EACf,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AAGxC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,sBAAsB,CAAC;AAGrC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,cAAc,6BAA6B,CAAC;AAG5C,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EACL,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,IAAI,EACJ,aAAa,EACb,aAAa,IAAI,kBAAkB,EACnC,UAAU,EACV,iBAAiB,EACjB,gBAAgB,IAAI,qBAAqB,GAC1C,MAAM,kBAAkB,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,YAAY,EAEjB,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAElB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mCAAmC,CAAC;AAGlD,cAAc,wBAAwB,CAAC;AAGvC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,sBAAsB,CAAC;AAIrC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,eAAe,EACf,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AAGxC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,mBAAmB,CAAC;AAGlC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,cAAc,6BAA6B,CAAC;AAG5C,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -30,6 +30,8 @@ export * from './provenance/index.js';
30
30
  export * from './trust-engine/index.js';
31
31
  // Typed Security Layers
32
32
  export * from './layers/index.js';
33
+ // Concrete Layer Implementations (L0-L5: Input Validation Tier)
34
+ export * from './layers/implementations/index.js';
33
35
  // Multi-Agent Trust Arbitration
34
36
  export * from './arbitration/index.js';
35
37
  // Progressive Containment
@@ -44,6 +46,8 @@ export { FluidWorkflowEngine, createFluidWorkflowEngine, } from './governance/fl
44
46
  export * from './persistence/index.js';
45
47
  // LangChain integration
46
48
  export * from './langchain/index.js';
49
+ // CrewAI integration
50
+ export * from './crewai/index.js';
47
51
  // Phase 6: Trust Engine Hardening
48
52
  export * as phase6 from './phase6/index.js';
49
53
  export { createPhase6TrustEngine, PHASE6_VERSION, } from './phase6/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iCAAiC;AACjC,cAAc,mBAAmB,CAAC;AAElC,8EAA8E;AAC9E,OAAO,EACL,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAU3B,iBAAiB;AACjB,cAAc,mBAAmB,CAAC;AAElC,sBAAsB;AACtB,cAAc,oBAAoB,CAAC;AAEnC,8BAA8B;AAC9B,cAAc,sBAAsB,CAAC;AAErC,oBAAoB;AACpB,cAAc,kBAAkB,CAAC;AAEjC,mHAAmH;AACnH,OAAO,EACL,gBAAgB;AAKhB,4DAA4D;AAC5D,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAkB;AAClB,2DAA2D;AAC3D,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,4BAA4B;AAC5B,cAAc,uBAAuB,CAAC;AAEtC,eAAe;AACf,cAAc,yBAAyB,CAAC;AAExC,wBAAwB;AACxB,cAAc,mBAAmB,CAAC;AAElC,gCAAgC;AAChC,cAAc,wBAAwB,CAAC;AAEvC,0BAA0B;AAC1B,cAAc,wBAAwB,CAAC;AAEvC,oCAAoC;AACpC,cAAc,sBAAsB,CAAC;AAErC,qFAAqF;AACrF,uHAAuH;AACvH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAiB/B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAMxC,oBAAoB;AACpB,cAAc,wBAAwB,CAAC;AAEvC,wBAAwB;AACxB,cAAc,sBAAsB,CAAC;AAErC,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,uBAAuB,EAGvB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,yCAAyC;AACzC,cAAc,6BAA6B,CAAC;AAE5C,UAAU;AACV,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,8BAA8B;AAC9B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iCAAiC;AACjC,cAAc,mBAAmB,CAAC;AAElC,8EAA8E;AAC9E,OAAO,EACL,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAU3B,iBAAiB;AACjB,cAAc,mBAAmB,CAAC;AAElC,sBAAsB;AACtB,cAAc,oBAAoB,CAAC;AAEnC,8BAA8B;AAC9B,cAAc,sBAAsB,CAAC;AAErC,oBAAoB;AACpB,cAAc,kBAAkB,CAAC;AAEjC,mHAAmH;AACnH,OAAO,EACL,gBAAgB;AAKhB,4DAA4D;AAC5D,MAAM,EACN,eAAe,EACf,iBAAiB,EACjB,kBAAkB;AAClB,2DAA2D;AAC3D,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,4BAA4B;AAC5B,cAAc,uBAAuB,CAAC;AAEtC,eAAe;AACf,cAAc,yBAAyB,CAAC;AAExC,wBAAwB;AACxB,cAAc,mBAAmB,CAAC;AAElC,gEAAgE;AAChE,cAAc,mCAAmC,CAAC;AAElD,gCAAgC;AAChC,cAAc,wBAAwB,CAAC;AAEvC,0BAA0B;AAC1B,cAAc,wBAAwB,CAAC;AAEvC,oCAAoC;AACpC,cAAc,sBAAsB,CAAC;AAErC,qFAAqF;AACrF,uHAAuH;AACvH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAiB/B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAMxC,oBAAoB;AACpB,cAAc,wBAAwB,CAAC;AAEvC,wBAAwB;AACxB,cAAc,sBAAsB,CAAC;AAErC,qBAAqB;AACrB,cAAc,mBAAmB,CAAC;AAElC,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,uBAAuB,EAGvB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,yCAAyC;AACzC,cAAc,6BAA6B,CAAC;AAE5C,UAAU;AACV,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,8BAA8B;AAC9B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}