@vorionsys/atsf-core 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -3
- package/README.md +77 -11
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/server.d.ts +5 -2
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +186 -149
- package/dist/api/server.js.map +1 -1
- package/dist/arbitration/index.d.ts +4 -4
- package/dist/arbitration/index.d.ts.map +1 -1
- package/dist/arbitration/index.js +46 -41
- package/dist/arbitration/index.js.map +1 -1
- package/dist/arbitration/types.d.ts +10 -10
- package/dist/arbitration/types.d.ts.map +1 -1
- package/dist/basis/evaluator.d.ts +1 -1
- package/dist/basis/evaluator.d.ts.map +1 -1
- package/dist/basis/evaluator.js +56 -54
- package/dist/basis/evaluator.js.map +1 -1
- package/dist/basis/index.d.ts +3 -3
- package/dist/basis/index.js +3 -3
- package/dist/basis/parser.d.ts +16 -16
- package/dist/basis/parser.d.ts.map +1 -1
- package/dist/basis/parser.js +32 -25
- package/dist/basis/parser.js.map +1 -1
- package/dist/basis/types.d.ts +2 -2
- package/dist/chain/index.d.ts.map +1 -1
- package/dist/chain/index.js +16 -16
- package/dist/chain/index.js.map +1 -1
- package/dist/cognigate/index.d.ts +1 -1
- package/dist/cognigate/index.d.ts.map +1 -1
- package/dist/cognigate/index.js +44 -33
- package/dist/cognigate/index.js.map +1 -1
- package/dist/common/adapters.d.ts +18 -11
- package/dist/common/adapters.d.ts.map +1 -1
- package/dist/common/adapters.js +100 -79
- package/dist/common/adapters.js.map +1 -1
- package/dist/common/config.d.ts +67 -67
- package/dist/common/config.js +49 -49
- package/dist/common/config.js.map +1 -1
- package/dist/common/index.d.ts +4 -4
- package/dist/common/index.js +4 -4
- package/dist/common/logger.d.ts +1 -1
- package/dist/common/logger.js +8 -8
- package/dist/common/types.d.ts +8 -8
- package/dist/common/types.js +5 -5
- package/dist/containment/index.d.ts +3 -3
- package/dist/containment/index.d.ts.map +1 -1
- package/dist/containment/index.js +119 -105
- package/dist/containment/index.js.map +1 -1
- package/dist/containment/types.d.ts +11 -11
- package/dist/containment/types.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +9 -9
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +59 -54
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/types.d.ts +12 -12
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/crewai/callback.d.ts +91 -0
- package/dist/crewai/callback.d.ts.map +1 -0
- package/dist/crewai/callback.js +271 -0
- package/dist/crewai/callback.js.map +1 -0
- package/dist/crewai/executor.d.ts +135 -0
- package/dist/crewai/executor.d.ts.map +1 -0
- package/dist/crewai/executor.js +381 -0
- package/dist/crewai/executor.js.map +1 -0
- package/dist/crewai/index.d.ts +12 -0
- package/dist/crewai/index.d.ts.map +1 -0
- package/dist/crewai/index.js +12 -0
- package/dist/crewai/index.js.map +1 -0
- package/dist/crewai/tools.d.ts +21 -0
- package/dist/crewai/tools.d.ts.map +1 -0
- package/dist/crewai/tools.js +164 -0
- package/dist/crewai/tools.js.map +1 -0
- package/dist/crewai/types.d.ts +139 -0
- package/dist/crewai/types.d.ts.map +1 -0
- package/dist/crewai/types.js +9 -0
- package/dist/crewai/types.js.map +1 -0
- package/dist/enforce/index.d.ts +48 -222
- package/dist/enforce/index.d.ts.map +1 -1
- package/dist/enforce/index.js +144 -47
- package/dist/enforce/index.js.map +1 -1
- package/dist/enforce/trust-aware-enforcement-service.d.ts +121 -0
- package/dist/enforce/trust-aware-enforcement-service.d.ts.map +1 -0
- package/dist/enforce/trust-aware-enforcement-service.js +601 -0
- package/dist/enforce/trust-aware-enforcement-service.js.map +1 -0
- package/dist/enforce/types.d.ts +234 -0
- package/dist/enforce/types.d.ts.map +1 -0
- package/dist/enforce/types.js +10 -0
- package/dist/enforce/types.js.map +1 -0
- package/dist/governance/fluid-workflow.d.ts +8 -8
- package/dist/governance/fluid-workflow.d.ts.map +1 -1
- package/dist/governance/fluid-workflow.js +114 -86
- package/dist/governance/fluid-workflow.js.map +1 -1
- package/dist/governance/index.d.ts +7 -7
- package/dist/governance/index.d.ts.map +1 -1
- package/dist/governance/index.js +81 -74
- package/dist/governance/index.js.map +1 -1
- package/dist/governance/proof-bridge.d.ts +6 -6
- package/dist/governance/proof-bridge.d.ts.map +1 -1
- package/dist/governance/proof-bridge.js +5 -5
- package/dist/governance/proof-bridge.js.map +1 -1
- package/dist/governance/types.d.ts +16 -9
- package/dist/governance/types.d.ts.map +1 -1
- package/dist/governance/types.js.map +1 -1
- package/dist/index.d.ts +29 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -23
- package/dist/index.js.map +1 -1
- package/dist/intent/index.d.ts +21 -56
- package/dist/intent/index.d.ts.map +1 -1
- package/dist/intent/index.js +58 -24
- package/dist/intent/index.js.map +1 -1
- package/dist/intent/persistent-intent-service.d.ts +68 -0
- package/dist/intent/persistent-intent-service.d.ts.map +1 -0
- package/dist/intent/persistent-intent-service.js +277 -0
- package/dist/intent/persistent-intent-service.js.map +1 -0
- package/dist/intent/types.d.ts +69 -0
- package/dist/intent/types.d.ts.map +1 -0
- package/dist/intent/types.js +10 -0
- package/dist/intent/types.js.map +1 -0
- package/dist/intent-gateway/index.d.ts +522 -0
- package/dist/intent-gateway/index.d.ts.map +1 -0
- package/dist/intent-gateway/index.js +1499 -0
- package/dist/intent-gateway/index.js.map +1 -0
- package/dist/langchain/callback.d.ts +2 -2
- package/dist/langchain/callback.d.ts.map +1 -1
- package/dist/langchain/callback.js +30 -30
- package/dist/langchain/callback.js.map +1 -1
- package/dist/langchain/executor.d.ts +4 -4
- package/dist/langchain/executor.d.ts.map +1 -1
- package/dist/langchain/executor.js +82 -80
- package/dist/langchain/executor.js.map +1 -1
- package/dist/langchain/index.d.ts +5 -5
- package/dist/langchain/index.js +5 -5
- package/dist/langchain/tools.d.ts +1 -1
- package/dist/langchain/tools.d.ts.map +1 -1
- package/dist/langchain/tools.js +33 -33
- package/dist/langchain/tools.js.map +1 -1
- package/dist/langchain/types.d.ts +3 -3
- package/dist/langchain/types.d.ts.map +1 -1
- package/dist/layers/implementations/L0-request-format.d.ts +37 -0
- package/dist/layers/implementations/L0-request-format.d.ts.map +1 -0
- package/dist/layers/implementations/L0-request-format.js +218 -0
- package/dist/layers/implementations/L0-request-format.js.map +1 -0
- package/dist/layers/implementations/L1-input-size.d.ts +36 -0
- package/dist/layers/implementations/L1-input-size.d.ts.map +1 -0
- package/dist/layers/implementations/L1-input-size.js +160 -0
- package/dist/layers/implementations/L1-input-size.js.map +1 -0
- package/dist/layers/implementations/L2-charset-sanitizer.d.ts +28 -0
- package/dist/layers/implementations/L2-charset-sanitizer.d.ts.map +1 -0
- package/dist/layers/implementations/L2-charset-sanitizer.js +230 -0
- package/dist/layers/implementations/L2-charset-sanitizer.js.map +1 -0
- package/dist/layers/implementations/L3-schema-conformance.d.ts +47 -0
- package/dist/layers/implementations/L3-schema-conformance.d.ts.map +1 -0
- package/dist/layers/implementations/L3-schema-conformance.js +267 -0
- package/dist/layers/implementations/L3-schema-conformance.js.map +1 -0
- package/dist/layers/implementations/L4-injection-detector.d.ts +47 -0
- package/dist/layers/implementations/L4-injection-detector.d.ts.map +1 -0
- package/dist/layers/implementations/L4-injection-detector.js +260 -0
- package/dist/layers/implementations/L4-injection-detector.js.map +1 -0
- package/dist/layers/implementations/L5-rate-limiter.d.ts +51 -0
- package/dist/layers/implementations/L5-rate-limiter.d.ts.map +1 -0
- package/dist/layers/implementations/L5-rate-limiter.js +183 -0
- package/dist/layers/implementations/L5-rate-limiter.js.map +1 -0
- package/dist/layers/implementations/index.d.ts +16 -0
- package/dist/layers/implementations/index.d.ts.map +1 -0
- package/dist/layers/implementations/index.js +16 -0
- package/dist/layers/implementations/index.js.map +1 -0
- package/dist/layers/index.d.ts +3 -3
- package/dist/layers/index.d.ts.map +1 -1
- package/dist/layers/index.js +99 -71
- package/dist/layers/index.js.map +1 -1
- package/dist/layers/types.d.ts +16 -16
- package/dist/layers/types.d.ts.map +1 -1
- package/dist/persistence/file.d.ts +3 -3
- package/dist/persistence/file.d.ts.map +1 -1
- package/dist/persistence/file.js +32 -28
- package/dist/persistence/file.js.map +1 -1
- package/dist/persistence/index.d.ts +7 -7
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +18 -18
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/memory.d.ts +3 -3
- package/dist/persistence/memory.d.ts.map +1 -1
- package/dist/persistence/memory.js +10 -8
- package/dist/persistence/memory.js.map +1 -1
- package/dist/persistence/sqlite.d.ts +3 -3
- package/dist/persistence/sqlite.d.ts.map +1 -1
- package/dist/persistence/sqlite.js +36 -36
- package/dist/persistence/sqlite.js.map +1 -1
- package/dist/persistence/supabase.d.ts +3 -3
- package/dist/persistence/supabase.d.ts.map +1 -1
- package/dist/persistence/supabase.js +41 -43
- package/dist/persistence/supabase.js.map +1 -1
- package/dist/persistence/types.d.ts +5 -5
- package/dist/phase6/ceiling.d.ts +5 -5
- package/dist/phase6/ceiling.d.ts.map +1 -1
- package/dist/phase6/ceiling.js +67 -34
- package/dist/phase6/ceiling.js.map +1 -1
- package/dist/phase6/context.d.ts +3 -3
- package/dist/phase6/context.d.ts.map +1 -1
- package/dist/phase6/context.js +91 -45
- package/dist/phase6/context.js.map +1 -1
- package/dist/phase6/index.d.ts +13 -13
- package/dist/phase6/index.d.ts.map +1 -1
- package/dist/phase6/index.js +16 -16
- package/dist/phase6/index.js.map +1 -1
- package/dist/phase6/presets.d.ts +2 -2
- package/dist/phase6/presets.d.ts.map +1 -1
- package/dist/phase6/presets.js +39 -33
- package/dist/phase6/presets.js.map +1 -1
- package/dist/phase6/provenance.d.ts +4 -4
- package/dist/phase6/provenance.d.ts.map +1 -1
- package/dist/phase6/provenance.js +42 -35
- package/dist/phase6/provenance.js.map +1 -1
- package/dist/phase6/role-gates/index.d.ts +2 -2
- package/dist/phase6/role-gates/index.js +2 -2
- package/dist/phase6/role-gates/kernel.d.ts.map +1 -1
- package/dist/phase6/role-gates/kernel.js +16 -16
- package/dist/phase6/role-gates/kernel.js.map +1 -1
- package/dist/phase6/role-gates/policy.d.ts +2 -2
- package/dist/phase6/role-gates/policy.js +6 -6
- package/dist/phase6/role-gates.d.ts +4 -4
- package/dist/phase6/role-gates.d.ts.map +1 -1
- package/dist/phase6/role-gates.js +80 -58
- package/dist/phase6/role-gates.js.map +1 -1
- package/dist/phase6/types.d.ts +35 -35
- package/dist/phase6/types.d.ts.map +1 -1
- package/dist/phase6/types.js +166 -66
- package/dist/phase6/types.js.map +1 -1
- package/dist/phase6/weight-presets/canonical.d.ts +2 -2
- package/dist/phase6/weight-presets/canonical.d.ts.map +1 -1
- package/dist/phase6/weight-presets/canonical.js +12 -12
- package/dist/phase6/weight-presets/canonical.js.map +1 -1
- package/dist/phase6/weight-presets/deltas.d.ts +2 -2
- package/dist/phase6/weight-presets/deltas.d.ts.map +1 -1
- package/dist/phase6/weight-presets/deltas.js +27 -27
- package/dist/phase6/weight-presets/deltas.js.map +1 -1
- package/dist/phase6/weight-presets/index.d.ts +4 -4
- package/dist/phase6/weight-presets/index.js +4 -4
- package/dist/phase6/weight-presets/merger.d.ts +3 -3
- package/dist/phase6/weight-presets/merger.d.ts.map +1 -1
- package/dist/phase6/weight-presets/merger.js +40 -44
- package/dist/phase6/weight-presets/merger.js.map +1 -1
- package/dist/proof/index.d.ts +3 -3
- package/dist/proof/index.d.ts.map +1 -1
- package/dist/proof/index.js +44 -38
- package/dist/proof/index.js.map +1 -1
- package/dist/proof/merkle.d.ts +3 -3
- package/dist/proof/merkle.d.ts.map +1 -1
- package/dist/proof/merkle.js +26 -25
- package/dist/proof/merkle.js.map +1 -1
- package/dist/proof/zk-proofs.d.ts +6 -6
- package/dist/proof/zk-proofs.d.ts.map +1 -1
- package/dist/proof/zk-proofs.js +42 -43
- package/dist/proof/zk-proofs.js.map +1 -1
- package/dist/provenance/index.d.ts +3 -3
- package/dist/provenance/index.d.ts.map +1 -1
- package/dist/provenance/index.js +19 -17
- package/dist/provenance/index.js.map +1 -1
- package/dist/provenance/types.d.ts +4 -4
- package/dist/provenance/types.d.ts.map +1 -1
- package/dist/sandbox-training/challenges.d.ts +1 -1
- package/dist/sandbox-training/challenges.d.ts.map +1 -1
- package/dist/sandbox-training/challenges.js +228 -228
- package/dist/sandbox-training/challenges.js.map +1 -1
- package/dist/sandbox-training/graduation.d.ts +1 -1
- package/dist/sandbox-training/graduation.d.ts.map +1 -1
- package/dist/sandbox-training/graduation.js +14 -15
- package/dist/sandbox-training/graduation.js.map +1 -1
- package/dist/sandbox-training/index.d.ts +9 -9
- package/dist/sandbox-training/index.d.ts.map +1 -1
- package/dist/sandbox-training/index.js +6 -6
- package/dist/sandbox-training/index.js.map +1 -1
- package/dist/sandbox-training/promotion-service.d.ts +4 -4
- package/dist/sandbox-training/promotion-service.d.ts.map +1 -1
- package/dist/sandbox-training/promotion-service.js +5 -5
- package/dist/sandbox-training/promotion-service.js.map +1 -1
- package/dist/sandbox-training/runner.d.ts +1 -1
- package/dist/sandbox-training/runner.d.ts.map +1 -1
- package/dist/sandbox-training/runner.js +74 -73
- package/dist/sandbox-training/runner.js.map +1 -1
- package/dist/sandbox-training/scorer.d.ts +4 -4
- package/dist/sandbox-training/scorer.js +5 -5
- package/dist/sandbox-training/types.d.ts +4 -4
- package/dist/sandbox-training/types.d.ts.map +1 -1
- package/dist/sandbox-training/types.js +11 -7
- package/dist/sandbox-training/types.js.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts +1 -1
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/audit.js +3 -4
- package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/index.d.ts +2 -2
- package/dist/trust-engine/ceiling-enforcement/index.js +2 -2
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +1 -1
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -1
- package/dist/trust-engine/ceiling-enforcement/kernel.js +1 -1
- package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -1
- package/dist/trust-engine/context-policy/factory.d.ts +1 -1
- package/dist/trust-engine/context-policy/factory.d.ts.map +1 -1
- package/dist/trust-engine/context-policy/factory.js +1 -1
- package/dist/trust-engine/context-policy/factory.js.map +1 -1
- package/dist/trust-engine/context-policy/index.d.ts +2 -2
- package/dist/trust-engine/context-policy/index.js +2 -2
- package/dist/trust-engine/creation-modifiers/index.d.ts +1 -1
- package/dist/trust-engine/creation-modifiers/index.js +1 -1
- package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -1
- package/dist/trust-engine/creation-modifiers/types.js +2 -3
- package/dist/trust-engine/creation-modifiers/types.js.map +1 -1
- package/dist/trust-engine/decay-profiles.d.ts +1 -1
- package/dist/trust-engine/decay-profiles.d.ts.map +1 -1
- package/dist/trust-engine/decay-profiles.js +4 -4
- package/dist/trust-engine/decay-profiles.js.map +1 -1
- package/dist/trust-engine/index.d.ts +111 -45
- package/dist/trust-engine/index.d.ts.map +1 -1
- package/dist/trust-engine/index.js +418 -61
- package/dist/trust-engine/index.js.map +1 -1
- package/dist/trust-engine/phase6-types.d.ts +10 -10
- package/dist/trust-engine/phase6-types.d.ts.map +1 -1
- package/dist/trust-engine/phase6-types.js +25 -23
- package/dist/trust-engine/phase6-types.js.map +1 -1
- package/dist/trust-engine/types.d.ts +77 -0
- package/dist/trust-engine/types.d.ts.map +1 -0
- package/dist/trust-engine/types.js +20 -0
- package/dist/trust-engine/types.js.map +1 -0
- package/package.json +5 -4
package/dist/enforce/index.js
CHANGED
|
@@ -13,13 +13,14 @@
|
|
|
13
13
|
*
|
|
14
14
|
* @packageDocumentation
|
|
15
15
|
*/
|
|
16
|
-
import { createLogger } from
|
|
17
|
-
|
|
16
|
+
import { createLogger } from "../common/logger.js";
|
|
17
|
+
export * from "./types.js";
|
|
18
|
+
const logger = createLogger({ component: "enforce" });
|
|
18
19
|
// =============================================================================
|
|
19
20
|
// MOCK IMPLEMENTATION
|
|
20
21
|
// =============================================================================
|
|
21
22
|
const DEFAULT_POLICY = {
|
|
22
|
-
defaultAction:
|
|
23
|
+
defaultAction: "deny",
|
|
23
24
|
trustThresholds: {
|
|
24
25
|
autoApproveLevel: 4,
|
|
25
26
|
requireRefinementLevel: 2,
|
|
@@ -57,7 +58,7 @@ export class MockEnforcementService {
|
|
|
57
58
|
agentId: intent.entityId,
|
|
58
59
|
correlationId,
|
|
59
60
|
tier,
|
|
60
|
-
permitted: tier ===
|
|
61
|
+
permitted: tier === "GREEN",
|
|
61
62
|
trustBand: `T${trustLevel}_${this.getTrustBandName(trustLevel)}`,
|
|
62
63
|
trustScore,
|
|
63
64
|
reasoning: this.buildReasoning(tier, evaluation, trustLevel),
|
|
@@ -67,10 +68,10 @@ export class MockEnforcementService {
|
|
|
67
68
|
latencyMs: 1,
|
|
68
69
|
};
|
|
69
70
|
// Add constraints for GREEN
|
|
70
|
-
if (tier ===
|
|
71
|
+
if (tier === "GREEN") {
|
|
71
72
|
decision.constraints = {
|
|
72
|
-
allowedTools: [
|
|
73
|
-
dataScopes: [
|
|
73
|
+
allowedTools: ["*"],
|
|
74
|
+
dataScopes: ["*"],
|
|
74
75
|
rateLimits: [],
|
|
75
76
|
requiredApprovals: [],
|
|
76
77
|
reversibilityRequired: false,
|
|
@@ -78,29 +79,29 @@ export class MockEnforcementService {
|
|
|
78
79
|
};
|
|
79
80
|
}
|
|
80
81
|
// Add refinement options for YELLOW
|
|
81
|
-
if (tier ===
|
|
82
|
+
if (tier === "YELLOW") {
|
|
82
83
|
decision.refinementDeadline = new Date(Date.now() + (this.policy.refinementDeadlineMs ?? 900000)).toISOString();
|
|
83
84
|
decision.maxRefinementAttempts = this.policy.maxRefinementAttempts ?? 3;
|
|
84
85
|
decision.refinementOptions = [
|
|
85
86
|
{
|
|
86
87
|
id: crypto.randomUUID(),
|
|
87
|
-
action:
|
|
88
|
-
description:
|
|
88
|
+
action: "ADD_CONSTRAINTS",
|
|
89
|
+
description: "Accept additional constraints",
|
|
89
90
|
successProbability: 0.9,
|
|
90
|
-
effort:
|
|
91
|
+
effort: "low",
|
|
91
92
|
},
|
|
92
93
|
{
|
|
93
94
|
id: crypto.randomUUID(),
|
|
94
|
-
action:
|
|
95
|
-
description:
|
|
95
|
+
action: "REQUEST_APPROVAL",
|
|
96
|
+
description: "Request human approval",
|
|
96
97
|
successProbability: 0.7,
|
|
97
|
-
effort:
|
|
98
|
+
effort: "medium",
|
|
98
99
|
},
|
|
99
100
|
];
|
|
100
101
|
}
|
|
101
102
|
// Add denial details for RED
|
|
102
|
-
if (tier ===
|
|
103
|
-
decision.denialReason =
|
|
103
|
+
if (tier === "RED") {
|
|
104
|
+
decision.denialReason = "policy_violation";
|
|
104
105
|
decision.hardDenial = true;
|
|
105
106
|
}
|
|
106
107
|
this.decisions.set(decision.id, decision);
|
|
@@ -114,32 +115,42 @@ export class MockEnforcementService {
|
|
|
114
115
|
state: this.tierToState(tier),
|
|
115
116
|
currentDecisionId: decision.id,
|
|
116
117
|
stateHistory: [
|
|
117
|
-
{
|
|
118
|
+
{
|
|
119
|
+
from: "SUBMITTED",
|
|
120
|
+
to: this.tierToState(tier),
|
|
121
|
+
reason: `Decision: ${tier}`,
|
|
122
|
+
timestamp: now,
|
|
123
|
+
},
|
|
118
124
|
],
|
|
119
125
|
createdAt: now,
|
|
120
126
|
updatedAt: now,
|
|
121
127
|
expiresAt: decision.expiresAt,
|
|
122
128
|
};
|
|
123
129
|
this.workflows.set(intent.id, workflow);
|
|
124
|
-
logger.info({ decisionId: decision.id, intentId: intent.id, tier },
|
|
125
|
-
return {
|
|
130
|
+
logger.info({ decisionId: decision.id, intentId: intent.id, tier }, "Enforcement decision made (mock)");
|
|
131
|
+
return {
|
|
132
|
+
decision,
|
|
133
|
+
workflow,
|
|
134
|
+
tier,
|
|
135
|
+
refinementOptions: decision.refinementOptions,
|
|
136
|
+
};
|
|
126
137
|
}
|
|
127
138
|
async refine(request, tenantId) {
|
|
128
139
|
const original = this.decisions.get(request.decisionId);
|
|
129
|
-
if (!original || original.tier !==
|
|
140
|
+
if (!original || original.tier !== "YELLOW")
|
|
130
141
|
return null;
|
|
131
142
|
const now = new Date().toISOString();
|
|
132
143
|
// Create refined decision (simple: just upgrade to GREEN)
|
|
133
144
|
const refined = {
|
|
134
145
|
...original,
|
|
135
146
|
id: crypto.randomUUID(),
|
|
136
|
-
tier:
|
|
147
|
+
tier: "GREEN",
|
|
137
148
|
permitted: true,
|
|
138
149
|
refinementAttempt: original.refinementAttempt + 1,
|
|
139
|
-
reasoning: [
|
|
150
|
+
reasoning: ["Refined to GREEN after applying constraints"],
|
|
140
151
|
constraints: {
|
|
141
|
-
allowedTools: [
|
|
142
|
-
dataScopes: [
|
|
152
|
+
allowedTools: ["*"],
|
|
153
|
+
dataScopes: ["*"],
|
|
143
154
|
rateLimits: [],
|
|
144
155
|
requiredApprovals: [],
|
|
145
156
|
reversibilityRequired: true,
|
|
@@ -151,17 +162,17 @@ export class MockEnforcementService {
|
|
|
151
162
|
// Update workflow
|
|
152
163
|
const workflow = this.workflows.get(original.intentId);
|
|
153
164
|
if (workflow) {
|
|
154
|
-
workflow.state =
|
|
165
|
+
workflow.state = "APPROVED";
|
|
155
166
|
workflow.currentDecisionId = refined.id;
|
|
156
167
|
workflow.updatedAt = now;
|
|
157
168
|
workflow.stateHistory.push({
|
|
158
|
-
from:
|
|
159
|
-
to:
|
|
160
|
-
reason:
|
|
169
|
+
from: "PENDING_REFINEMENT",
|
|
170
|
+
to: "APPROVED",
|
|
171
|
+
reason: "Refined to GREEN",
|
|
161
172
|
timestamp: now,
|
|
162
173
|
});
|
|
163
174
|
}
|
|
164
|
-
return { decision: refined, workflow: workflow, tier:
|
|
175
|
+
return { decision: refined, workflow: workflow, tier: "GREEN" };
|
|
165
176
|
}
|
|
166
177
|
async getDecision(id, tenantId) {
|
|
167
178
|
const decision = this.decisions.get(id);
|
|
@@ -176,30 +187,43 @@ export class MockEnforcementService {
|
|
|
176
187
|
}
|
|
177
188
|
determineTier(evaluation, trustLevel) {
|
|
178
189
|
const thresholds = this.policy.trustThresholds;
|
|
179
|
-
if (evaluation.violatedRules.some((r) => r.action ===
|
|
180
|
-
return
|
|
190
|
+
if (evaluation.violatedRules.some((r) => r.action === "deny" || r.action === "terminate")) {
|
|
191
|
+
return "RED";
|
|
181
192
|
}
|
|
182
193
|
if (trustLevel < thresholds.autoDenyLevel)
|
|
183
|
-
return
|
|
194
|
+
return "RED";
|
|
184
195
|
if (trustLevel < thresholds.requireRefinementLevel)
|
|
185
|
-
return
|
|
196
|
+
return "YELLOW";
|
|
186
197
|
if (trustLevel >= thresholds.autoApproveLevel && evaluation.passed)
|
|
187
|
-
return
|
|
188
|
-
return
|
|
198
|
+
return "GREEN";
|
|
199
|
+
return "YELLOW";
|
|
189
200
|
}
|
|
190
201
|
buildReasoning(tier, evaluation, trustLevel) {
|
|
191
|
-
if (tier ===
|
|
192
|
-
return [
|
|
193
|
-
if (tier ===
|
|
194
|
-
return [
|
|
195
|
-
return [
|
|
202
|
+
if (tier === "GREEN")
|
|
203
|
+
return ["All checks passed", `Trust T${trustLevel} meets requirements`];
|
|
204
|
+
if (tier === "YELLOW")
|
|
205
|
+
return ["Refinement options available"];
|
|
206
|
+
return ["Policy violation", "Request cannot proceed"];
|
|
196
207
|
}
|
|
197
208
|
tierToState(tier) {
|
|
198
|
-
return tier ===
|
|
209
|
+
return tier === "GREEN"
|
|
210
|
+
? "APPROVED"
|
|
211
|
+
: tier === "YELLOW"
|
|
212
|
+
? "PENDING_REFINEMENT"
|
|
213
|
+
: "DENIED";
|
|
199
214
|
}
|
|
200
215
|
getTrustBandName(level) {
|
|
201
|
-
const names = [
|
|
202
|
-
|
|
216
|
+
const names = [
|
|
217
|
+
"SANDBOX",
|
|
218
|
+
"OBSERVED",
|
|
219
|
+
"PROVISIONAL",
|
|
220
|
+
"MONITORED",
|
|
221
|
+
"STANDARD",
|
|
222
|
+
"TRUSTED",
|
|
223
|
+
"CERTIFIED",
|
|
224
|
+
"AUTONOMOUS",
|
|
225
|
+
];
|
|
226
|
+
return names[level] ?? "SANDBOX";
|
|
203
227
|
}
|
|
204
228
|
clear() {
|
|
205
229
|
this.decisions.clear();
|
|
@@ -214,11 +238,84 @@ export class MockEnforcementService {
|
|
|
214
238
|
*/
|
|
215
239
|
export class EnforcementService extends MockEnforcementService {
|
|
216
240
|
}
|
|
241
|
+
// =============================================================================
|
|
242
|
+
// SERVICE FACTORY & INJECTION
|
|
243
|
+
// =============================================================================
|
|
244
|
+
let enforcementService = null;
|
|
245
|
+
/**
|
|
246
|
+
* Set the enforcement service implementation to use at runtime.
|
|
247
|
+
* Call this during application bootstrap with a real backend.
|
|
248
|
+
*/
|
|
249
|
+
export function setEnforcementService(service) {
|
|
250
|
+
enforcementService = service;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Get the configured enforcement service.
|
|
254
|
+
* Throws if no real backend has been provided via setEnforcementService().
|
|
255
|
+
*/
|
|
256
|
+
export function getEnforcementService() {
|
|
257
|
+
if (!enforcementService) {
|
|
258
|
+
throw new Error("No enforcement service backend configured. Pass a real EnforcementService implementation or see docs for setup.");
|
|
259
|
+
}
|
|
260
|
+
return enforcementService;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Create a new enforcement service instance
|
|
264
|
+
*
|
|
265
|
+
* Throws if no real backend is provided. For tests, use createMockEnforcementService().
|
|
266
|
+
*/
|
|
267
|
+
export function createEnforcementService(service) {
|
|
268
|
+
if (!service) {
|
|
269
|
+
throw new Error("No enforcement service backend configured. Pass a real EnforcementService implementation or see docs for setup.");
|
|
270
|
+
}
|
|
271
|
+
return service;
|
|
272
|
+
}
|
|
217
273
|
/**
|
|
218
|
-
*
|
|
274
|
+
* Create a mock enforcement service for testing only.
|
|
219
275
|
*/
|
|
220
|
-
export function
|
|
221
|
-
|
|
222
|
-
return new EnforcementService(policy);
|
|
276
|
+
export function createMockEnforcementService(policy) {
|
|
277
|
+
return new MockEnforcementService(policy);
|
|
223
278
|
}
|
|
279
|
+
// =============================================================================
|
|
280
|
+
// PRODUCTION IMPLEMENTATION
|
|
281
|
+
// =============================================================================
|
|
282
|
+
export { TrustAwareEnforcementService } from "./trust-aware-enforcement-service.js";
|
|
283
|
+
// =============================================================================
|
|
284
|
+
// POLICY COMPOSITION
|
|
285
|
+
// =============================================================================
|
|
286
|
+
/**
|
|
287
|
+
* Compose policies with AND -- all must pass for the combined policy to pass.
|
|
288
|
+
*/
|
|
289
|
+
export function allOf(...predicates) {
|
|
290
|
+
return (context) => predicates.every((p) => p(context));
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Compose policies with OR -- at least one must pass.
|
|
294
|
+
*/
|
|
295
|
+
export function anyOf(...predicates) {
|
|
296
|
+
return (context) => predicates.some((p) => p(context));
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Negate a policy predicate.
|
|
300
|
+
*/
|
|
301
|
+
export function not(predicate) {
|
|
302
|
+
return (context) => !predicate(context);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Built-in policy predicates for common checks.
|
|
306
|
+
*/
|
|
307
|
+
export const PolicyPredicates = {
|
|
308
|
+
/** Trust level is at or above the given threshold */
|
|
309
|
+
minTrustLevel: (level) => (ctx) => (ctx.trustLevel ?? 0) >= level,
|
|
310
|
+
/** Action type matches */
|
|
311
|
+
actionType: (type) => (ctx) => ctx.intent.actionType === type,
|
|
312
|
+
/** Data sensitivity is at most the given level */
|
|
313
|
+
maxSensitivity: (level) => {
|
|
314
|
+
const order = { PUBLIC: 0, INTERNAL: 1, CONFIDENTIAL: 2, RESTRICTED: 3 };
|
|
315
|
+
return (ctx) => order[(ctx.intent.dataSensitivity ?? "PUBLIC")] <=
|
|
316
|
+
order[level];
|
|
317
|
+
},
|
|
318
|
+
/** Action is reversible */
|
|
319
|
+
isReversible: () => (ctx) => ctx.intent.reversibility !== "IRREVERSIBLE",
|
|
320
|
+
};
|
|
224
321
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enforce/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enforce/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
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 type { ID, TrustLevel } from "../common/types.js";
|
|
17
|
+
import type { TrustEngine } from "../trust-engine/index.js";
|
|
18
|
+
import type { IEnforcementService, EnforcementContext, EnforcementPolicy, FluidDecision, FluidDecisionResult, DecisionConstraints, RefinementRequest, WorkflowInstance } from "./types.js";
|
|
19
|
+
/**
|
|
20
|
+
* Input for policy evaluation.
|
|
21
|
+
* Minimal interface to avoid hard dependency on @vorionsys/security.
|
|
22
|
+
*/
|
|
23
|
+
export interface PolicyEvaluationInput {
|
|
24
|
+
intent: import("../common/types.js").Intent;
|
|
25
|
+
trustScore: import("../common/types.js").TrustScore;
|
|
26
|
+
trustLevel: import("../common/types.js").TrustLevel;
|
|
27
|
+
context?: Record<string, unknown>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* A violation detected by the security policy engine.
|
|
31
|
+
*/
|
|
32
|
+
export interface PolicyViolation {
|
|
33
|
+
policyId: string;
|
|
34
|
+
policyName: string;
|
|
35
|
+
action: "deny" | "escalate" | "limit" | "monitor";
|
|
36
|
+
reason: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Interface for security policy engine integration.
|
|
40
|
+
* The full SecurityPolicyEngine from @vorionsys/security satisfies this interface.
|
|
41
|
+
* Defined locally to avoid hard dependency in the public SDK package.
|
|
42
|
+
*/
|
|
43
|
+
export interface IPolicyEngine {
|
|
44
|
+
evaluate(context: PolicyEvaluationInput): PolicyViolation[];
|
|
45
|
+
}
|
|
46
|
+
export interface TrustAwareEnforcementConfig {
|
|
47
|
+
/** Trust level at or above which intents are auto-approved (default: T4) */
|
|
48
|
+
autoApproveLevel?: TrustLevel;
|
|
49
|
+
/** Trust level below which refinement is required (default: T2) */
|
|
50
|
+
requireRefinementLevel?: TrustLevel;
|
|
51
|
+
/** Trust level below which intents are auto-denied (default: T0) */
|
|
52
|
+
autoDenyLevel?: TrustLevel;
|
|
53
|
+
/** Decision expiration time in ms (default: 1 hour) */
|
|
54
|
+
decisionExpirationMs?: number;
|
|
55
|
+
/** Refinement deadline in ms (default: 15 minutes) */
|
|
56
|
+
refinementDeadlineMs?: number;
|
|
57
|
+
/** Maximum refinement attempts (default: 3) */
|
|
58
|
+
maxRefinementAttempts?: number;
|
|
59
|
+
/** Default constraints for GREEN decisions */
|
|
60
|
+
defaultConstraints?: Partial<DecisionConstraints>;
|
|
61
|
+
/** Optional security policy engine for additional policy evaluation */
|
|
62
|
+
policyEngine?: IPolicyEngine;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Production enforcement service wired to the Trust Engine.
|
|
66
|
+
*
|
|
67
|
+
* Provides real three-tier fluid governance with:
|
|
68
|
+
* - Trust-based tier determination using live TrustEngine scores
|
|
69
|
+
* - Risk-aware constraint computation from intent metadata
|
|
70
|
+
* - Refinement workflow with configurable attempt limits
|
|
71
|
+
* - Full audit trail via decision/workflow records
|
|
72
|
+
*/
|
|
73
|
+
export declare class TrustAwareEnforcementService implements IEnforcementService {
|
|
74
|
+
private config;
|
|
75
|
+
private policy;
|
|
76
|
+
private decisions;
|
|
77
|
+
private workflows;
|
|
78
|
+
private trustEngine;
|
|
79
|
+
private policyEngine;
|
|
80
|
+
constructor(trustEngine: TrustEngine | null, config?: TrustAwareEnforcementConfig, policy?: EnforcementPolicy);
|
|
81
|
+
decide(context: EnforcementContext): Promise<FluidDecisionResult>;
|
|
82
|
+
refine(request: RefinementRequest, tenantId: ID): Promise<FluidDecisionResult | null>;
|
|
83
|
+
getDecision(id: ID, tenantId: ID): Promise<FluidDecision | null>;
|
|
84
|
+
getWorkflow(intentId: ID, tenantId: ID): Promise<WorkflowInstance | null>;
|
|
85
|
+
setPolicy(policy: EnforcementPolicy): void;
|
|
86
|
+
/**
|
|
87
|
+
* Refresh policy configuration at runtime (hot-reload).
|
|
88
|
+
* Accepts partial updates — only specified fields are changed.
|
|
89
|
+
* Existing in-flight decisions are not affected.
|
|
90
|
+
*/
|
|
91
|
+
refreshPolicy(updates: Partial<TrustAwareEnforcementConfig>): void;
|
|
92
|
+
/**
|
|
93
|
+
* Get current policy configuration (for inspection/debugging).
|
|
94
|
+
*/
|
|
95
|
+
getPolicy(): {
|
|
96
|
+
config: Required<Omit<TrustAwareEnforcementConfig, "policyEngine">>;
|
|
97
|
+
policy: EnforcementPolicy;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Set or replace the security policy engine.
|
|
101
|
+
* Can be called at runtime to add/swap policy evaluation.
|
|
102
|
+
*/
|
|
103
|
+
setPolicyEngine(engine: IPolicyEngine | null): void;
|
|
104
|
+
/**
|
|
105
|
+
* Get count of active decisions.
|
|
106
|
+
*/
|
|
107
|
+
decisionCount(): number;
|
|
108
|
+
/**
|
|
109
|
+
* Get count of active workflows.
|
|
110
|
+
*/
|
|
111
|
+
workflowCount(): number;
|
|
112
|
+
/**
|
|
113
|
+
* Clear all state (for testing).
|
|
114
|
+
*/
|
|
115
|
+
clear(): void;
|
|
116
|
+
private determineTier;
|
|
117
|
+
private buildReasoning;
|
|
118
|
+
private tierToState;
|
|
119
|
+
private getTrustBandName;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=trust-aware-enforcement-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-aware-enforcement-service.d.ts","sourceRoot":"","sources":["../../src/enforce/trust-aware-enforcement-service.ts"],"names":[],"mappings":"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"}
|