@vorionsys/atsf-core 0.2.0 → 0.2.2
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 +67 -0
- package/LICENSE +190 -0
- package/README.md +305 -181
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +86 -4
- package/dist/api/server.js.map +1 -1
- package/dist/basis/parser.d.ts +210 -210
- package/dist/basis/parser.js.map +1 -1
- 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/common/adapters.d.ts +9 -9
- package/dist/common/adapters.d.ts.map +1 -1
- package/dist/common/adapters.js +6 -6
- package/dist/common/config.d.ts +152 -152
- package/dist/common/types.d.ts +35 -15
- package/dist/common/types.d.ts.map +1 -1
- 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/index.d.ts +2 -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/governance/proof-bridge.d.ts +86 -0
- package/dist/governance/proof-bridge.d.ts.map +1 -0
- package/dist/governance/proof-bridge.js +139 -0
- package/dist/governance/proof-bridge.js.map +1 -0
- package/dist/index.d.ts +11 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -4
- 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 +10 -1
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +15 -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/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 +1829 -0
- package/dist/phase6/types.d.ts.map +1 -0
- package/dist/phase6/types.js +452 -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 +6 -0
- package/dist/proof/index.d.ts.map +1 -1
- package/dist/proof/index.js +56 -6
- 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/sandbox-training/challenges.d.ts +16 -0
- package/dist/sandbox-training/challenges.d.ts.map +1 -0
- package/dist/sandbox-training/challenges.js +561 -0
- package/dist/sandbox-training/challenges.js.map +1 -0
- package/dist/sandbox-training/graduation.d.ts +25 -0
- package/dist/sandbox-training/graduation.d.ts.map +1 -0
- package/dist/sandbox-training/graduation.js +143 -0
- package/dist/sandbox-training/graduation.js.map +1 -0
- package/dist/sandbox-training/index.d.ts +19 -0
- package/dist/sandbox-training/index.d.ts.map +1 -0
- package/dist/sandbox-training/index.js +22 -0
- package/dist/sandbox-training/index.js.map +1 -0
- package/dist/sandbox-training/promotion-service.d.ts +76 -0
- package/dist/sandbox-training/promotion-service.d.ts.map +1 -0
- package/dist/sandbox-training/promotion-service.js +117 -0
- package/dist/sandbox-training/promotion-service.js.map +1 -0
- package/dist/sandbox-training/runner.d.ts +58 -0
- package/dist/sandbox-training/runner.d.ts.map +1 -0
- package/dist/sandbox-training/runner.js +388 -0
- package/dist/sandbox-training/runner.js.map +1 -0
- package/dist/sandbox-training/scorer.d.ts +40 -0
- package/dist/sandbox-training/scorer.d.ts.map +1 -0
- package/dist/sandbox-training/scorer.js +79 -0
- package/dist/sandbox-training/scorer.js.map +1 -0
- package/dist/sandbox-training/types.d.ts +162 -0
- package/dist/sandbox-training/types.d.ts.map +1 -0
- package/dist/sandbox-training/types.js +32 -0
- package/dist/sandbox-training/types.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/index.d.ts +54 -1
- package/dist/trust-engine/index.d.ts.map +1 -1
- package/dist/trust-engine/index.js +118 -1
- 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 +42 -12
- package/dist/audit/key-manager.d.ts +0 -118
- package/dist/audit/key-manager.d.ts.map +0 -1
- package/dist/audit/key-manager.js +0 -565
- package/dist/audit/key-manager.js.map +0 -1
- package/dist/carbon-aware/carbon-metrics.d.ts +0 -151
- package/dist/carbon-aware/carbon-metrics.d.ts.map +0 -1
- package/dist/carbon-aware/carbon-metrics.js +0 -370
- package/dist/carbon-aware/carbon-metrics.js.map +0 -1
- package/dist/carbon-aware/carbon-router.d.ts +0 -101
- package/dist/carbon-aware/carbon-router.d.ts.map +0 -1
- package/dist/carbon-aware/carbon-router.js +0 -400
- package/dist/carbon-aware/carbon-router.js.map +0 -1
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Q5: Provenance Capture + Policy Interpretation
|
|
3
|
+
*
|
|
4
|
+
* Separates immutable provenance (what) from mutable policy (how to interpret):
|
|
5
|
+
* - AgentProvenance: IMMUTABLE - captured at instantiation
|
|
6
|
+
* - CreationModifierPolicy: MUTABLE - can evolve independently
|
|
7
|
+
*
|
|
8
|
+
* Key Features:
|
|
9
|
+
* - Tamper-proof provenance records
|
|
10
|
+
* - Policy versioning with supersession chains
|
|
11
|
+
* - Condition-based modifier evaluation
|
|
12
|
+
* - Full audit trail for regulator review
|
|
13
|
+
*
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
import { createLogger } from '../common/logger.js';
|
|
17
|
+
import { CreationType, agentProvenanceSchema, creationModifierPolicySchema, modifierEvaluationRecordSchema, } from './types.js';
|
|
18
|
+
const logger = createLogger({ component: 'phase6:provenance' });
|
|
19
|
+
// =============================================================================
|
|
20
|
+
// HASH UTILITIES
|
|
21
|
+
// =============================================================================
|
|
22
|
+
/**
|
|
23
|
+
* Calculate SHA-256 hash
|
|
24
|
+
*/
|
|
25
|
+
async function calculateHash(data) {
|
|
26
|
+
const encoder = new TextEncoder();
|
|
27
|
+
const dataBuffer = encoder.encode(data);
|
|
28
|
+
const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);
|
|
29
|
+
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
30
|
+
return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create immutable agent provenance record
|
|
34
|
+
* This captures the origin story of an agent and cannot be modified.
|
|
35
|
+
*/
|
|
36
|
+
export async function createProvenance(input) {
|
|
37
|
+
// Validate parent chain for cloned/evolved/promoted
|
|
38
|
+
if (input.creationType === CreationType.CLONED ||
|
|
39
|
+
input.creationType === CreationType.EVOLVED ||
|
|
40
|
+
input.creationType === CreationType.PROMOTED) {
|
|
41
|
+
if (!input.parentAgentId || !input.parentProvenance) {
|
|
42
|
+
throw new Error(`${input.creationType} agents must have parent provenance`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const now = new Date();
|
|
46
|
+
// Create hash data
|
|
47
|
+
const hashData = {
|
|
48
|
+
agentId: input.agentId,
|
|
49
|
+
creationType: input.creationType,
|
|
50
|
+
parentAgentId: input.parentAgentId,
|
|
51
|
+
parentProvenanceHash: input.parentProvenance?.provenanceHash,
|
|
52
|
+
createdAt: now.toISOString(),
|
|
53
|
+
createdBy: input.createdBy,
|
|
54
|
+
};
|
|
55
|
+
const provenanceHash = await calculateHash(JSON.stringify(hashData));
|
|
56
|
+
const provenance = {
|
|
57
|
+
agentId: input.agentId,
|
|
58
|
+
creationType: input.creationType,
|
|
59
|
+
parentAgentId: input.parentAgentId,
|
|
60
|
+
parentProvenanceHash: input.parentProvenance?.provenanceHash,
|
|
61
|
+
createdAt: now,
|
|
62
|
+
createdBy: input.createdBy,
|
|
63
|
+
provenanceHash,
|
|
64
|
+
};
|
|
65
|
+
// Validate with Zod
|
|
66
|
+
const parsed = agentProvenanceSchema.safeParse(provenance);
|
|
67
|
+
if (!parsed.success) {
|
|
68
|
+
throw new Error(`Invalid provenance: ${parsed.error.message}`);
|
|
69
|
+
}
|
|
70
|
+
logger.info({
|
|
71
|
+
agentId: provenance.agentId,
|
|
72
|
+
creationType: provenance.creationType,
|
|
73
|
+
parentAgentId: input.parentAgentId,
|
|
74
|
+
}, 'Provenance created (immutable)');
|
|
75
|
+
return Object.freeze(provenance);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Verify provenance integrity
|
|
79
|
+
*/
|
|
80
|
+
export async function verifyProvenance(provenance) {
|
|
81
|
+
// Recalculate hash
|
|
82
|
+
const hashData = {
|
|
83
|
+
agentId: provenance.agentId,
|
|
84
|
+
creationType: provenance.creationType,
|
|
85
|
+
parentAgentId: provenance.parentAgentId,
|
|
86
|
+
parentProvenanceHash: provenance.parentProvenanceHash,
|
|
87
|
+
createdAt: provenance.createdAt.toISOString(),
|
|
88
|
+
createdBy: provenance.createdBy,
|
|
89
|
+
};
|
|
90
|
+
const expectedHash = await calculateHash(JSON.stringify(hashData));
|
|
91
|
+
if (provenance.provenanceHash !== expectedHash) {
|
|
92
|
+
return { valid: false, reason: 'Provenance hash mismatch - possible tampering' };
|
|
93
|
+
}
|
|
94
|
+
return { valid: true };
|
|
95
|
+
}
|
|
96
|
+
// =============================================================================
|
|
97
|
+
// CREATION MODIFIER POLICIES (MUTABLE)
|
|
98
|
+
// =============================================================================
|
|
99
|
+
/**
|
|
100
|
+
* Default modifiers per creation type
|
|
101
|
+
*/
|
|
102
|
+
export const DEFAULT_CREATION_MODIFIERS = {
|
|
103
|
+
[CreationType.FRESH]: 0, // No modifier - baseline trust
|
|
104
|
+
[CreationType.CLONED]: -50, // Clone inherits parent concerns
|
|
105
|
+
[CreationType.EVOLVED]: 100, // Has verifiable history
|
|
106
|
+
[CreationType.PROMOTED]: 150, // Earned advancement
|
|
107
|
+
[CreationType.IMPORTED]: -100, // Unknown external provenance
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Create a new creation modifier policy
|
|
111
|
+
*/
|
|
112
|
+
export async function createModifierPolicy(input) {
|
|
113
|
+
const now = new Date();
|
|
114
|
+
const baselineModifier = input.baselineModifier ?? DEFAULT_CREATION_MODIFIERS[input.creationType];
|
|
115
|
+
const policyData = {
|
|
116
|
+
policyId: input.policyId,
|
|
117
|
+
creationType: input.creationType,
|
|
118
|
+
baselineModifier,
|
|
119
|
+
conditions: input.conditions,
|
|
120
|
+
effectiveFrom: input.effectiveFrom ?? now,
|
|
121
|
+
createdAt: now,
|
|
122
|
+
createdBy: input.createdBy,
|
|
123
|
+
supersedes: input.supersedes,
|
|
124
|
+
};
|
|
125
|
+
const policyHash = await calculateHash(JSON.stringify(policyData));
|
|
126
|
+
const policy = {
|
|
127
|
+
policyId: input.policyId,
|
|
128
|
+
version: 1,
|
|
129
|
+
creationType: input.creationType,
|
|
130
|
+
baselineModifier,
|
|
131
|
+
conditions: input.conditions,
|
|
132
|
+
effectiveFrom: input.effectiveFrom ?? now,
|
|
133
|
+
effectiveUntil: input.effectiveUntil,
|
|
134
|
+
createdAt: now,
|
|
135
|
+
createdBy: input.createdBy,
|
|
136
|
+
policyHash,
|
|
137
|
+
supersedes: input.supersedes,
|
|
138
|
+
};
|
|
139
|
+
// Validate with Zod
|
|
140
|
+
const parsed = creationModifierPolicySchema.safeParse(policy);
|
|
141
|
+
if (!parsed.success) {
|
|
142
|
+
throw new Error(`Invalid policy: ${parsed.error.message}`);
|
|
143
|
+
}
|
|
144
|
+
logger.info({
|
|
145
|
+
policyId: policy.policyId,
|
|
146
|
+
creationType: policy.creationType,
|
|
147
|
+
baselineModifier,
|
|
148
|
+
}, 'Modifier policy created');
|
|
149
|
+
return policy;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Create a new version of an existing policy
|
|
153
|
+
*/
|
|
154
|
+
export async function updateModifierPolicy(existingPolicy, updates, updatedBy) {
|
|
155
|
+
const now = new Date();
|
|
156
|
+
const policyData = {
|
|
157
|
+
policyId: existingPolicy.policyId,
|
|
158
|
+
version: existingPolicy.version + 1,
|
|
159
|
+
creationType: existingPolicy.creationType,
|
|
160
|
+
baselineModifier: updates.baselineModifier ?? existingPolicy.baselineModifier,
|
|
161
|
+
conditions: updates.conditions ?? existingPolicy.conditions,
|
|
162
|
+
effectiveFrom: updates.effectiveFrom ?? now,
|
|
163
|
+
effectiveUntil: updates.effectiveUntil,
|
|
164
|
+
createdAt: now,
|
|
165
|
+
createdBy: updatedBy,
|
|
166
|
+
supersedes: existingPolicy.policyHash,
|
|
167
|
+
};
|
|
168
|
+
const policyHash = await calculateHash(JSON.stringify(policyData));
|
|
169
|
+
const newPolicy = {
|
|
170
|
+
...policyData,
|
|
171
|
+
policyHash,
|
|
172
|
+
};
|
|
173
|
+
// Validate with Zod
|
|
174
|
+
const parsed = creationModifierPolicySchema.safeParse(newPolicy);
|
|
175
|
+
if (!parsed.success) {
|
|
176
|
+
throw new Error(`Invalid policy update: ${parsed.error.message}`);
|
|
177
|
+
}
|
|
178
|
+
logger.info({
|
|
179
|
+
policyId: newPolicy.policyId,
|
|
180
|
+
version: newPolicy.version,
|
|
181
|
+
supersedes: existingPolicy.policyHash,
|
|
182
|
+
}, 'Modifier policy updated');
|
|
183
|
+
return newPolicy;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Evaluate conditions against context
|
|
187
|
+
*/
|
|
188
|
+
function evaluateConditions(conditions, context) {
|
|
189
|
+
if (!conditions) {
|
|
190
|
+
return { matches: true, matchedConditions: ['baseline'] };
|
|
191
|
+
}
|
|
192
|
+
const matchedConditions = [];
|
|
193
|
+
// Check parent creation type
|
|
194
|
+
if (conditions.parentCreationType !== undefined) {
|
|
195
|
+
if (context.parentProvenance?.creationType === conditions.parentCreationType) {
|
|
196
|
+
matchedConditions.push(`parentCreationType:${conditions.parentCreationType}`);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
return { matches: false, matchedConditions };
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Check parent trust score range
|
|
203
|
+
if (conditions.parentTrustScore !== undefined) {
|
|
204
|
+
if (context.parentTrustScore !== undefined) {
|
|
205
|
+
if (context.parentTrustScore >= conditions.parentTrustScore.min &&
|
|
206
|
+
context.parentTrustScore <= conditions.parentTrustScore.max) {
|
|
207
|
+
matchedConditions.push(`parentTrustScore:${conditions.parentTrustScore.min}-${conditions.parentTrustScore.max}`);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
return { matches: false, matchedConditions };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
return { matches: false, matchedConditions };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Check trusted sources
|
|
218
|
+
if (conditions.trustedSources !== undefined && conditions.trustedSources.length > 0) {
|
|
219
|
+
if (context.organizationId && conditions.trustedSources.includes(context.organizationId)) {
|
|
220
|
+
matchedConditions.push(`trustedSource:${context.organizationId}`);
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
return { matches: false, matchedConditions };
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Check required attestations
|
|
227
|
+
if (conditions.requiredAttestations !== undefined && conditions.requiredAttestations.length > 0) {
|
|
228
|
+
const hasAll = conditions.requiredAttestations.every((required) => context.attestations?.includes(required));
|
|
229
|
+
if (hasAll) {
|
|
230
|
+
matchedConditions.push(`attestations:${conditions.requiredAttestations.join(',')}`);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
return { matches: false, matchedConditions };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return { matches: matchedConditions.length > 0, matchedConditions };
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Evaluate modifier for a provenance record
|
|
240
|
+
*/
|
|
241
|
+
export async function evaluateModifier(context, policies) {
|
|
242
|
+
// Find applicable policy (matching creation type, currently effective)
|
|
243
|
+
const now = new Date();
|
|
244
|
+
const applicablePolicies = policies
|
|
245
|
+
.filter((p) => p.creationType === context.provenance.creationType)
|
|
246
|
+
.filter((p) => p.effectiveFrom <= now)
|
|
247
|
+
.filter((p) => !p.effectiveUntil || p.effectiveUntil > now)
|
|
248
|
+
.sort((a, b) => b.version - a.version); // Prefer latest version
|
|
249
|
+
if (applicablePolicies.length === 0) {
|
|
250
|
+
// Fall back to default modifier
|
|
251
|
+
const defaultModifier = DEFAULT_CREATION_MODIFIERS[context.provenance.creationType];
|
|
252
|
+
const hashData = {
|
|
253
|
+
agentId: context.provenance.agentId,
|
|
254
|
+
provenanceHash: context.provenance.provenanceHash,
|
|
255
|
+
computedModifier: defaultModifier,
|
|
256
|
+
evaluatedAt: now.toISOString(),
|
|
257
|
+
};
|
|
258
|
+
const record = {
|
|
259
|
+
evaluationId: crypto.randomUUID(),
|
|
260
|
+
agentId: context.provenance.agentId,
|
|
261
|
+
provenanceHash: context.provenance.provenanceHash,
|
|
262
|
+
policyId: 'default',
|
|
263
|
+
policyVersion: 0,
|
|
264
|
+
computedModifier: defaultModifier,
|
|
265
|
+
conditionsMatched: ['default'],
|
|
266
|
+
evaluatedAt: now,
|
|
267
|
+
evaluationHash: await calculateHash(JSON.stringify(hashData)),
|
|
268
|
+
};
|
|
269
|
+
return record;
|
|
270
|
+
}
|
|
271
|
+
// Use first matching policy
|
|
272
|
+
const policy = applicablePolicies[0];
|
|
273
|
+
const { matches, matchedConditions } = evaluateConditions(policy.conditions, context);
|
|
274
|
+
const computedModifier = matches ? policy.baselineModifier : 0;
|
|
275
|
+
const hashData = {
|
|
276
|
+
agentId: context.provenance.agentId,
|
|
277
|
+
provenanceHash: context.provenance.provenanceHash,
|
|
278
|
+
policyId: policy.policyId,
|
|
279
|
+
policyVersion: policy.version,
|
|
280
|
+
computedModifier,
|
|
281
|
+
conditionsMatched: matchedConditions,
|
|
282
|
+
evaluatedAt: now.toISOString(),
|
|
283
|
+
};
|
|
284
|
+
const record = {
|
|
285
|
+
evaluationId: crypto.randomUUID(),
|
|
286
|
+
agentId: context.provenance.agentId,
|
|
287
|
+
provenanceHash: context.provenance.provenanceHash,
|
|
288
|
+
policyId: policy.policyId,
|
|
289
|
+
policyVersion: policy.version,
|
|
290
|
+
computedModifier,
|
|
291
|
+
conditionsMatched: matchedConditions,
|
|
292
|
+
evaluatedAt: now,
|
|
293
|
+
evaluationHash: await calculateHash(JSON.stringify(hashData)),
|
|
294
|
+
};
|
|
295
|
+
// Validate with Zod
|
|
296
|
+
const parsed = modifierEvaluationRecordSchema.safeParse(record);
|
|
297
|
+
if (!parsed.success) {
|
|
298
|
+
throw new Error(`Invalid evaluation record: ${parsed.error.message}`);
|
|
299
|
+
}
|
|
300
|
+
logger.debug({
|
|
301
|
+
agentId: record.agentId,
|
|
302
|
+
policyId: record.policyId,
|
|
303
|
+
modifier: record.computedModifier,
|
|
304
|
+
}, 'Modifier evaluated');
|
|
305
|
+
return record;
|
|
306
|
+
}
|
|
307
|
+
// =============================================================================
|
|
308
|
+
// PROVENANCE SERVICE
|
|
309
|
+
// =============================================================================
|
|
310
|
+
/**
|
|
311
|
+
* Service for managing agent provenance and modifier policies
|
|
312
|
+
*/
|
|
313
|
+
export class ProvenanceService {
|
|
314
|
+
provenances = new Map();
|
|
315
|
+
policies = new Map(); // policyId -> versions
|
|
316
|
+
evaluations = new Map(); // agentId -> evaluations
|
|
317
|
+
/**
|
|
318
|
+
* Create and register provenance for an agent
|
|
319
|
+
*/
|
|
320
|
+
async createProvenance(input) {
|
|
321
|
+
// Validate parent if specified
|
|
322
|
+
if (input.parentAgentId) {
|
|
323
|
+
const parentProvenance = this.provenances.get(input.parentAgentId);
|
|
324
|
+
if (!parentProvenance) {
|
|
325
|
+
throw new Error(`Parent agent ${input.parentAgentId} not found`);
|
|
326
|
+
}
|
|
327
|
+
input.parentProvenance = parentProvenance;
|
|
328
|
+
}
|
|
329
|
+
const provenance = await createProvenance(input);
|
|
330
|
+
this.provenances.set(input.agentId, provenance);
|
|
331
|
+
return provenance;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Get provenance for an agent
|
|
335
|
+
*/
|
|
336
|
+
getProvenance(agentId) {
|
|
337
|
+
return this.provenances.get(agentId);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Create a new modifier policy
|
|
341
|
+
*/
|
|
342
|
+
async createPolicy(input) {
|
|
343
|
+
const policy = await createModifierPolicy(input);
|
|
344
|
+
const versions = this.policies.get(input.policyId) ?? [];
|
|
345
|
+
versions.push(policy);
|
|
346
|
+
this.policies.set(input.policyId, versions);
|
|
347
|
+
return policy;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Update an existing policy
|
|
351
|
+
*/
|
|
352
|
+
async updatePolicy(policyId, updates, updatedBy) {
|
|
353
|
+
const versions = this.policies.get(policyId);
|
|
354
|
+
if (!versions || versions.length === 0) {
|
|
355
|
+
throw new Error(`Policy ${policyId} not found`);
|
|
356
|
+
}
|
|
357
|
+
const currentPolicy = versions[versions.length - 1];
|
|
358
|
+
const newPolicy = await updateModifierPolicy(currentPolicy, updates, updatedBy);
|
|
359
|
+
versions.push(newPolicy);
|
|
360
|
+
return newPolicy;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Get current version of a policy
|
|
364
|
+
*/
|
|
365
|
+
getPolicy(policyId) {
|
|
366
|
+
const versions = this.policies.get(policyId);
|
|
367
|
+
return versions?.[versions.length - 1];
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Get all policy versions
|
|
371
|
+
*/
|
|
372
|
+
getPolicyVersions(policyId) {
|
|
373
|
+
return this.policies.get(policyId) ?? [];
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Get all active policies
|
|
377
|
+
*/
|
|
378
|
+
getActivePolicies() {
|
|
379
|
+
const now = new Date();
|
|
380
|
+
const active = [];
|
|
381
|
+
for (const versions of this.policies.values()) {
|
|
382
|
+
const current = versions[versions.length - 1];
|
|
383
|
+
if (current.effectiveFrom <= now && (!current.effectiveUntil || current.effectiveUntil > now)) {
|
|
384
|
+
active.push(current);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
return active;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Evaluate modifier for an agent
|
|
391
|
+
*/
|
|
392
|
+
async evaluateModifier(agentId) {
|
|
393
|
+
const provenance = this.provenances.get(agentId);
|
|
394
|
+
if (!provenance) {
|
|
395
|
+
throw new Error(`Agent ${agentId} not found`);
|
|
396
|
+
}
|
|
397
|
+
// Get parent provenance if exists
|
|
398
|
+
let parentProvenance;
|
|
399
|
+
if (provenance.parentAgentId) {
|
|
400
|
+
parentProvenance = this.provenances.get(provenance.parentAgentId);
|
|
401
|
+
}
|
|
402
|
+
const context = {
|
|
403
|
+
provenance,
|
|
404
|
+
parentProvenance,
|
|
405
|
+
};
|
|
406
|
+
const record = await evaluateModifier(context, this.getActivePolicies());
|
|
407
|
+
// Store evaluation
|
|
408
|
+
const agentEvaluations = this.evaluations.get(agentId) ?? [];
|
|
409
|
+
agentEvaluations.push(record);
|
|
410
|
+
this.evaluations.set(agentId, agentEvaluations);
|
|
411
|
+
return record;
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Get evaluation history for an agent
|
|
415
|
+
*/
|
|
416
|
+
getEvaluationHistory(agentId) {
|
|
417
|
+
return this.evaluations.get(agentId) ?? [];
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Verify provenance chain for an agent
|
|
421
|
+
*/
|
|
422
|
+
async verifyProvenanceChain(agentId) {
|
|
423
|
+
const chain = [];
|
|
424
|
+
const issues = [];
|
|
425
|
+
let currentId = agentId;
|
|
426
|
+
while (currentId) {
|
|
427
|
+
const provenance = this.provenances.get(currentId);
|
|
428
|
+
if (!provenance) {
|
|
429
|
+
issues.push(`Provenance for ${currentId} not found`);
|
|
430
|
+
break;
|
|
431
|
+
}
|
|
432
|
+
chain.push(currentId);
|
|
433
|
+
const result = await verifyProvenance(provenance);
|
|
434
|
+
if (!result.valid) {
|
|
435
|
+
issues.push(`${currentId}: ${result.reason}`);
|
|
436
|
+
}
|
|
437
|
+
currentId = provenance.parentAgentId;
|
|
438
|
+
}
|
|
439
|
+
return {
|
|
440
|
+
valid: issues.length === 0,
|
|
441
|
+
chain,
|
|
442
|
+
issues,
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Get statistics
|
|
447
|
+
*/
|
|
448
|
+
getStats() {
|
|
449
|
+
const byCreationType = {
|
|
450
|
+
[CreationType.FRESH]: 0,
|
|
451
|
+
[CreationType.CLONED]: 0,
|
|
452
|
+
[CreationType.EVOLVED]: 0,
|
|
453
|
+
[CreationType.PROMOTED]: 0,
|
|
454
|
+
[CreationType.IMPORTED]: 0,
|
|
455
|
+
};
|
|
456
|
+
for (const provenance of this.provenances.values()) {
|
|
457
|
+
byCreationType[provenance.creationType]++;
|
|
458
|
+
}
|
|
459
|
+
let evaluationCount = 0;
|
|
460
|
+
for (const evals of this.evaluations.values()) {
|
|
461
|
+
evaluationCount += evals.length;
|
|
462
|
+
}
|
|
463
|
+
return {
|
|
464
|
+
provenanceCount: this.provenances.size,
|
|
465
|
+
policyCount: this.policies.size,
|
|
466
|
+
evaluationCount,
|
|
467
|
+
byCreationType,
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Create a new provenance service instance
|
|
473
|
+
*/
|
|
474
|
+
export function createProvenanceService() {
|
|
475
|
+
return new ProvenanceService();
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Initialize default modifier policies
|
|
479
|
+
*/
|
|
480
|
+
export async function initializeDefaultPolicies(service) {
|
|
481
|
+
// Fresh agents - no modifier
|
|
482
|
+
await service.createPolicy({
|
|
483
|
+
policyId: 'default:fresh',
|
|
484
|
+
creationType: CreationType.FRESH,
|
|
485
|
+
baselineModifier: 0,
|
|
486
|
+
createdBy: 'system',
|
|
487
|
+
});
|
|
488
|
+
// Cloned agents - penalty for unknown inheritance
|
|
489
|
+
await service.createPolicy({
|
|
490
|
+
policyId: 'default:cloned',
|
|
491
|
+
creationType: CreationType.CLONED,
|
|
492
|
+
baselineModifier: -50,
|
|
493
|
+
conditions: {
|
|
494
|
+
parentTrustScore: { min: 0, max: 500 },
|
|
495
|
+
},
|
|
496
|
+
createdBy: 'system',
|
|
497
|
+
});
|
|
498
|
+
// Cloned from trusted parent - reduced penalty
|
|
499
|
+
await service.createPolicy({
|
|
500
|
+
policyId: 'trusted:cloned',
|
|
501
|
+
creationType: CreationType.CLONED,
|
|
502
|
+
baselineModifier: -20,
|
|
503
|
+
conditions: {
|
|
504
|
+
parentTrustScore: { min: 500, max: 1000 },
|
|
505
|
+
},
|
|
506
|
+
createdBy: 'system',
|
|
507
|
+
});
|
|
508
|
+
// Evolved agents - bonus for verifiable history
|
|
509
|
+
await service.createPolicy({
|
|
510
|
+
policyId: 'default:evolved',
|
|
511
|
+
creationType: CreationType.EVOLVED,
|
|
512
|
+
baselineModifier: 100,
|
|
513
|
+
createdBy: 'system',
|
|
514
|
+
});
|
|
515
|
+
// Promoted agents - significant bonus
|
|
516
|
+
await service.createPolicy({
|
|
517
|
+
policyId: 'default:promoted',
|
|
518
|
+
creationType: CreationType.PROMOTED,
|
|
519
|
+
baselineModifier: 150,
|
|
520
|
+
createdBy: 'system',
|
|
521
|
+
});
|
|
522
|
+
// Imported agents - penalty for unknown origin
|
|
523
|
+
await service.createPolicy({
|
|
524
|
+
policyId: 'default:imported',
|
|
525
|
+
creationType: CreationType.IMPORTED,
|
|
526
|
+
baselineModifier: -100,
|
|
527
|
+
createdBy: 'system',
|
|
528
|
+
});
|
|
529
|
+
// Imported from trusted source - reduced penalty
|
|
530
|
+
await service.createPolicy({
|
|
531
|
+
policyId: 'trusted:imported',
|
|
532
|
+
creationType: CreationType.IMPORTED,
|
|
533
|
+
baselineModifier: -30,
|
|
534
|
+
conditions: {
|
|
535
|
+
trustedSources: ['org:verified-partner', 'org:internal'],
|
|
536
|
+
},
|
|
537
|
+
createdBy: 'system',
|
|
538
|
+
});
|
|
539
|
+
logger.info('Default modifier policies initialized');
|
|
540
|
+
}
|
|
541
|
+
// =============================================================================
|
|
542
|
+
// EXPORTS
|
|
543
|
+
// =============================================================================
|
|
544
|
+
export { CreationType, } from './types.js';
|
|
545
|
+
//# sourceMappingURL=provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../src/phase6/provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Q3: Role Gates
|
|
3
|
+
* Dual-layer validation: kernel fast-path + BASIS policy engine
|
|
4
|
+
*/
|
|
5
|
+
export { AgentRole, TrustTier, ROLE_GATE_MATRIX, validateRoleAndTier, isValidRole, isValidTier, getMaxTierForRole, getMinRoleForTier, RoleGateValidationError, } from './kernel.js';
|
|
6
|
+
export { BasisPolicyEngine, type PolicyRule, type PolicyException, type PolicyDecision, type PolicyAuditEntry, } from './policy.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/phase6/role-gates/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Q3: Role Gates
|
|
3
|
+
* Dual-layer validation: kernel fast-path + BASIS policy engine
|
|
4
|
+
*/
|
|
5
|
+
export { AgentRole, TrustTier, ROLE_GATE_MATRIX, validateRoleAndTier, isValidRole, isValidTier, getMaxTierForRole, getMinRoleForTier, RoleGateValidationError, } from './kernel.js';
|
|
6
|
+
export { BasisPolicyEngine, } from './policy.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/phase6/role-gates/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,GAKlB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
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 declare enum AgentRole {
|
|
15
|
+
R_L0 = "R-L0",// Minimal autonomy, strict supervision
|
|
16
|
+
R_L1 = "R-L1",// Limited autonomy, high oversight
|
|
17
|
+
R_L2 = "R-L2",// Moderate autonomy, medium oversight
|
|
18
|
+
R_L3 = "R-L3",// Balanced autonomy, routine oversight
|
|
19
|
+
R_L4 = "R-L4",// Higher autonomy, conditional oversight
|
|
20
|
+
R_L5 = "R-L5",// Strong autonomy, rare oversight
|
|
21
|
+
R_L6 = "R-L6",// Very strong autonomy, minimal oversight
|
|
22
|
+
R_L7 = "R-L7",// Near-complete autonomy, exception handling
|
|
23
|
+
R_L8 = "R-L8"
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Trust tier enumeration (6 levels)
|
|
27
|
+
* Defines operational authorization scope and resource access
|
|
28
|
+
*/
|
|
29
|
+
export declare enum TrustTier {
|
|
30
|
+
T0 = "T0",// Read-only, no state mutations
|
|
31
|
+
T1 = "T1",// Read + limited mutations, single domain
|
|
32
|
+
T2 = "T2",// Read + mutations, multiple domains
|
|
33
|
+
T3 = "T3",// Read + mutations + external API access
|
|
34
|
+
T4 = "T4",// Full resource access, regulatory compliance
|
|
35
|
+
T5 = "T5"
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Role Gate Matrix: Valid role + tier combinations
|
|
39
|
+
* Rows: Roles (R-L0 to R-L8)
|
|
40
|
+
* Cols: Tiers (T0 to T5)
|
|
41
|
+
* Value: true if combination is valid
|
|
42
|
+
*
|
|
43
|
+
* Matrix structure:
|
|
44
|
+
* - R-L0 can reach: T0, T1
|
|
45
|
+
* - R-L1 can reach: T0, T1, T2
|
|
46
|
+
* - R-L2 can reach: T0, T1, T2, T3
|
|
47
|
+
* - R-L3 can reach: T0, T1, T2, T3, T4
|
|
48
|
+
* - R-L4 can reach: T0, T1, T2, T3, T4
|
|
49
|
+
* - R-L5 can reach: T0, T1, T2, T3, T4
|
|
50
|
+
* - R-L6 can reach: T0, T1, T2, T3, T4, T5
|
|
51
|
+
* - R-L7 can reach: T0, T1, T2, T3, T4, T5
|
|
52
|
+
* - R-L8 can reach: T0, T1, T2, T3, T4, T5
|
|
53
|
+
*/
|
|
54
|
+
export declare const ROLE_GATE_MATRIX: Record<AgentRole, Record<TrustTier, boolean>>;
|
|
55
|
+
/**
|
|
56
|
+
* Validate role + tier combination
|
|
57
|
+
* O(1) matrix lookup, fail-fast validation
|
|
58
|
+
*/
|
|
59
|
+
export declare function validateRoleAndTier(role: AgentRole, tier: TrustTier): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Check if value is a valid AgentRole
|
|
62
|
+
*/
|
|
63
|
+
export declare function isValidRole(role: unknown): role is AgentRole;
|
|
64
|
+
/**
|
|
65
|
+
* Check if value is a valid TrustTier
|
|
66
|
+
*/
|
|
67
|
+
export declare function isValidTier(tier: unknown): tier is TrustTier;
|
|
68
|
+
/**
|
|
69
|
+
* Get maximum tier reachable for a given role
|
|
70
|
+
*/
|
|
71
|
+
export declare function getMaxTierForRole(role: AgentRole): TrustTier;
|
|
72
|
+
/**
|
|
73
|
+
* Get minimum role required for a given tier
|
|
74
|
+
*/
|
|
75
|
+
export declare function getMinRoleForTier(tier: TrustTier): AgentRole;
|
|
76
|
+
/**
|
|
77
|
+
* Custom error for role gate validation failures
|
|
78
|
+
*/
|
|
79
|
+
export declare class RoleGateValidationError extends Error {
|
|
80
|
+
role: AgentRole;
|
|
81
|
+
tier: TrustTier;
|
|
82
|
+
constructor(role: AgentRole, tier: TrustTier, message?: string);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=kernel.d.ts.map
|