@vorionsys/atsf-core 0.1.0 → 0.2.1
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 +12 -12
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +463 -35
- package/dist/api/server.js.map +1 -1
- package/dist/arbitration/index.d.ts.map +1 -1
- package/dist/arbitration/index.js +8 -6
- package/dist/arbitration/index.js.map +1 -1
- package/dist/audit/key-manager.d.ts +118 -0
- package/dist/audit/key-manager.d.ts.map +1 -0
- package/dist/audit/key-manager.js +565 -0
- package/dist/audit/key-manager.js.map +1 -0
- package/dist/basis/evaluator.d.ts +31 -0
- package/dist/basis/evaluator.d.ts.map +1 -1
- package/dist/basis/evaluator.js +205 -10
- package/dist/basis/evaluator.js.map +1 -1
- package/dist/basis/parser.d.ts +210 -210
- package/dist/basis/parser.js.map +1 -1
- package/dist/carbon-aware/carbon-metrics.d.ts +151 -0
- package/dist/carbon-aware/carbon-metrics.d.ts.map +1 -0
- package/dist/carbon-aware/carbon-metrics.js +370 -0
- package/dist/carbon-aware/carbon-metrics.js.map +1 -0
- package/dist/carbon-aware/carbon-router.d.ts +101 -0
- package/dist/carbon-aware/carbon-router.d.ts.map +1 -0
- package/dist/carbon-aware/carbon-router.js +400 -0
- package/dist/carbon-aware/carbon-router.js.map +1 -0
- package/dist/chain/index.d.ts +147 -0
- package/dist/chain/index.d.ts.map +1 -0
- package/dist/chain/index.js +219 -0
- package/dist/chain/index.js.map +1 -0
- package/dist/cognigate/index.d.ts +33 -4
- package/dist/cognigate/index.d.ts.map +1 -1
- package/dist/cognigate/index.js +199 -24
- package/dist/cognigate/index.js.map +1 -1
- package/dist/common/adapters.d.ts +172 -0
- package/dist/common/adapters.d.ts.map +1 -0
- package/dist/common/adapters.js +329 -0
- package/dist/common/adapters.js.map +1 -0
- package/dist/common/config.d.ts +168 -163
- package/dist/common/config.d.ts.map +1 -1
- package/dist/common/config.js +2 -0
- package/dist/common/config.js.map +1 -1
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +1 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/types.d.ts +67 -16
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/types.js +4 -0
- package/dist/common/types.js.map +1 -1
- package/dist/enforce/index.d.ts +226 -16
- package/dist/enforce/index.d.ts.map +1 -1
- package/dist/enforce/index.js +196 -49
- package/dist/enforce/index.js.map +1 -1
- package/dist/governance/fluid-workflow.d.ts +217 -0
- package/dist/governance/fluid-workflow.d.ts.map +1 -0
- package/dist/governance/fluid-workflow.js +491 -0
- package/dist/governance/fluid-workflow.js.map +1 -0
- package/dist/governance/index.d.ts +1 -0
- package/dist/governance/index.d.ts.map +1 -1
- package/dist/governance/index.js +1 -0
- package/dist/governance/index.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/intent/index.d.ts +127 -10
- package/dist/intent/index.d.ts.map +1 -1
- package/dist/intent/index.js +121 -16
- package/dist/intent/index.js.map +1 -1
- package/dist/langchain/executor.d.ts +19 -5
- package/dist/langchain/executor.d.ts.map +1 -1
- package/dist/langchain/executor.js +287 -36
- package/dist/langchain/executor.js.map +1 -1
- package/dist/langchain/index.d.ts +2 -1
- package/dist/langchain/index.d.ts.map +1 -1
- package/dist/langchain/index.js +3 -1
- package/dist/langchain/index.js.map +1 -1
- package/dist/langchain/tools.d.ts.map +1 -1
- package/dist/langchain/tools.js +2 -1
- package/dist/langchain/tools.js.map +1 -1
- package/dist/langchain/types.d.ts +41 -0
- package/dist/langchain/types.d.ts.map +1 -1
- package/dist/layers/index.d.ts +1 -1
- package/dist/layers/index.d.ts.map +1 -1
- package/dist/persistence/file.d.ts +35 -3
- package/dist/persistence/file.d.ts.map +1 -1
- package/dist/persistence/file.js +138 -11
- package/dist/persistence/file.js.map +1 -1
- package/dist/persistence/index.d.ts +11 -1
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +25 -1
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/sqlite.d.ts +135 -0
- package/dist/persistence/sqlite.d.ts.map +1 -0
- package/dist/persistence/sqlite.js +372 -0
- package/dist/persistence/sqlite.js.map +1 -0
- package/dist/persistence/supabase.d.ts +93 -0
- package/dist/persistence/supabase.d.ts.map +1 -0
- package/dist/persistence/supabase.js +219 -0
- package/dist/persistence/supabase.js.map +1 -0
- package/dist/persistence/types.d.ts +5 -1
- package/dist/persistence/types.d.ts.map +1 -1
- package/dist/phase6/ceiling.d.ts +177 -0
- package/dist/phase6/ceiling.d.ts.map +1 -0
- package/dist/phase6/ceiling.js +463 -0
- package/dist/phase6/ceiling.js.map +1 -0
- package/dist/phase6/context.d.ts +207 -0
- package/dist/phase6/context.d.ts.map +1 -0
- package/dist/phase6/context.js +603 -0
- package/dist/phase6/context.js.map +1 -0
- package/dist/phase6/index.d.ts +79 -0
- package/dist/phase6/index.d.ts.map +1 -0
- package/dist/phase6/index.js +152 -0
- package/dist/phase6/index.js.map +1 -0
- package/dist/phase6/presets.d.ts +148 -0
- package/dist/phase6/presets.d.ts.map +1 -0
- package/dist/phase6/presets.js +467 -0
- package/dist/phase6/presets.js.map +1 -0
- package/dist/phase6/provenance.d.ts +148 -0
- package/dist/phase6/provenance.d.ts.map +1 -0
- package/dist/phase6/provenance.js +545 -0
- package/dist/phase6/provenance.js.map +1 -0
- package/dist/phase6/role-gates/index.d.ts +7 -0
- package/dist/phase6/role-gates/index.d.ts.map +1 -0
- package/dist/phase6/role-gates/index.js +7 -0
- package/dist/phase6/role-gates/index.js.map +1 -0
- package/dist/phase6/role-gates/kernel.d.ts +84 -0
- package/dist/phase6/role-gates/kernel.d.ts.map +1 -0
- package/dist/phase6/role-gates/kernel.js +258 -0
- package/dist/phase6/role-gates/kernel.js.map +1 -0
- package/dist/phase6/role-gates/policy.d.ts +110 -0
- package/dist/phase6/role-gates/policy.d.ts.map +1 -0
- package/dist/phase6/role-gates/policy.js +157 -0
- package/dist/phase6/role-gates/policy.js.map +1 -0
- package/dist/phase6/role-gates.d.ts +164 -0
- package/dist/phase6/role-gates.d.ts.map +1 -0
- package/dist/phase6/role-gates.js +536 -0
- package/dist/phase6/role-gates.js.map +1 -0
- package/dist/phase6/types.d.ts +1827 -0
- package/dist/phase6/types.d.ts.map +1 -0
- package/dist/phase6/types.js +450 -0
- package/dist/phase6/types.js.map +1 -0
- package/dist/phase6/weight-presets/canonical.d.ts +93 -0
- package/dist/phase6/weight-presets/canonical.d.ts.map +1 -0
- package/dist/phase6/weight-presets/canonical.js +122 -0
- package/dist/phase6/weight-presets/canonical.js.map +1 -0
- package/dist/phase6/weight-presets/deltas.d.ts +144 -0
- package/dist/phase6/weight-presets/deltas.d.ts.map +1 -0
- package/dist/phase6/weight-presets/deltas.js +184 -0
- package/dist/phase6/weight-presets/deltas.js.map +1 -0
- package/dist/phase6/weight-presets/index.d.ts +8 -0
- package/dist/phase6/weight-presets/index.d.ts.map +1 -0
- package/dist/phase6/weight-presets/index.js +8 -0
- package/dist/phase6/weight-presets/index.js.map +1 -0
- package/dist/phase6/weight-presets/merger.d.ts +79 -0
- package/dist/phase6/weight-presets/merger.d.ts.map +1 -0
- package/dist/phase6/weight-presets/merger.js +161 -0
- package/dist/phase6/weight-presets/merger.js.map +1 -0
- package/dist/proof/index.d.ts +50 -1
- package/dist/proof/index.d.ts.map +1 -1
- package/dist/proof/index.js +122 -3
- package/dist/proof/index.js.map +1 -1
- package/dist/proof/merkle.d.ts +195 -0
- package/dist/proof/merkle.d.ts.map +1 -0
- package/dist/proof/merkle.js +412 -0
- package/dist/proof/merkle.js.map +1 -0
- package/dist/proof/zk-proofs.d.ts +218 -0
- package/dist/proof/zk-proofs.d.ts.map +1 -0
- package/dist/proof/zk-proofs.js +531 -0
- package/dist/proof/zk-proofs.js.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts +98 -0
- package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/audit.js +160 -0
- package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/index.d.ts +6 -0
- package/dist/trust-engine/ceiling-enforcement/index.d.ts.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/index.js +6 -0
- package/dist/trust-engine/ceiling-enforcement/index.js.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +112 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.js +158 -0
- package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -0
- package/dist/trust-engine/context-policy/enforcement.d.ts +62 -0
- package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -0
- package/dist/trust-engine/context-policy/enforcement.js +104 -0
- package/dist/trust-engine/context-policy/enforcement.js.map +1 -0
- package/dist/trust-engine/context-policy/factory.d.ts +75 -0
- package/dist/trust-engine/context-policy/factory.d.ts.map +1 -0
- package/dist/trust-engine/context-policy/factory.js +130 -0
- package/dist/trust-engine/context-policy/factory.js.map +1 -0
- package/dist/trust-engine/context-policy/index.d.ts +6 -0
- package/dist/trust-engine/context-policy/index.d.ts.map +1 -0
- package/dist/trust-engine/context-policy/index.js +6 -0
- package/dist/trust-engine/context-policy/index.js.map +1 -0
- package/dist/trust-engine/creation-modifiers/index.d.ts +5 -0
- package/dist/trust-engine/creation-modifiers/index.d.ts.map +1 -0
- package/dist/trust-engine/creation-modifiers/index.js +5 -0
- package/dist/trust-engine/creation-modifiers/index.js.map +1 -0
- package/dist/trust-engine/creation-modifiers/types.d.ts +112 -0
- package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -0
- package/dist/trust-engine/creation-modifiers/types.js +166 -0
- package/dist/trust-engine/creation-modifiers/types.js.map +1 -0
- package/dist/trust-engine/decay-profiles.d.ts +159 -0
- package/dist/trust-engine/decay-profiles.d.ts.map +1 -0
- package/dist/trust-engine/decay-profiles.js +210 -0
- package/dist/trust-engine/decay-profiles.js.map +1 -0
- package/dist/trust-engine/index.d.ts +144 -5
- package/dist/trust-engine/index.d.ts.map +1 -1
- package/dist/trust-engine/index.js +320 -15
- package/dist/trust-engine/index.js.map +1 -1
- package/dist/trust-engine/phase6-types.d.ts +123 -0
- package/dist/trust-engine/phase6-types.d.ts.map +1 -0
- package/dist/trust-engine/phase6-types.js +88 -0
- package/dist/trust-engine/phase6-types.js.map +1 -0
- package/package.json +26 -10
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../../src/phase6/role-gates/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,oBAAY,SAAS;IACnB,IAAI,SAAS,CAAE,uCAAuC;IACtD,IAAI,SAAS,CAAE,mCAAmC;IAClD,IAAI,SAAS,CAAE,sCAAsC;IACrD,IAAI,SAAS,CAAE,uCAAuC;IACtD,IAAI,SAAS,CAAE,yCAAyC;IACxD,IAAI,SAAS,CAAE,kCAAkC;IACjD,IAAI,SAAS,CAAE,0CAA0C;IACzD,IAAI,SAAS,CAAE,6CAA6C;IAC5D,IAAI,SAAS;CACd;AAED;;;GAGG;AACH,oBAAY,SAAS;IACnB,EAAE,OAAO,CAAE,gCAAgC;IAC3C,EAAE,OAAO,CAAE,0CAA0C;IACrD,EAAE,OAAO,CAAE,qCAAqC;IAChD,EAAE,OAAO,CAAE,yCAAyC;IACpD,EAAE,OAAO,CAAE,8CAA8C;IACzD,EAAE,OAAO;CACV;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAyE1E,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAK7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,SAAS,CAG5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,SAAS,CAG5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CA4D5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAyB5D;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAEvC,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;gBADf,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACtB,OAAO,CAAC,EAAE,MAAM;CAKnB"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Q3: Role Gates - Kernel Validation Layer
|
|
3
|
+
* Fast-path role + tier combination validation with matrix lookups
|
|
4
|
+
*
|
|
5
|
+
* Architecture:
|
|
6
|
+
* - Fail-fast kernel validation (<0.5ms)
|
|
7
|
+
* - Pre-computed matrix for O(1) lookups
|
|
8
|
+
* - 9 roles (R-L0 to R-L8) × 6 tiers (T0 to T5) = 48 valid combinations
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Agent role enumeration (9 levels)
|
|
12
|
+
* Defines hierarchical responsibility and operational scope
|
|
13
|
+
*/
|
|
14
|
+
export var AgentRole;
|
|
15
|
+
(function (AgentRole) {
|
|
16
|
+
AgentRole["R_L0"] = "R-L0";
|
|
17
|
+
AgentRole["R_L1"] = "R-L1";
|
|
18
|
+
AgentRole["R_L2"] = "R-L2";
|
|
19
|
+
AgentRole["R_L3"] = "R-L3";
|
|
20
|
+
AgentRole["R_L4"] = "R-L4";
|
|
21
|
+
AgentRole["R_L5"] = "R-L5";
|
|
22
|
+
AgentRole["R_L6"] = "R-L6";
|
|
23
|
+
AgentRole["R_L7"] = "R-L7";
|
|
24
|
+
AgentRole["R_L8"] = "R-L8";
|
|
25
|
+
})(AgentRole || (AgentRole = {}));
|
|
26
|
+
/**
|
|
27
|
+
* Trust tier enumeration (6 levels)
|
|
28
|
+
* Defines operational authorization scope and resource access
|
|
29
|
+
*/
|
|
30
|
+
export var TrustTier;
|
|
31
|
+
(function (TrustTier) {
|
|
32
|
+
TrustTier["T0"] = "T0";
|
|
33
|
+
TrustTier["T1"] = "T1";
|
|
34
|
+
TrustTier["T2"] = "T2";
|
|
35
|
+
TrustTier["T3"] = "T3";
|
|
36
|
+
TrustTier["T4"] = "T4";
|
|
37
|
+
TrustTier["T5"] = "T5";
|
|
38
|
+
})(TrustTier || (TrustTier = {}));
|
|
39
|
+
/**
|
|
40
|
+
* Role Gate Matrix: Valid role + tier combinations
|
|
41
|
+
* Rows: Roles (R-L0 to R-L8)
|
|
42
|
+
* Cols: Tiers (T0 to T5)
|
|
43
|
+
* Value: true if combination is valid
|
|
44
|
+
*
|
|
45
|
+
* Matrix structure:
|
|
46
|
+
* - R-L0 can reach: T0, T1
|
|
47
|
+
* - R-L1 can reach: T0, T1, T2
|
|
48
|
+
* - R-L2 can reach: T0, T1, T2, T3
|
|
49
|
+
* - R-L3 can reach: T0, T1, T2, T3, T4
|
|
50
|
+
* - R-L4 can reach: T0, T1, T2, T3, T4
|
|
51
|
+
* - R-L5 can reach: T0, T1, T2, T3, T4
|
|
52
|
+
* - R-L6 can reach: T0, T1, T2, T3, T4, T5
|
|
53
|
+
* - R-L7 can reach: T0, T1, T2, T3, T4, T5
|
|
54
|
+
* - R-L8 can reach: T0, T1, T2, T3, T4, T5
|
|
55
|
+
*/
|
|
56
|
+
export const ROLE_GATE_MATRIX = {
|
|
57
|
+
[AgentRole.R_L0]: {
|
|
58
|
+
[TrustTier.T0]: true,
|
|
59
|
+
[TrustTier.T1]: true,
|
|
60
|
+
[TrustTier.T2]: false,
|
|
61
|
+
[TrustTier.T3]: false,
|
|
62
|
+
[TrustTier.T4]: false,
|
|
63
|
+
[TrustTier.T5]: false,
|
|
64
|
+
},
|
|
65
|
+
[AgentRole.R_L1]: {
|
|
66
|
+
[TrustTier.T0]: true,
|
|
67
|
+
[TrustTier.T1]: true,
|
|
68
|
+
[TrustTier.T2]: true,
|
|
69
|
+
[TrustTier.T3]: false,
|
|
70
|
+
[TrustTier.T4]: false,
|
|
71
|
+
[TrustTier.T5]: false,
|
|
72
|
+
},
|
|
73
|
+
[AgentRole.R_L2]: {
|
|
74
|
+
[TrustTier.T0]: true,
|
|
75
|
+
[TrustTier.T1]: true,
|
|
76
|
+
[TrustTier.T2]: true,
|
|
77
|
+
[TrustTier.T3]: true,
|
|
78
|
+
[TrustTier.T4]: false,
|
|
79
|
+
[TrustTier.T5]: false,
|
|
80
|
+
},
|
|
81
|
+
[AgentRole.R_L3]: {
|
|
82
|
+
[TrustTier.T0]: true,
|
|
83
|
+
[TrustTier.T1]: true,
|
|
84
|
+
[TrustTier.T2]: true,
|
|
85
|
+
[TrustTier.T3]: true,
|
|
86
|
+
[TrustTier.T4]: true,
|
|
87
|
+
[TrustTier.T5]: false,
|
|
88
|
+
},
|
|
89
|
+
[AgentRole.R_L4]: {
|
|
90
|
+
[TrustTier.T0]: true,
|
|
91
|
+
[TrustTier.T1]: true,
|
|
92
|
+
[TrustTier.T2]: true,
|
|
93
|
+
[TrustTier.T3]: true,
|
|
94
|
+
[TrustTier.T4]: true,
|
|
95
|
+
[TrustTier.T5]: false,
|
|
96
|
+
},
|
|
97
|
+
[AgentRole.R_L5]: {
|
|
98
|
+
[TrustTier.T0]: true,
|
|
99
|
+
[TrustTier.T1]: true,
|
|
100
|
+
[TrustTier.T2]: true,
|
|
101
|
+
[TrustTier.T3]: true,
|
|
102
|
+
[TrustTier.T4]: true,
|
|
103
|
+
[TrustTier.T5]: false,
|
|
104
|
+
},
|
|
105
|
+
[AgentRole.R_L6]: {
|
|
106
|
+
[TrustTier.T0]: true,
|
|
107
|
+
[TrustTier.T1]: true,
|
|
108
|
+
[TrustTier.T2]: true,
|
|
109
|
+
[TrustTier.T3]: true,
|
|
110
|
+
[TrustTier.T4]: true,
|
|
111
|
+
[TrustTier.T5]: true,
|
|
112
|
+
},
|
|
113
|
+
[AgentRole.R_L7]: {
|
|
114
|
+
[TrustTier.T0]: true,
|
|
115
|
+
[TrustTier.T1]: true,
|
|
116
|
+
[TrustTier.T2]: true,
|
|
117
|
+
[TrustTier.T3]: true,
|
|
118
|
+
[TrustTier.T4]: true,
|
|
119
|
+
[TrustTier.T5]: true,
|
|
120
|
+
},
|
|
121
|
+
[AgentRole.R_L8]: {
|
|
122
|
+
[TrustTier.T0]: true,
|
|
123
|
+
[TrustTier.T1]: true,
|
|
124
|
+
[TrustTier.T2]: true,
|
|
125
|
+
[TrustTier.T3]: true,
|
|
126
|
+
[TrustTier.T4]: true,
|
|
127
|
+
[TrustTier.T5]: true,
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Validate role + tier combination
|
|
132
|
+
* O(1) matrix lookup, fail-fast validation
|
|
133
|
+
*/
|
|
134
|
+
export function validateRoleAndTier(role, tier) {
|
|
135
|
+
if (!isValidRole(role) || !isValidTier(tier)) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
return ROLE_GATE_MATRIX[role]?.[tier] ?? false;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Check if value is a valid AgentRole
|
|
142
|
+
*/
|
|
143
|
+
export function isValidRole(role) {
|
|
144
|
+
if (typeof role !== 'string')
|
|
145
|
+
return false;
|
|
146
|
+
return Object.values(AgentRole).includes(role);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Check if value is a valid TrustTier
|
|
150
|
+
*/
|
|
151
|
+
export function isValidTier(tier) {
|
|
152
|
+
if (typeof tier !== 'string')
|
|
153
|
+
return false;
|
|
154
|
+
return Object.values(TrustTier).includes(tier);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get maximum tier reachable for a given role
|
|
158
|
+
*/
|
|
159
|
+
export function getMaxTierForRole(role) {
|
|
160
|
+
if (!isValidRole(role)) {
|
|
161
|
+
throw new Error(`Invalid role: ${role}`);
|
|
162
|
+
}
|
|
163
|
+
const roleEntry = ROLE_GATE_MATRIX[role];
|
|
164
|
+
if (!roleEntry) {
|
|
165
|
+
return TrustTier.T0;
|
|
166
|
+
}
|
|
167
|
+
// Debug logging for R-L0
|
|
168
|
+
const isDebug = role === 'R-L0';
|
|
169
|
+
if (isDebug) {
|
|
170
|
+
console.log('getMaxTierForRole debug for R-L0:');
|
|
171
|
+
console.log(' roleEntry:', roleEntry);
|
|
172
|
+
console.log(' TrustTier.T1:', TrustTier.T1);
|
|
173
|
+
console.log(' roleEntry[TrustTier.T1]:', roleEntry[TrustTier.T1]);
|
|
174
|
+
}
|
|
175
|
+
// Check tiers from highest to lowest
|
|
176
|
+
const t5Val = roleEntry[TrustTier.T5];
|
|
177
|
+
if (t5Val === true) {
|
|
178
|
+
if (isDebug)
|
|
179
|
+
console.log(' returning T5');
|
|
180
|
+
return TrustTier.T5;
|
|
181
|
+
}
|
|
182
|
+
const t4Val = roleEntry[TrustTier.T4];
|
|
183
|
+
if (t4Val === true) {
|
|
184
|
+
if (isDebug)
|
|
185
|
+
console.log(' returning T4');
|
|
186
|
+
return TrustTier.T4;
|
|
187
|
+
}
|
|
188
|
+
const t3Val = roleEntry[TrustTier.T3];
|
|
189
|
+
if (t3Val === true) {
|
|
190
|
+
if (isDebug)
|
|
191
|
+
console.log(' returning T3');
|
|
192
|
+
return TrustTier.T3;
|
|
193
|
+
}
|
|
194
|
+
const t2Val = roleEntry[TrustTier.T2];
|
|
195
|
+
if (t2Val === true) {
|
|
196
|
+
if (isDebug)
|
|
197
|
+
console.log(' returning T2');
|
|
198
|
+
return TrustTier.T2;
|
|
199
|
+
}
|
|
200
|
+
const t1Val = roleEntry[TrustTier.T1];
|
|
201
|
+
if (isDebug)
|
|
202
|
+
console.log(' t1Val:', t1Val, 't1Val === true:', t1Val === true);
|
|
203
|
+
if (t1Val === true) {
|
|
204
|
+
if (isDebug)
|
|
205
|
+
console.log(' returning T1');
|
|
206
|
+
return TrustTier.T1;
|
|
207
|
+
}
|
|
208
|
+
const t0Val = roleEntry[TrustTier.T0];
|
|
209
|
+
if (t0Val === true) {
|
|
210
|
+
if (isDebug)
|
|
211
|
+
console.log(' returning T0');
|
|
212
|
+
return TrustTier.T0;
|
|
213
|
+
}
|
|
214
|
+
// Fallback
|
|
215
|
+
if (isDebug)
|
|
216
|
+
console.log(' returning fallback T0');
|
|
217
|
+
return TrustTier.T0;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get minimum role required for a given tier
|
|
221
|
+
*/
|
|
222
|
+
export function getMinRoleForTier(tier) {
|
|
223
|
+
if (!isValidTier(tier)) {
|
|
224
|
+
throw new Error(`Invalid tier: ${tier}`);
|
|
225
|
+
}
|
|
226
|
+
const roleOrder = [
|
|
227
|
+
AgentRole.R_L0,
|
|
228
|
+
AgentRole.R_L1,
|
|
229
|
+
AgentRole.R_L2,
|
|
230
|
+
AgentRole.R_L3,
|
|
231
|
+
AgentRole.R_L4,
|
|
232
|
+
AgentRole.R_L5,
|
|
233
|
+
AgentRole.R_L6,
|
|
234
|
+
AgentRole.R_L7,
|
|
235
|
+
AgentRole.R_L8,
|
|
236
|
+
];
|
|
237
|
+
for (const role of roleOrder) {
|
|
238
|
+
if (ROLE_GATE_MATRIX[role]?.[tier]) {
|
|
239
|
+
return role;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Fallback
|
|
243
|
+
return AgentRole.R_L0;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Custom error for role gate validation failures
|
|
247
|
+
*/
|
|
248
|
+
export class RoleGateValidationError extends Error {
|
|
249
|
+
role;
|
|
250
|
+
tier;
|
|
251
|
+
constructor(role, tier, message) {
|
|
252
|
+
super(message || `Invalid role+tier combination: ${role} + ${tier}`);
|
|
253
|
+
this.role = role;
|
|
254
|
+
this.tier = tier;
|
|
255
|
+
this.name = 'RoleGateValidationError';
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=kernel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../../src/phase6/role-gates/kernel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Q3: Role Gates - BASIS Policy Enforcement Layer
|
|
3
|
+
* Dynamic policy engine with per-agent exceptions, domain filtering, and audit logging
|
|
4
|
+
*
|
|
5
|
+
* Architecture:
|
|
6
|
+
* - Dynamic policy rules (add/remove at runtime)
|
|
7
|
+
* - Per-agent exceptions with expiration
|
|
8
|
+
* - Domain-scoped rule application
|
|
9
|
+
* - Full audit trail of all evaluations
|
|
10
|
+
* - Version tracking on policy changes
|
|
11
|
+
*/
|
|
12
|
+
import { AgentRole, TrustTier } from './kernel.js';
|
|
13
|
+
/**
|
|
14
|
+
* Policy rule definition
|
|
15
|
+
*/
|
|
16
|
+
export interface PolicyRule {
|
|
17
|
+
role: AgentRole;
|
|
18
|
+
tier: TrustTier;
|
|
19
|
+
allowed: boolean;
|
|
20
|
+
reason: string;
|
|
21
|
+
domains?: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Per-agent policy exception
|
|
25
|
+
*/
|
|
26
|
+
export interface PolicyException {
|
|
27
|
+
agentId: string;
|
|
28
|
+
role: AgentRole;
|
|
29
|
+
tier: TrustTier;
|
|
30
|
+
allowed: boolean;
|
|
31
|
+
reason: string;
|
|
32
|
+
approvedBy: string;
|
|
33
|
+
expiresAt?: Date;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Policy decision result
|
|
37
|
+
*/
|
|
38
|
+
export interface PolicyDecision {
|
|
39
|
+
allowed: boolean;
|
|
40
|
+
reason: string;
|
|
41
|
+
source: 'exception' | 'rule' | 'default';
|
|
42
|
+
appliedAt: Date;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Policy audit log entry
|
|
46
|
+
*/
|
|
47
|
+
export interface PolicyAuditEntry {
|
|
48
|
+
timestamp: Date;
|
|
49
|
+
agentId: string;
|
|
50
|
+
role: AgentRole;
|
|
51
|
+
tier: TrustTier;
|
|
52
|
+
domain?: string;
|
|
53
|
+
decision: PolicyDecision;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* BasisPolicyEngine: Dynamic policy enforcement with exceptions and domain filtering
|
|
57
|
+
*/
|
|
58
|
+
export declare class BasisPolicyEngine {
|
|
59
|
+
private rules;
|
|
60
|
+
private exceptions;
|
|
61
|
+
private auditLog;
|
|
62
|
+
private policyVersion;
|
|
63
|
+
private versionCounter;
|
|
64
|
+
/**
|
|
65
|
+
* Add a policy rule
|
|
66
|
+
*/
|
|
67
|
+
addRule(rule: PolicyRule): void;
|
|
68
|
+
/**
|
|
69
|
+
* Remove a policy rule
|
|
70
|
+
*/
|
|
71
|
+
removeRule(role: AgentRole, tier: TrustTier): void;
|
|
72
|
+
/**
|
|
73
|
+
* Add an agent-specific exception
|
|
74
|
+
*/
|
|
75
|
+
addException(exception: PolicyException): void;
|
|
76
|
+
/**
|
|
77
|
+
* Remove an agent-specific exception
|
|
78
|
+
*/
|
|
79
|
+
removeException(agentId: string, role: AgentRole, tier: TrustTier): void;
|
|
80
|
+
/**
|
|
81
|
+
* Evaluate policy for an agent
|
|
82
|
+
* Returns decision based on exceptions -> rules -> default allow
|
|
83
|
+
*/
|
|
84
|
+
evaluatePolicy(agentId: string, role: AgentRole, tier: TrustTier, domain?: string): PolicyDecision;
|
|
85
|
+
/**
|
|
86
|
+
* Get audit log for specific agent
|
|
87
|
+
*/
|
|
88
|
+
getAgentAuditLog(agentId: string): PolicyAuditEntry[];
|
|
89
|
+
/**
|
|
90
|
+
* Get full audit log
|
|
91
|
+
*/
|
|
92
|
+
getAuditLog(): PolicyAuditEntry[];
|
|
93
|
+
/**
|
|
94
|
+
* Get current policy version
|
|
95
|
+
*/
|
|
96
|
+
getPolicyVersion(): string;
|
|
97
|
+
/**
|
|
98
|
+
* Check if exception has expired
|
|
99
|
+
*/
|
|
100
|
+
private isExpired;
|
|
101
|
+
/**
|
|
102
|
+
* Log an audit entry
|
|
103
|
+
*/
|
|
104
|
+
private logAudit;
|
|
105
|
+
/**
|
|
106
|
+
* Increment version for policy tracking
|
|
107
|
+
*/
|
|
108
|
+
private incrementVersion;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../src/phase6/role-gates/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,cAAc,CAAa;IAEnC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM/B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAQlD;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAS9C;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAcxE;;;OAGG;IACH,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,MAAM,CAAC,EAAE,MAAM,GACd,cAAc;IAoDjB;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAIrD;;OAEG;IACH,WAAW,IAAI,gBAAgB,EAAE;IAIjC;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Q3: Role Gates - BASIS Policy Enforcement Layer
|
|
3
|
+
* Dynamic policy engine with per-agent exceptions, domain filtering, and audit logging
|
|
4
|
+
*
|
|
5
|
+
* Architecture:
|
|
6
|
+
* - Dynamic policy rules (add/remove at runtime)
|
|
7
|
+
* - Per-agent exceptions with expiration
|
|
8
|
+
* - Domain-scoped rule application
|
|
9
|
+
* - Full audit trail of all evaluations
|
|
10
|
+
* - Version tracking on policy changes
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* BasisPolicyEngine: Dynamic policy enforcement with exceptions and domain filtering
|
|
14
|
+
*/
|
|
15
|
+
export class BasisPolicyEngine {
|
|
16
|
+
rules = new Map();
|
|
17
|
+
exceptions = new Map();
|
|
18
|
+
auditLog = [];
|
|
19
|
+
policyVersion = '1.0.0';
|
|
20
|
+
versionCounter = 0;
|
|
21
|
+
/**
|
|
22
|
+
* Add a policy rule
|
|
23
|
+
*/
|
|
24
|
+
addRule(rule) {
|
|
25
|
+
const key = `${rule.role}:${rule.tier}`;
|
|
26
|
+
this.rules.set(key, rule);
|
|
27
|
+
this.incrementVersion();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Remove a policy rule
|
|
31
|
+
*/
|
|
32
|
+
removeRule(role, tier) {
|
|
33
|
+
const key = `${role}:${tier}`;
|
|
34
|
+
if (this.rules.has(key)) {
|
|
35
|
+
this.rules.delete(key);
|
|
36
|
+
this.incrementVersion();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Add an agent-specific exception
|
|
41
|
+
*/
|
|
42
|
+
addException(exception) {
|
|
43
|
+
const key = exception.agentId;
|
|
44
|
+
if (!this.exceptions.has(key)) {
|
|
45
|
+
this.exceptions.set(key, []);
|
|
46
|
+
}
|
|
47
|
+
this.exceptions.get(key).push(exception);
|
|
48
|
+
this.incrementVersion();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Remove an agent-specific exception
|
|
52
|
+
*/
|
|
53
|
+
removeException(agentId, role, tier) {
|
|
54
|
+
const key = agentId;
|
|
55
|
+
const exceptions = this.exceptions.get(key);
|
|
56
|
+
if (exceptions) {
|
|
57
|
+
const index = exceptions.findIndex((e) => e.role === role && e.tier === tier);
|
|
58
|
+
if (index >= 0) {
|
|
59
|
+
exceptions.splice(index, 1);
|
|
60
|
+
this.incrementVersion();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Evaluate policy for an agent
|
|
66
|
+
* Returns decision based on exceptions -> rules -> default allow
|
|
67
|
+
*/
|
|
68
|
+
evaluatePolicy(agentId, role, tier, domain) {
|
|
69
|
+
const timestamp = new Date();
|
|
70
|
+
// Check agent-specific exceptions first
|
|
71
|
+
const agentExceptions = this.exceptions.get(agentId) || [];
|
|
72
|
+
for (const exception of agentExceptions) {
|
|
73
|
+
if (exception.role === role &&
|
|
74
|
+
exception.tier === tier &&
|
|
75
|
+
!this.isExpired(exception)) {
|
|
76
|
+
const decision = {
|
|
77
|
+
allowed: exception.allowed,
|
|
78
|
+
reason: exception.reason,
|
|
79
|
+
source: 'exception',
|
|
80
|
+
appliedAt: timestamp,
|
|
81
|
+
};
|
|
82
|
+
this.logAudit({ timestamp, agentId, role, tier, domain, decision });
|
|
83
|
+
return decision;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Check policy rules
|
|
87
|
+
const ruleKey = `${role}:${tier}`;
|
|
88
|
+
const rule = this.rules.get(ruleKey);
|
|
89
|
+
if (rule) {
|
|
90
|
+
// Check domain filter if present
|
|
91
|
+
if (rule.domains && domain && !rule.domains.includes(domain)) {
|
|
92
|
+
// Domain filter doesn't match, fall through to default
|
|
93
|
+
}
|
|
94
|
+
else if (!rule.domains || !domain || rule.domains.includes(domain)) {
|
|
95
|
+
const decision = {
|
|
96
|
+
allowed: rule.allowed,
|
|
97
|
+
reason: rule.reason,
|
|
98
|
+
source: 'rule',
|
|
99
|
+
appliedAt: timestamp,
|
|
100
|
+
};
|
|
101
|
+
this.logAudit({ timestamp, agentId, role, tier, domain, decision });
|
|
102
|
+
return decision;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Default: allow
|
|
106
|
+
const decision = {
|
|
107
|
+
allowed: true,
|
|
108
|
+
reason: 'No matching rule or exception (default allow)',
|
|
109
|
+
source: 'default',
|
|
110
|
+
appliedAt: timestamp,
|
|
111
|
+
};
|
|
112
|
+
this.logAudit({ timestamp, agentId, role, tier, domain, decision });
|
|
113
|
+
return decision;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get audit log for specific agent
|
|
117
|
+
*/
|
|
118
|
+
getAgentAuditLog(agentId) {
|
|
119
|
+
return this.auditLog.filter((entry) => entry.agentId === agentId);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get full audit log
|
|
123
|
+
*/
|
|
124
|
+
getAuditLog() {
|
|
125
|
+
return [...this.auditLog];
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get current policy version
|
|
129
|
+
*/
|
|
130
|
+
getPolicyVersion() {
|
|
131
|
+
return this.policyVersion;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Check if exception has expired
|
|
135
|
+
*/
|
|
136
|
+
isExpired(exception) {
|
|
137
|
+
if (!exception.expiresAt) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
return new Date() > exception.expiresAt;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Log an audit entry
|
|
144
|
+
*/
|
|
145
|
+
logAudit(entry) {
|
|
146
|
+
this.auditLog.push(entry);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Increment version for policy tracking
|
|
150
|
+
*/
|
|
151
|
+
incrementVersion() {
|
|
152
|
+
this.versionCounter++;
|
|
153
|
+
const [major, minor] = this.policyVersion.split('.').map(Number);
|
|
154
|
+
this.policyVersion = `${major}.${minor + 1}`;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/phase6/role-gates/policy.ts"],"names":[],"mappings":"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"}
|