@agentplat/inference-control 0.3.0-beta.2 → 0.3.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +360 -0
- package/dist/anytime-semantic-guarantees.d.ts +216 -0
- package/dist/anytime-semantic-guarantees.d.ts.map +1 -0
- package/dist/anytime-semantic-guarantees.js +817 -0
- package/dist/anytime-semantic-guarantees.js.map +1 -0
- package/dist/assessor-ensemble-contracts.d.ts +145 -0
- package/dist/assessor-ensemble-contracts.d.ts.map +1 -0
- package/dist/assessor-ensemble-contracts.js +29 -0
- package/dist/assessor-ensemble-contracts.js.map +1 -0
- package/dist/assessor-ensemble-runtime.d.ts +55 -0
- package/dist/assessor-ensemble-runtime.d.ts.map +1 -0
- package/dist/assessor-ensemble-runtime.js +308 -0
- package/dist/assessor-ensemble-runtime.js.map +1 -0
- package/dist/assessor-ensemble-validation.d.ts +12 -0
- package/dist/assessor-ensemble-validation.d.ts.map +1 -0
- package/dist/assessor-ensemble-validation.js +156 -0
- package/dist/assessor-ensemble-validation.js.map +1 -0
- package/dist/assessor-ensemble.d.ts +4 -0
- package/dist/assessor-ensemble.d.ts.map +1 -0
- package/dist/assessor-ensemble.js +4 -0
- package/dist/assessor-ensemble.js.map +1 -0
- package/dist/cognitive-adapters.d.ts +92 -0
- package/dist/cognitive-adapters.d.ts.map +1 -0
- package/dist/cognitive-adapters.js +263 -0
- package/dist/cognitive-adapters.js.map +1 -0
- package/dist/context-integrity-analyzers.d.ts +35 -0
- package/dist/context-integrity-analyzers.d.ts.map +1 -0
- package/dist/context-integrity-analyzers.js +387 -0
- package/dist/context-integrity-analyzers.js.map +1 -0
- package/dist/context-integrity-contracts.d.ts +304 -0
- package/dist/context-integrity-contracts.d.ts.map +1 -0
- package/dist/context-integrity-contracts.js +24 -0
- package/dist/context-integrity-contracts.js.map +1 -0
- package/dist/context-integrity-model.d.ts +25 -0
- package/dist/context-integrity-model.d.ts.map +1 -0
- package/dist/context-integrity-model.js +192 -0
- package/dist/context-integrity-model.js.map +1 -0
- package/dist/context-integrity-portable-agent.d.ts +79 -0
- package/dist/context-integrity-portable-agent.d.ts.map +1 -0
- package/dist/context-integrity-portable-agent.js +511 -0
- package/dist/context-integrity-portable-agent.js.map +1 -0
- package/dist/context-integrity-role-alignment.d.ts +28 -0
- package/dist/context-integrity-role-alignment.d.ts.map +1 -0
- package/dist/context-integrity-role-alignment.js +95 -0
- package/dist/context-integrity-role-alignment.js.map +1 -0
- package/dist/context-integrity-runtime.d.ts +95 -0
- package/dist/context-integrity-runtime.d.ts.map +1 -0
- package/dist/context-integrity-runtime.js +1512 -0
- package/dist/context-integrity-runtime.js.map +1 -0
- package/dist/context-integrity.d.ts +5 -0
- package/dist/context-integrity.d.ts.map +1 -0
- package/dist/context-integrity.js +5 -0
- package/dist/context-integrity.js.map +1 -0
- package/dist/governed-role-evolution.d.ts +172 -0
- package/dist/governed-role-evolution.d.ts.map +1 -0
- package/dist/governed-role-evolution.js +613 -0
- package/dist/governed-role-evolution.js.map +1 -0
- package/dist/heterogeneous-agent-composition.d.ts +96 -0
- package/dist/heterogeneous-agent-composition.d.ts.map +1 -0
- package/dist/heterogeneous-agent-composition.js +512 -0
- package/dist/heterogeneous-agent-composition.js.map +1 -0
- package/dist/index.d.ts +21 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -13
- package/dist/index.js.map +1 -1
- package/dist/intervention-adapters.d.ts +29 -0
- package/dist/intervention-adapters.d.ts.map +1 -0
- package/dist/intervention-adapters.js +107 -0
- package/dist/intervention-adapters.js.map +1 -0
- package/dist/intervention-contracts.d.ts +311 -0
- package/dist/intervention-contracts.d.ts.map +1 -0
- package/dist/intervention-contracts.js +28 -0
- package/dist/intervention-contracts.js.map +1 -0
- package/dist/intervention-runtime.d.ts +86 -0
- package/dist/intervention-runtime.d.ts.map +1 -0
- package/dist/intervention-runtime.js +958 -0
- package/dist/intervention-runtime.js.map +1 -0
- package/dist/intervention-validation.d.ts +27 -0
- package/dist/intervention-validation.d.ts.map +1 -0
- package/dist/intervention-validation.js +273 -0
- package/dist/intervention-validation.js.map +1 -0
- package/dist/intervention.d.ts +6 -0
- package/dist/intervention.d.ts.map +1 -0
- package/dist/intervention.js +6 -0
- package/dist/intervention.js.map +1 -0
- package/dist/model.d.ts +18 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +60 -2
- package/dist/model.js.map +1 -1
- package/dist/operational-cognitive-control.d.ts +208 -0
- package/dist/operational-cognitive-control.d.ts.map +1 -0
- package/dist/operational-cognitive-control.js +590 -0
- package/dist/operational-cognitive-control.js.map +1 -0
- package/dist/portable-agent.d.ts +50 -0
- package/dist/portable-agent.d.ts.map +1 -0
- package/dist/portable-agent.js +243 -0
- package/dist/portable-agent.js.map +1 -0
- package/dist/reference-controllers.d.ts +121 -0
- package/dist/reference-controllers.d.ts.map +1 -0
- package/dist/reference-controllers.js +411 -0
- package/dist/reference-controllers.js.map +1 -0
- package/dist/role-alignment-portable-agent.d.ts +145 -0
- package/dist/role-alignment-portable-agent.d.ts.map +1 -0
- package/dist/role-alignment-portable-agent.js +484 -0
- package/dist/role-alignment-portable-agent.js.map +1 -0
- package/dist/role-alignment.d.ts +226 -0
- package/dist/role-alignment.d.ts.map +1 -0
- package/dist/role-alignment.js +1074 -0
- package/dist/role-alignment.js.map +1 -0
- package/dist/role-realignment-portable-agent.d.ts +163 -0
- package/dist/role-realignment-portable-agent.d.ts.map +1 -0
- package/dist/role-realignment-portable-agent.js +634 -0
- package/dist/role-realignment-portable-agent.js.map +1 -0
- package/dist/role-realignment.d.ts +368 -0
- package/dist/role-realignment.d.ts.map +1 -0
- package/dist/role-realignment.js +1609 -0
- package/dist/role-realignment.js.map +1 -0
- package/dist/semantic-alignment-assessors.d.ts +12 -0
- package/dist/semantic-alignment-assessors.d.ts.map +1 -0
- package/dist/semantic-alignment-assessors.js +55 -0
- package/dist/semantic-alignment-assessors.js.map +1 -0
- package/dist/semantic-alignment-contracts.d.ts +385 -0
- package/dist/semantic-alignment-contracts.d.ts.map +1 -0
- package/dist/semantic-alignment-contracts.js +16 -0
- package/dist/semantic-alignment-contracts.js.map +1 -0
- package/dist/semantic-alignment-memory.d.ts +53 -0
- package/dist/semantic-alignment-memory.d.ts.map +1 -0
- package/dist/semantic-alignment-memory.js +170 -0
- package/dist/semantic-alignment-memory.js.map +1 -0
- package/dist/semantic-alignment-runtime.d.ts +67 -0
- package/dist/semantic-alignment-runtime.d.ts.map +1 -0
- package/dist/semantic-alignment-runtime.js +778 -0
- package/dist/semantic-alignment-runtime.js.map +1 -0
- package/dist/semantic-alignment-validation.d.ts +31 -0
- package/dist/semantic-alignment-validation.d.ts.map +1 -0
- package/dist/semantic-alignment-validation.js +477 -0
- package/dist/semantic-alignment-validation.js.map +1 -0
- package/dist/semantic-alignment.d.ts +8 -0
- package/dist/semantic-alignment.d.ts.map +1 -0
- package/dist/semantic-alignment.js +8 -0
- package/dist/semantic-alignment.js.map +1 -0
- package/dist/semantic-horizon-budget.d.ts +118 -0
- package/dist/semantic-horizon-budget.d.ts.map +1 -0
- package/dist/semantic-horizon-budget.js +536 -0
- package/dist/semantic-horizon-budget.js.map +1 -0
- package/dist/semantic-metric-engine.d.ts +96 -0
- package/dist/semantic-metric-engine.d.ts.map +1 -0
- package/dist/semantic-metric-engine.js +396 -0
- package/dist/semantic-metric-engine.js.map +1 -0
- package/package.json +79 -7
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
import { normalizeCheckpointTransferV1, normalizeRoleBindingV1, } from '@agentplat/runtime/adapter';
|
|
2
|
+
import { assertRoleAlignmentStateV1, closeRoleAlignmentStateV1, createRoleAlignmentPolicyRecordV1, createRoleAlignmentRoleAnchorV1, createRoleAlignmentStateV1, decisionForInactiveRoleAlignmentStateV1, digestRoleAlignmentJsonV1, findRoleAlignmentDecisionV1, observeRoleAlignmentSignalV1, rebindRoleAlignmentSessionV1, replaceRoleAlignmentRoleV1, resumeRoleAlignmentStateV1, } from './role-alignment.js';
|
|
3
|
+
import { assertDigest, assertExactKeys, assertIdentifier, assertSafeInteger, deepFreeze, } from './validation.js';
|
|
4
|
+
export class RoleAlignmentStoreConflictErrorV1 extends Error {
|
|
5
|
+
name = 'RoleAlignmentStoreConflictErrorV1';
|
|
6
|
+
constructor(message = 'role alignment state revision conflict') {
|
|
7
|
+
super(message);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export class InMemoryRoleAlignmentStateStoreV1 {
|
|
11
|
+
states = new Map();
|
|
12
|
+
async load(sessionId) {
|
|
13
|
+
assertIdentifier(sessionId, 'sessionId');
|
|
14
|
+
return this.states.get(sessionId);
|
|
15
|
+
}
|
|
16
|
+
async save(state, expectedRevision) {
|
|
17
|
+
assertIdentifier(state.sessionId, 'sessionId');
|
|
18
|
+
const current = this.states.get(state.sessionId);
|
|
19
|
+
if ((expectedRevision === null && current !== undefined) ||
|
|
20
|
+
(expectedRevision !== null && current?.revision !== expectedRevision))
|
|
21
|
+
throw new RoleAlignmentStoreConflictErrorV1();
|
|
22
|
+
this.states.set(state.sessionId, state);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function createRoleAlignmentPortableAgentControlV1(options) {
|
|
26
|
+
return new RoleAlignmentPortableAgentControl(options);
|
|
27
|
+
}
|
|
28
|
+
class RoleAlignmentPortableAgentControl {
|
|
29
|
+
controlId;
|
|
30
|
+
controlVersion;
|
|
31
|
+
implementationId;
|
|
32
|
+
binding;
|
|
33
|
+
policy;
|
|
34
|
+
assessorBinding;
|
|
35
|
+
assessor;
|
|
36
|
+
assessmentTtlMs;
|
|
37
|
+
stateStore;
|
|
38
|
+
decisionObserver;
|
|
39
|
+
constructor(options) {
|
|
40
|
+
if (!options || typeof options !== 'object')
|
|
41
|
+
throw new TypeError('role_alignment_options_required');
|
|
42
|
+
assertIdentifier(options.controlId, 'controlId');
|
|
43
|
+
assertSafeInteger(options.controlVersion, 'controlVersion', 1);
|
|
44
|
+
assertIdentifier(options.implementationId, 'implementationId');
|
|
45
|
+
const policyRecord = createRoleAlignmentPolicyRecordV1(options.policy);
|
|
46
|
+
const assessorBinding = validateAssessorBinding(options.assessorBinding);
|
|
47
|
+
if (!options.assessor || typeof options.assessor.assess !== 'function')
|
|
48
|
+
throw new TypeError('role_alignment_assessor_required');
|
|
49
|
+
assertSafeInteger(options.assessmentTtlMs, 'assessmentTtlMs', 1);
|
|
50
|
+
if (options.assessmentTtlMs >
|
|
51
|
+
policyRecord.policy.limits.maximumAssessmentTtlMs)
|
|
52
|
+
throw new TypeError('role_alignment_assessment_ttl_exceeds_policy');
|
|
53
|
+
if (options.stateStore !== undefined &&
|
|
54
|
+
(typeof options.stateStore.load !== 'function' ||
|
|
55
|
+
typeof options.stateStore.save !== 'function'))
|
|
56
|
+
throw new TypeError('role_alignment_state_store_invalid');
|
|
57
|
+
if (options.decisionObserver !== undefined &&
|
|
58
|
+
typeof options.decisionObserver.observe !== 'function')
|
|
59
|
+
throw new TypeError('role_alignment_decision_observer_invalid');
|
|
60
|
+
this.controlId = options.controlId;
|
|
61
|
+
this.controlVersion = options.controlVersion;
|
|
62
|
+
this.implementationId = options.implementationId;
|
|
63
|
+
this.policy = policyRecord.policy;
|
|
64
|
+
this.assessorBinding = assessorBinding;
|
|
65
|
+
this.assessor = options.assessor;
|
|
66
|
+
this.assessmentTtlMs = options.assessmentTtlMs;
|
|
67
|
+
this.stateStore =
|
|
68
|
+
options.stateStore ?? new InMemoryRoleAlignmentStateStoreV1();
|
|
69
|
+
this.decisionObserver = options.decisionObserver;
|
|
70
|
+
this.binding = deepFreeze({
|
|
71
|
+
policyId: policyRecord.policy.policyId,
|
|
72
|
+
policyVersion: policyRecord.policy.policyVersion,
|
|
73
|
+
policyDigest: policyRecord.policyDigest,
|
|
74
|
+
assessorId: assessorBinding.assessorId,
|
|
75
|
+
assessorVersion: assessorBinding.assessorVersion,
|
|
76
|
+
assessorBindingDigest: assessorBinding.assessorBindingDigest,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
async evaluate(target) {
|
|
80
|
+
try {
|
|
81
|
+
return await this.evaluateStrict(target);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return deepFreeze({
|
|
85
|
+
disposition: 'deny',
|
|
86
|
+
reasonCode: 'role_alignment_control_unavailable',
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async getState(sessionId) {
|
|
91
|
+
assertIdentifier(sessionId, 'sessionId');
|
|
92
|
+
const state = await this.stateStore.load(sessionId);
|
|
93
|
+
if (state === undefined)
|
|
94
|
+
return undefined;
|
|
95
|
+
assertRoleAlignmentStateV1(state, this.policy, this.stateBinding(sessionId));
|
|
96
|
+
return state;
|
|
97
|
+
}
|
|
98
|
+
async resumeSession(input) {
|
|
99
|
+
const state = await this.requireState(input.sessionId);
|
|
100
|
+
const next = resumeRoleAlignmentStateV1(state, input, this.policy);
|
|
101
|
+
await this.stateStore.save(next, state.revision);
|
|
102
|
+
return next;
|
|
103
|
+
}
|
|
104
|
+
async activateSessionRole(input) {
|
|
105
|
+
const state = await this.requireState(input.sessionId);
|
|
106
|
+
assertSafeInteger(input.expectedRevision, 'expectedRevision');
|
|
107
|
+
if (state.revision !== input.expectedRevision)
|
|
108
|
+
throw new RoleAlignmentStoreConflictErrorV1();
|
|
109
|
+
assertIdentifier(input.tenantId, 'tenantId');
|
|
110
|
+
assertIdentifier(input.agentId, 'agentId');
|
|
111
|
+
const role = normalizeRoleBindingV1(input.role);
|
|
112
|
+
const anchor = anchorFor({
|
|
113
|
+
tenantId: input.tenantId,
|
|
114
|
+
sessionId: input.sessionId,
|
|
115
|
+
agentId: input.agentId,
|
|
116
|
+
role,
|
|
117
|
+
});
|
|
118
|
+
if (anchor.anchorDigest === state.roleAnchor.anchorDigest)
|
|
119
|
+
return state;
|
|
120
|
+
const next = replaceRoleAlignmentRoleV1(state, {
|
|
121
|
+
expectedRevision: state.revision,
|
|
122
|
+
roleAnchor: anchor,
|
|
123
|
+
logicalTimeMs: input.logicalTimeMs,
|
|
124
|
+
}, this.policy);
|
|
125
|
+
await this.stateStore.save(next, state.revision);
|
|
126
|
+
return next;
|
|
127
|
+
}
|
|
128
|
+
async closeSession(input) {
|
|
129
|
+
const state = await this.requireState(input.sessionId);
|
|
130
|
+
const next = closeRoleAlignmentStateV1(state, input, this.policy);
|
|
131
|
+
if (next !== state)
|
|
132
|
+
await this.stateStore.save(next, state.revision);
|
|
133
|
+
return next;
|
|
134
|
+
}
|
|
135
|
+
async exportHandoff(input) {
|
|
136
|
+
const state = await this.requireState(input.sessionId);
|
|
137
|
+
const transfer = normalizeCheckpointTransferV1(input.checkpointTransfer, {
|
|
138
|
+
maximumStateBytes: this.policy.limits.maximumStateBytes,
|
|
139
|
+
});
|
|
140
|
+
assertSafeInteger(input.logicalTimeMs, 'logicalTimeMs');
|
|
141
|
+
if (input.logicalTimeMs < state.lastLogicalTimeMs ||
|
|
142
|
+
transfer.sourceSessionId !== state.sessionId ||
|
|
143
|
+
transfer.sourceAgentId !== state.agentId ||
|
|
144
|
+
transfer.objectiveId !== state.objectiveId ||
|
|
145
|
+
transfer.roleBindingId !== state.roleAnchor.roleBindingId)
|
|
146
|
+
throw new TypeError('role_alignment_handoff_binding_invalid');
|
|
147
|
+
const checkpointTransferDigest = digestRoleAlignmentJsonV1('handoff', transfer);
|
|
148
|
+
const withoutDigest = {
|
|
149
|
+
schemaVersion: 1,
|
|
150
|
+
contentClass: 'role_alignment_state',
|
|
151
|
+
controllerId: this.controlId,
|
|
152
|
+
controllerVersion: this.controlVersion,
|
|
153
|
+
implementationId: this.implementationId,
|
|
154
|
+
policyDigest: this.binding.policyDigest,
|
|
155
|
+
sourceSessionId: state.sessionId,
|
|
156
|
+
sourceAgentId: state.agentId,
|
|
157
|
+
sourceRoleAnchorDigest: state.roleAnchor.anchorDigest,
|
|
158
|
+
checkpointTransferDigest,
|
|
159
|
+
sourceState: state,
|
|
160
|
+
exportedAtLogicalMs: input.logicalTimeMs,
|
|
161
|
+
};
|
|
162
|
+
return deepFreeze({
|
|
163
|
+
...withoutDigest,
|
|
164
|
+
handoffDigest: digestRoleAlignmentJsonV1('handoff', withoutDigest),
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
async importHandoff(input) {
|
|
168
|
+
const transfer = normalizeCheckpointTransferV1(input.checkpointTransfer, {
|
|
169
|
+
maximumStateBytes: this.policy.limits.maximumStateBytes,
|
|
170
|
+
});
|
|
171
|
+
const handoff = this.validateHandoff(input.handoff, transfer);
|
|
172
|
+
assertIdentifier(input.targetSessionId, 'targetSessionId');
|
|
173
|
+
assertIdentifier(input.targetAgentId, 'targetAgentId');
|
|
174
|
+
assertSafeInteger(input.logicalTimeMs, 'logicalTimeMs');
|
|
175
|
+
if (input.logicalTimeMs < handoff.exportedAtLogicalMs)
|
|
176
|
+
throw new TypeError('role_alignment_clock_rollback');
|
|
177
|
+
const role = normalizeRoleBindingV1(input.targetRole);
|
|
178
|
+
if (role.objectiveId !== transfer.objectiveId)
|
|
179
|
+
throw new TypeError('role_alignment_handoff_objective_mismatch');
|
|
180
|
+
const targetAnchor = anchorFor({
|
|
181
|
+
tenantId: handoff.sourceState.tenantId,
|
|
182
|
+
sessionId: input.targetSessionId,
|
|
183
|
+
agentId: input.targetAgentId,
|
|
184
|
+
role,
|
|
185
|
+
});
|
|
186
|
+
const rebound = rebindRoleAlignmentSessionV1(handoff.sourceState, {
|
|
187
|
+
expectedRevision: handoff.sourceState.revision,
|
|
188
|
+
targetRoleAnchor: targetAnchor,
|
|
189
|
+
transferDigest: handoff.checkpointTransferDigest,
|
|
190
|
+
logicalTimeMs: input.logicalTimeMs,
|
|
191
|
+
}, this.policy);
|
|
192
|
+
await this.stateStore.save(rebound, null);
|
|
193
|
+
return rebound;
|
|
194
|
+
}
|
|
195
|
+
async evaluateStrict(target) {
|
|
196
|
+
validateControlTarget(target);
|
|
197
|
+
const logicalTimeMs = target.request.logicalTimeMs;
|
|
198
|
+
const role = normalizeRoleBindingV1(target.role);
|
|
199
|
+
const requestedAnchor = anchorFor({
|
|
200
|
+
tenantId: target.tenantId,
|
|
201
|
+
sessionId: target.sessionId,
|
|
202
|
+
agentId: target.agentId,
|
|
203
|
+
role,
|
|
204
|
+
});
|
|
205
|
+
let state = await this.stateStore.load(target.sessionId);
|
|
206
|
+
if (state === undefined) {
|
|
207
|
+
const created = createRoleAlignmentStateV1({
|
|
208
|
+
controllerId: this.controlId,
|
|
209
|
+
controllerVersion: this.controlVersion,
|
|
210
|
+
implementationId: this.implementationId,
|
|
211
|
+
policy: this.policy,
|
|
212
|
+
roleAnchor: requestedAnchor,
|
|
213
|
+
createdAtLogicalMs: logicalTimeMs,
|
|
214
|
+
});
|
|
215
|
+
await this.stateStore.save(created, null);
|
|
216
|
+
state = created;
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
assertRoleAlignmentStateV1(state, this.policy, this.stateBinding(target.sessionId));
|
|
220
|
+
if (state.tenantId !== target.tenantId ||
|
|
221
|
+
state.agentId !== target.agentId ||
|
|
222
|
+
state.objectiveId !== role.objectiveId)
|
|
223
|
+
throw new TypeError('role_alignment_target_binding_mismatch');
|
|
224
|
+
if (state.roleAnchor.anchorDigest !== requestedAnchor.anchorDigest) {
|
|
225
|
+
const replaced = replaceRoleAlignmentRoleV1(state, {
|
|
226
|
+
expectedRevision: state.revision,
|
|
227
|
+
roleAnchor: requestedAnchor,
|
|
228
|
+
logicalTimeMs,
|
|
229
|
+
}, this.policy);
|
|
230
|
+
await this.stateStore.save(replaced, state.revision);
|
|
231
|
+
state = replaced;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (state.status !== 'active')
|
|
235
|
+
return portableDecision(decisionForInactiveRoleAlignmentStateV1(state));
|
|
236
|
+
const targetDigest = digestRoleAlignmentJsonV1('target', target);
|
|
237
|
+
const retained = findRoleAlignmentDecisionV1(state, targetDigest);
|
|
238
|
+
if (retained !== undefined)
|
|
239
|
+
return portableDecision(retained);
|
|
240
|
+
const assessmentRequest = this.createAssessmentRequest(state, target, targetDigest);
|
|
241
|
+
const assessment = validateAssessment(await this.assessor.assess(assessmentRequest, target), assessmentRequest, this.assessorBinding);
|
|
242
|
+
const signal = assessmentToSignal(assessment, assessmentRequest, state.roleAnchor);
|
|
243
|
+
const reduced = observeRoleAlignmentSignalV1(state, { expectedRevision: state.revision, signal }, this.policy);
|
|
244
|
+
await this.stateStore.save(reduced.state, state.revision);
|
|
245
|
+
if (this.decisionObserver !== undefined) {
|
|
246
|
+
try {
|
|
247
|
+
await this.decisionObserver.observe(reduced);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
// Evidence sinks are deliberately outside the enforcement decision.
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return portableDecision(reduced.decision);
|
|
254
|
+
}
|
|
255
|
+
createAssessmentRequest(state, target, targetDigest) {
|
|
256
|
+
const createdAtLogicalMs = target.request.logicalTimeMs;
|
|
257
|
+
return deepFreeze({
|
|
258
|
+
schemaVersion: 1,
|
|
259
|
+
assessmentRequestId: `role-alignment:${state.sessionId}:${state.revision + 1}`,
|
|
260
|
+
targetDigest,
|
|
261
|
+
controllerId: this.controlId,
|
|
262
|
+
controllerVersion: this.controlVersion,
|
|
263
|
+
implementationId: this.implementationId,
|
|
264
|
+
policyId: this.binding.policyId,
|
|
265
|
+
policyVersion: this.binding.policyVersion,
|
|
266
|
+
policyDigest: this.binding.policyDigest,
|
|
267
|
+
tenantId: state.tenantId,
|
|
268
|
+
sessionId: state.sessionId,
|
|
269
|
+
agentId: state.agentId,
|
|
270
|
+
stepId: target.request.stepId,
|
|
271
|
+
checkpoint: target.checkpoint,
|
|
272
|
+
roleAnchorDigest: state.roleAnchor.anchorDigest,
|
|
273
|
+
roleRevision: state.roleAnchor.roleRevision,
|
|
274
|
+
stateRevision: state.revision,
|
|
275
|
+
previousRollingCoherenceBps: state.rollingCoherenceBps,
|
|
276
|
+
previousDegraded: state.degraded,
|
|
277
|
+
createdAtLogicalMs,
|
|
278
|
+
expiresAtLogicalMs: createdAtLogicalMs + this.assessmentTtlMs,
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
validateHandoff(input, transfer) {
|
|
282
|
+
assertExactKeys(input, [
|
|
283
|
+
'schemaVersion',
|
|
284
|
+
'contentClass',
|
|
285
|
+
'controllerId',
|
|
286
|
+
'controllerVersion',
|
|
287
|
+
'implementationId',
|
|
288
|
+
'policyDigest',
|
|
289
|
+
'sourceSessionId',
|
|
290
|
+
'sourceAgentId',
|
|
291
|
+
'sourceRoleAnchorDigest',
|
|
292
|
+
'checkpointTransferDigest',
|
|
293
|
+
'sourceState',
|
|
294
|
+
'exportedAtLogicalMs',
|
|
295
|
+
'handoffDigest',
|
|
296
|
+
], 'role alignment handoff');
|
|
297
|
+
if (input.schemaVersion !== 1 ||
|
|
298
|
+
input.contentClass !== 'role_alignment_state')
|
|
299
|
+
throw new TypeError('role_alignment_handoff_invalid');
|
|
300
|
+
for (const [label, value] of [
|
|
301
|
+
['controllerId', input.controllerId],
|
|
302
|
+
['implementationId', input.implementationId],
|
|
303
|
+
['sourceSessionId', input.sourceSessionId],
|
|
304
|
+
['sourceAgentId', input.sourceAgentId],
|
|
305
|
+
])
|
|
306
|
+
assertIdentifier(value, label);
|
|
307
|
+
assertSafeInteger(input.controllerVersion, 'controllerVersion', 1);
|
|
308
|
+
for (const [label, value] of [
|
|
309
|
+
['policyDigest', input.policyDigest],
|
|
310
|
+
['sourceRoleAnchorDigest', input.sourceRoleAnchorDigest],
|
|
311
|
+
['checkpointTransferDigest', input.checkpointTransferDigest],
|
|
312
|
+
['handoffDigest', input.handoffDigest],
|
|
313
|
+
])
|
|
314
|
+
assertDigest(value, label);
|
|
315
|
+
assertSafeInteger(input.exportedAtLogicalMs, 'exportedAtLogicalMs');
|
|
316
|
+
assertRoleAlignmentStateV1(input.sourceState, this.policy, this.stateBinding(input.sourceSessionId));
|
|
317
|
+
const { handoffDigest: _ignored, ...withoutDigest } = input;
|
|
318
|
+
if (digestRoleAlignmentJsonV1('handoff', withoutDigest) !== input.handoffDigest ||
|
|
319
|
+
input.controllerId !== this.controlId ||
|
|
320
|
+
input.controllerVersion !== this.controlVersion ||
|
|
321
|
+
input.implementationId !== this.implementationId ||
|
|
322
|
+
input.policyDigest !== this.binding.policyDigest ||
|
|
323
|
+
input.sourceSessionId !== input.sourceState.sessionId ||
|
|
324
|
+
input.sourceAgentId !== input.sourceState.agentId ||
|
|
325
|
+
input.sourceRoleAnchorDigest !==
|
|
326
|
+
input.sourceState.roleAnchor.anchorDigest ||
|
|
327
|
+
input.checkpointTransferDigest !==
|
|
328
|
+
digestRoleAlignmentJsonV1('handoff', transfer) ||
|
|
329
|
+
transfer.sourceSessionId !== input.sourceSessionId ||
|
|
330
|
+
transfer.sourceAgentId !== input.sourceAgentId ||
|
|
331
|
+
transfer.roleBindingId !== input.sourceState.roleAnchor.roleBindingId)
|
|
332
|
+
throw new TypeError('role_alignment_handoff_binding_invalid');
|
|
333
|
+
return input;
|
|
334
|
+
}
|
|
335
|
+
async requireState(sessionId) {
|
|
336
|
+
const state = await this.getState(sessionId);
|
|
337
|
+
if (state === undefined)
|
|
338
|
+
throw new TypeError('role_alignment_state_not_found');
|
|
339
|
+
return state;
|
|
340
|
+
}
|
|
341
|
+
stateBinding(sessionId) {
|
|
342
|
+
return {
|
|
343
|
+
controllerId: this.controlId,
|
|
344
|
+
controllerVersion: this.controlVersion,
|
|
345
|
+
implementationId: this.implementationId,
|
|
346
|
+
sessionId,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
function validateAssessorBinding(input) {
|
|
351
|
+
assertExactKeys(input, ['schemaVersion', 'assessorId', 'assessorVersion', 'assessorBindingDigest'], 'role alignment assessor binding');
|
|
352
|
+
if (input.schemaVersion !== 1)
|
|
353
|
+
throw new TypeError('role_alignment_assessor_binding_invalid');
|
|
354
|
+
assertIdentifier(input.assessorId, 'assessorId');
|
|
355
|
+
assertSafeInteger(input.assessorVersion, 'assessorVersion', 1);
|
|
356
|
+
assertDigest(input.assessorBindingDigest, 'assessorBindingDigest');
|
|
357
|
+
return deepFreeze({ ...input });
|
|
358
|
+
}
|
|
359
|
+
function validateAssessment(input, request, binding) {
|
|
360
|
+
assertExactKeys(input, [
|
|
361
|
+
'schemaVersion',
|
|
362
|
+
'assessmentId',
|
|
363
|
+
'assessmentRequestId',
|
|
364
|
+
'targetDigest',
|
|
365
|
+
'assessorId',
|
|
366
|
+
'assessorVersion',
|
|
367
|
+
'assessorBindingDigest',
|
|
368
|
+
'coherenceBps',
|
|
369
|
+
'uncertaintyBps',
|
|
370
|
+
'contextInconsistencyBps',
|
|
371
|
+
'hardViolation',
|
|
372
|
+
'reasonCodes',
|
|
373
|
+
'evidenceReferenceIds',
|
|
374
|
+
'assessedAtLogicalMs',
|
|
375
|
+
], 'role alignment assessment');
|
|
376
|
+
if (input.schemaVersion !== 1)
|
|
377
|
+
throw new TypeError('role_alignment_assessment_invalid');
|
|
378
|
+
assertIdentifier(input.assessmentId, 'assessmentId');
|
|
379
|
+
assertIdentifier(input.assessmentRequestId, 'assessmentRequestId');
|
|
380
|
+
assertDigest(input.targetDigest, 'targetDigest');
|
|
381
|
+
assertIdentifier(input.assessorId, 'assessorId');
|
|
382
|
+
assertSafeInteger(input.assessorVersion, 'assessorVersion', 1);
|
|
383
|
+
assertDigest(input.assessorBindingDigest, 'assessorBindingDigest');
|
|
384
|
+
for (const [label, value] of [
|
|
385
|
+
['coherenceBps', input.coherenceBps],
|
|
386
|
+
['uncertaintyBps', input.uncertaintyBps],
|
|
387
|
+
['contextInconsistencyBps', input.contextInconsistencyBps],
|
|
388
|
+
]) {
|
|
389
|
+
assertSafeInteger(value, label);
|
|
390
|
+
if (value > 10_000)
|
|
391
|
+
throw new TypeError('role_alignment_assessment_score_invalid');
|
|
392
|
+
}
|
|
393
|
+
if (typeof input.hardViolation !== 'boolean' ||
|
|
394
|
+
!Array.isArray(input.reasonCodes) ||
|
|
395
|
+
!Array.isArray(input.evidenceReferenceIds))
|
|
396
|
+
throw new TypeError('role_alignment_assessment_invalid');
|
|
397
|
+
for (const value of [...input.reasonCodes, ...input.evidenceReferenceIds])
|
|
398
|
+
assertIdentifier(value, 'assessment reference');
|
|
399
|
+
if (input.reasonCodes.some((value, index) => index > 0 && input.reasonCodes[index - 1] >= value) ||
|
|
400
|
+
input.evidenceReferenceIds.some((value, index) => index > 0 && input.evidenceReferenceIds[index - 1] >= value))
|
|
401
|
+
throw new TypeError('role_alignment_assessment_references_invalid');
|
|
402
|
+
assertSafeInteger(input.assessedAtLogicalMs, 'assessedAtLogicalMs');
|
|
403
|
+
if (input.assessmentRequestId !== request.assessmentRequestId ||
|
|
404
|
+
input.targetDigest !== request.targetDigest ||
|
|
405
|
+
input.assessorId !== binding.assessorId ||
|
|
406
|
+
input.assessorVersion !== binding.assessorVersion ||
|
|
407
|
+
input.assessorBindingDigest !== binding.assessorBindingDigest ||
|
|
408
|
+
input.assessedAtLogicalMs < request.createdAtLogicalMs ||
|
|
409
|
+
input.assessedAtLogicalMs >= request.expiresAtLogicalMs)
|
|
410
|
+
throw new TypeError('role_alignment_assessment_binding_invalid');
|
|
411
|
+
return deepFreeze({ ...input });
|
|
412
|
+
}
|
|
413
|
+
function assessmentToSignal(assessment, request, roleAnchor) {
|
|
414
|
+
return deepFreeze({
|
|
415
|
+
schemaVersion: 1,
|
|
416
|
+
signalId: assessment.assessmentId,
|
|
417
|
+
assessmentRequestId: assessment.assessmentRequestId,
|
|
418
|
+
assessorId: assessment.assessorId,
|
|
419
|
+
assessorVersion: assessment.assessorVersion,
|
|
420
|
+
assessorBindingDigest: assessment.assessorBindingDigest,
|
|
421
|
+
tenantId: request.tenantId,
|
|
422
|
+
sessionId: request.sessionId,
|
|
423
|
+
agentId: request.agentId,
|
|
424
|
+
stepId: request.stepId,
|
|
425
|
+
checkpoint: request.checkpoint,
|
|
426
|
+
roleAnchorDigest: roleAnchor.anchorDigest,
|
|
427
|
+
roleRevision: roleAnchor.roleRevision,
|
|
428
|
+
targetDigest: request.targetDigest,
|
|
429
|
+
coherenceBps: assessment.coherenceBps,
|
|
430
|
+
uncertaintyBps: assessment.uncertaintyBps,
|
|
431
|
+
contextInconsistencyBps: assessment.contextInconsistencyBps,
|
|
432
|
+
hardViolation: assessment.hardViolation,
|
|
433
|
+
reasonCodes: [...assessment.reasonCodes],
|
|
434
|
+
evidenceReferenceIds: [...assessment.evidenceReferenceIds],
|
|
435
|
+
observedAtLogicalMs: assessment.assessedAtLogicalMs,
|
|
436
|
+
expiresAtLogicalMs: request.expiresAtLogicalMs,
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
function anchorFor(input) {
|
|
440
|
+
return createRoleAlignmentRoleAnchorV1({
|
|
441
|
+
tenantId: input.tenantId,
|
|
442
|
+
sessionId: input.sessionId,
|
|
443
|
+
agentId: input.agentId,
|
|
444
|
+
objectiveId: input.role.objectiveId,
|
|
445
|
+
roleBindingId: input.role.roleBindingId,
|
|
446
|
+
roleRevision: input.role.roleRevision,
|
|
447
|
+
predecessorRoleBindingId: input.role.predecessorRoleBindingId,
|
|
448
|
+
roleKey: input.role.roleKey,
|
|
449
|
+
roleContent: {
|
|
450
|
+
instructions: [...input.role.instructions],
|
|
451
|
+
constraints: input.role.constraints,
|
|
452
|
+
validFromLogicalMs: input.role.validFromLogicalMs,
|
|
453
|
+
validUntilLogicalMs: input.role.validUntilLogicalMs,
|
|
454
|
+
},
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
function validateControlTarget(target) {
|
|
458
|
+
if (!target || typeof target !== 'object' || target.schemaVersion !== 1)
|
|
459
|
+
throw new TypeError('role_alignment_target_invalid');
|
|
460
|
+
for (const [label, value] of [
|
|
461
|
+
['sessionId', target.sessionId],
|
|
462
|
+
['tenantId', target.tenantId],
|
|
463
|
+
['agentId', target.agentId],
|
|
464
|
+
['stepId', target.request?.stepId],
|
|
465
|
+
])
|
|
466
|
+
assertIdentifier(value, label);
|
|
467
|
+
if (!['pre_step', 'post_output', 'pre_action'].includes(target.checkpoint))
|
|
468
|
+
throw new TypeError('role_alignment_checkpoint_invalid');
|
|
469
|
+
assertSafeInteger(target.stepSequence, 'stepSequence', 1);
|
|
470
|
+
const checkpointItemIndex = target.checkpointItemIndex ?? 0;
|
|
471
|
+
assertSafeInteger(checkpointItemIndex, 'checkpointItemIndex', 0);
|
|
472
|
+
if (checkpointItemIndex > 4_095 ||
|
|
473
|
+
(target.checkpoint === 'pre_step' && checkpointItemIndex !== 0))
|
|
474
|
+
throw new TypeError('role_alignment_checkpoint_item_index_invalid');
|
|
475
|
+
assertSafeInteger(target.request.logicalTimeMs, 'logicalTimeMs');
|
|
476
|
+
normalizeRoleBindingV1(target.role);
|
|
477
|
+
}
|
|
478
|
+
function portableDecision(decision) {
|
|
479
|
+
return deepFreeze({
|
|
480
|
+
disposition: decision.disposition,
|
|
481
|
+
reasonCode: decision.reasonCode,
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
//# sourceMappingURL=role-alignment-portable-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-alignment-portable-agent.js","sourceRoot":"","sources":["../src/role-alignment-portable-agent.ts"],"names":[],"mappings":"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"}
|