@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.
Files changed (215) hide show
  1. package/README.md +12 -12
  2. package/dist/api/server.d.ts.map +1 -1
  3. package/dist/api/server.js +463 -35
  4. package/dist/api/server.js.map +1 -1
  5. package/dist/arbitration/index.d.ts.map +1 -1
  6. package/dist/arbitration/index.js +8 -6
  7. package/dist/arbitration/index.js.map +1 -1
  8. package/dist/audit/key-manager.d.ts +118 -0
  9. package/dist/audit/key-manager.d.ts.map +1 -0
  10. package/dist/audit/key-manager.js +565 -0
  11. package/dist/audit/key-manager.js.map +1 -0
  12. package/dist/basis/evaluator.d.ts +31 -0
  13. package/dist/basis/evaluator.d.ts.map +1 -1
  14. package/dist/basis/evaluator.js +205 -10
  15. package/dist/basis/evaluator.js.map +1 -1
  16. package/dist/basis/parser.d.ts +210 -210
  17. package/dist/basis/parser.js.map +1 -1
  18. package/dist/carbon-aware/carbon-metrics.d.ts +151 -0
  19. package/dist/carbon-aware/carbon-metrics.d.ts.map +1 -0
  20. package/dist/carbon-aware/carbon-metrics.js +370 -0
  21. package/dist/carbon-aware/carbon-metrics.js.map +1 -0
  22. package/dist/carbon-aware/carbon-router.d.ts +101 -0
  23. package/dist/carbon-aware/carbon-router.d.ts.map +1 -0
  24. package/dist/carbon-aware/carbon-router.js +400 -0
  25. package/dist/carbon-aware/carbon-router.js.map +1 -0
  26. package/dist/chain/index.d.ts +147 -0
  27. package/dist/chain/index.d.ts.map +1 -0
  28. package/dist/chain/index.js +219 -0
  29. package/dist/chain/index.js.map +1 -0
  30. package/dist/cognigate/index.d.ts +33 -4
  31. package/dist/cognigate/index.d.ts.map +1 -1
  32. package/dist/cognigate/index.js +199 -24
  33. package/dist/cognigate/index.js.map +1 -1
  34. package/dist/common/adapters.d.ts +172 -0
  35. package/dist/common/adapters.d.ts.map +1 -0
  36. package/dist/common/adapters.js +329 -0
  37. package/dist/common/adapters.js.map +1 -0
  38. package/dist/common/config.d.ts +168 -163
  39. package/dist/common/config.d.ts.map +1 -1
  40. package/dist/common/config.js +2 -0
  41. package/dist/common/config.js.map +1 -1
  42. package/dist/common/index.d.ts +1 -0
  43. package/dist/common/index.d.ts.map +1 -1
  44. package/dist/common/index.js +1 -0
  45. package/dist/common/index.js.map +1 -1
  46. package/dist/common/types.d.ts +67 -16
  47. package/dist/common/types.d.ts.map +1 -1
  48. package/dist/common/types.js +4 -0
  49. package/dist/common/types.js.map +1 -1
  50. package/dist/enforce/index.d.ts +226 -16
  51. package/dist/enforce/index.d.ts.map +1 -1
  52. package/dist/enforce/index.js +196 -49
  53. package/dist/enforce/index.js.map +1 -1
  54. package/dist/governance/fluid-workflow.d.ts +217 -0
  55. package/dist/governance/fluid-workflow.d.ts.map +1 -0
  56. package/dist/governance/fluid-workflow.js +491 -0
  57. package/dist/governance/fluid-workflow.js.map +1 -0
  58. package/dist/governance/index.d.ts +1 -0
  59. package/dist/governance/index.d.ts.map +1 -1
  60. package/dist/governance/index.js +1 -0
  61. package/dist/governance/index.js.map +1 -1
  62. package/dist/index.d.ts +9 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +14 -3
  65. package/dist/index.js.map +1 -1
  66. package/dist/intent/index.d.ts +127 -10
  67. package/dist/intent/index.d.ts.map +1 -1
  68. package/dist/intent/index.js +121 -16
  69. package/dist/intent/index.js.map +1 -1
  70. package/dist/langchain/executor.d.ts +19 -5
  71. package/dist/langchain/executor.d.ts.map +1 -1
  72. package/dist/langchain/executor.js +287 -36
  73. package/dist/langchain/executor.js.map +1 -1
  74. package/dist/langchain/index.d.ts +2 -1
  75. package/dist/langchain/index.d.ts.map +1 -1
  76. package/dist/langchain/index.js +3 -1
  77. package/dist/langchain/index.js.map +1 -1
  78. package/dist/langchain/tools.d.ts.map +1 -1
  79. package/dist/langchain/tools.js +2 -1
  80. package/dist/langchain/tools.js.map +1 -1
  81. package/dist/langchain/types.d.ts +41 -0
  82. package/dist/langchain/types.d.ts.map +1 -1
  83. package/dist/layers/index.d.ts +1 -1
  84. package/dist/layers/index.d.ts.map +1 -1
  85. package/dist/persistence/file.d.ts +35 -3
  86. package/dist/persistence/file.d.ts.map +1 -1
  87. package/dist/persistence/file.js +138 -11
  88. package/dist/persistence/file.js.map +1 -1
  89. package/dist/persistence/index.d.ts +11 -1
  90. package/dist/persistence/index.d.ts.map +1 -1
  91. package/dist/persistence/index.js +25 -1
  92. package/dist/persistence/index.js.map +1 -1
  93. package/dist/persistence/sqlite.d.ts +135 -0
  94. package/dist/persistence/sqlite.d.ts.map +1 -0
  95. package/dist/persistence/sqlite.js +372 -0
  96. package/dist/persistence/sqlite.js.map +1 -0
  97. package/dist/persistence/supabase.d.ts +93 -0
  98. package/dist/persistence/supabase.d.ts.map +1 -0
  99. package/dist/persistence/supabase.js +219 -0
  100. package/dist/persistence/supabase.js.map +1 -0
  101. package/dist/persistence/types.d.ts +5 -1
  102. package/dist/persistence/types.d.ts.map +1 -1
  103. package/dist/phase6/ceiling.d.ts +177 -0
  104. package/dist/phase6/ceiling.d.ts.map +1 -0
  105. package/dist/phase6/ceiling.js +463 -0
  106. package/dist/phase6/ceiling.js.map +1 -0
  107. package/dist/phase6/context.d.ts +207 -0
  108. package/dist/phase6/context.d.ts.map +1 -0
  109. package/dist/phase6/context.js +603 -0
  110. package/dist/phase6/context.js.map +1 -0
  111. package/dist/phase6/index.d.ts +79 -0
  112. package/dist/phase6/index.d.ts.map +1 -0
  113. package/dist/phase6/index.js +152 -0
  114. package/dist/phase6/index.js.map +1 -0
  115. package/dist/phase6/presets.d.ts +148 -0
  116. package/dist/phase6/presets.d.ts.map +1 -0
  117. package/dist/phase6/presets.js +467 -0
  118. package/dist/phase6/presets.js.map +1 -0
  119. package/dist/phase6/provenance.d.ts +148 -0
  120. package/dist/phase6/provenance.d.ts.map +1 -0
  121. package/dist/phase6/provenance.js +545 -0
  122. package/dist/phase6/provenance.js.map +1 -0
  123. package/dist/phase6/role-gates/index.d.ts +7 -0
  124. package/dist/phase6/role-gates/index.d.ts.map +1 -0
  125. package/dist/phase6/role-gates/index.js +7 -0
  126. package/dist/phase6/role-gates/index.js.map +1 -0
  127. package/dist/phase6/role-gates/kernel.d.ts +84 -0
  128. package/dist/phase6/role-gates/kernel.d.ts.map +1 -0
  129. package/dist/phase6/role-gates/kernel.js +258 -0
  130. package/dist/phase6/role-gates/kernel.js.map +1 -0
  131. package/dist/phase6/role-gates/policy.d.ts +110 -0
  132. package/dist/phase6/role-gates/policy.d.ts.map +1 -0
  133. package/dist/phase6/role-gates/policy.js +157 -0
  134. package/dist/phase6/role-gates/policy.js.map +1 -0
  135. package/dist/phase6/role-gates.d.ts +164 -0
  136. package/dist/phase6/role-gates.d.ts.map +1 -0
  137. package/dist/phase6/role-gates.js +536 -0
  138. package/dist/phase6/role-gates.js.map +1 -0
  139. package/dist/phase6/types.d.ts +1827 -0
  140. package/dist/phase6/types.d.ts.map +1 -0
  141. package/dist/phase6/types.js +450 -0
  142. package/dist/phase6/types.js.map +1 -0
  143. package/dist/phase6/weight-presets/canonical.d.ts +93 -0
  144. package/dist/phase6/weight-presets/canonical.d.ts.map +1 -0
  145. package/dist/phase6/weight-presets/canonical.js +122 -0
  146. package/dist/phase6/weight-presets/canonical.js.map +1 -0
  147. package/dist/phase6/weight-presets/deltas.d.ts +144 -0
  148. package/dist/phase6/weight-presets/deltas.d.ts.map +1 -0
  149. package/dist/phase6/weight-presets/deltas.js +184 -0
  150. package/dist/phase6/weight-presets/deltas.js.map +1 -0
  151. package/dist/phase6/weight-presets/index.d.ts +8 -0
  152. package/dist/phase6/weight-presets/index.d.ts.map +1 -0
  153. package/dist/phase6/weight-presets/index.js +8 -0
  154. package/dist/phase6/weight-presets/index.js.map +1 -0
  155. package/dist/phase6/weight-presets/merger.d.ts +79 -0
  156. package/dist/phase6/weight-presets/merger.d.ts.map +1 -0
  157. package/dist/phase6/weight-presets/merger.js +161 -0
  158. package/dist/phase6/weight-presets/merger.js.map +1 -0
  159. package/dist/proof/index.d.ts +50 -1
  160. package/dist/proof/index.d.ts.map +1 -1
  161. package/dist/proof/index.js +122 -3
  162. package/dist/proof/index.js.map +1 -1
  163. package/dist/proof/merkle.d.ts +195 -0
  164. package/dist/proof/merkle.d.ts.map +1 -0
  165. package/dist/proof/merkle.js +412 -0
  166. package/dist/proof/merkle.js.map +1 -0
  167. package/dist/proof/zk-proofs.d.ts +218 -0
  168. package/dist/proof/zk-proofs.d.ts.map +1 -0
  169. package/dist/proof/zk-proofs.js +531 -0
  170. package/dist/proof/zk-proofs.js.map +1 -0
  171. package/dist/trust-engine/ceiling-enforcement/audit.d.ts +98 -0
  172. package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -0
  173. package/dist/trust-engine/ceiling-enforcement/audit.js +160 -0
  174. package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -0
  175. package/dist/trust-engine/ceiling-enforcement/index.d.ts +6 -0
  176. package/dist/trust-engine/ceiling-enforcement/index.d.ts.map +1 -0
  177. package/dist/trust-engine/ceiling-enforcement/index.js +6 -0
  178. package/dist/trust-engine/ceiling-enforcement/index.js.map +1 -0
  179. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +112 -0
  180. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -0
  181. package/dist/trust-engine/ceiling-enforcement/kernel.js +158 -0
  182. package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -0
  183. package/dist/trust-engine/context-policy/enforcement.d.ts +62 -0
  184. package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -0
  185. package/dist/trust-engine/context-policy/enforcement.js +104 -0
  186. package/dist/trust-engine/context-policy/enforcement.js.map +1 -0
  187. package/dist/trust-engine/context-policy/factory.d.ts +75 -0
  188. package/dist/trust-engine/context-policy/factory.d.ts.map +1 -0
  189. package/dist/trust-engine/context-policy/factory.js +130 -0
  190. package/dist/trust-engine/context-policy/factory.js.map +1 -0
  191. package/dist/trust-engine/context-policy/index.d.ts +6 -0
  192. package/dist/trust-engine/context-policy/index.d.ts.map +1 -0
  193. package/dist/trust-engine/context-policy/index.js +6 -0
  194. package/dist/trust-engine/context-policy/index.js.map +1 -0
  195. package/dist/trust-engine/creation-modifiers/index.d.ts +5 -0
  196. package/dist/trust-engine/creation-modifiers/index.d.ts.map +1 -0
  197. package/dist/trust-engine/creation-modifiers/index.js +5 -0
  198. package/dist/trust-engine/creation-modifiers/index.js.map +1 -0
  199. package/dist/trust-engine/creation-modifiers/types.d.ts +112 -0
  200. package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -0
  201. package/dist/trust-engine/creation-modifiers/types.js +166 -0
  202. package/dist/trust-engine/creation-modifiers/types.js.map +1 -0
  203. package/dist/trust-engine/decay-profiles.d.ts +159 -0
  204. package/dist/trust-engine/decay-profiles.d.ts.map +1 -0
  205. package/dist/trust-engine/decay-profiles.js +210 -0
  206. package/dist/trust-engine/decay-profiles.js.map +1 -0
  207. package/dist/trust-engine/index.d.ts +144 -5
  208. package/dist/trust-engine/index.d.ts.map +1 -1
  209. package/dist/trust-engine/index.js +320 -15
  210. package/dist/trust-engine/index.js.map +1 -1
  211. package/dist/trust-engine/phase6-types.d.ts +123 -0
  212. package/dist/trust-engine/phase6-types.d.ts.map +1 -0
  213. package/dist/trust-engine/phase6-types.js +88 -0
  214. package/dist/trust-engine/phase6-types.js.map +1 -0
  215. 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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"}