@claude-flow/plugin-agent-federation 1.0.0-alpha.5 → 1.0.0-alpha.7
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/dist/application/federation-breaker-service.d.ts +182 -0
- package/dist/application/federation-breaker-service.d.ts.map +1 -0
- package/dist/application/federation-breaker-service.js +251 -0
- package/dist/application/federation-breaker-service.js.map +1 -0
- package/dist/application/federation-coordinator.d.ts +72 -1
- package/dist/application/federation-coordinator.d.ts.map +1 -1
- package/dist/application/federation-coordinator.js +164 -2
- package/dist/application/federation-coordinator.js.map +1 -1
- package/dist/application/policy-engine.d.ts.map +1 -1
- package/dist/application/policy-engine.js +9 -0
- package/dist/application/policy-engine.js.map +1 -1
- package/dist/domain/entities/federation-envelope.d.ts +1 -1
- package/dist/domain/entities/federation-envelope.d.ts.map +1 -1
- package/dist/domain/entities/federation-envelope.js +3 -0
- package/dist/domain/entities/federation-envelope.js.map +1 -1
- package/dist/domain/entities/federation-node.d.ts +55 -0
- package/dist/domain/entities/federation-node.d.ts.map +1 -1
- package/dist/domain/entities/federation-node.js +86 -0
- package/dist/domain/entities/federation-node.js.map +1 -1
- package/dist/domain/value-objects/federation-budget.d.ts +89 -0
- package/dist/domain/value-objects/federation-budget.d.ts.map +1 -0
- package/dist/domain/value-objects/federation-budget.js +165 -0
- package/dist/domain/value-objects/federation-budget.js.map +1 -0
- package/dist/domain/value-objects/federation-node-state.d.ts +92 -0
- package/dist/domain/value-objects/federation-node-state.d.ts.map +1 -0
- package/dist/domain/value-objects/federation-node-state.js +100 -0
- package/dist/domain/value-objects/federation-node-state.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-tools.d.ts.map +1 -1
- package/dist/mcp-tools.js +98 -2
- package/dist/mcp-tools.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { TrustLevel } from '../domain/entities/trust-level.js';
|
|
2
|
+
import { FederationNodeState, } from '../domain/value-objects/federation-node-state.js';
|
|
3
|
+
import { enforceBudget, validateBudget, } from '../domain/value-objects/federation-budget.js';
|
|
2
4
|
export class FederationCoordinator {
|
|
3
5
|
config;
|
|
4
6
|
discovery;
|
|
@@ -65,8 +67,29 @@ export class FederationCoordinator {
|
|
|
65
67
|
}
|
|
66
68
|
this.discovery.removePeer(nodeId);
|
|
67
69
|
}
|
|
68
|
-
async sendMessage(targetNodeId, messageType, payload) {
|
|
70
|
+
async sendMessage(targetNodeId, messageType, payload, options = {}) {
|
|
69
71
|
this.ensureInitialized();
|
|
72
|
+
// ADR-097 Phase 2.b: outbound short-circuit on tripped breaker. If the
|
|
73
|
+
// peer is SUSPENDED or EVICTED we refuse the send before doing any work,
|
|
74
|
+
// and emit a constant-string error (no remaining-budget echo per the
|
|
75
|
+
// anti-oracle posture inherited from Phase 1). The check fires *before*
|
|
76
|
+
// session lookup so an evicted peer cannot consume cycles even on a
|
|
77
|
+
// dangling session reference.
|
|
78
|
+
const peer = this.discovery.getPeer(targetNodeId);
|
|
79
|
+
if (peer && !peer.isActive) {
|
|
80
|
+
const reason = peer.isEvicted ? 'PEER_EVICTED' : 'PEER_SUSPENDED';
|
|
81
|
+
await this.audit.log('message_rejected', {
|
|
82
|
+
targetNodeId,
|
|
83
|
+
metadata: { reason },
|
|
84
|
+
});
|
|
85
|
+
return {
|
|
86
|
+
success: false,
|
|
87
|
+
mode: 'direct',
|
|
88
|
+
envelopeId: '',
|
|
89
|
+
targetNodeIds: [targetNodeId],
|
|
90
|
+
error: reason,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
70
93
|
const session = this.findSessionByNodeId(targetNodeId);
|
|
71
94
|
if (!session) {
|
|
72
95
|
return {
|
|
@@ -92,15 +115,63 @@ export class FederationCoordinator {
|
|
|
92
115
|
error: policyResult.reason,
|
|
93
116
|
};
|
|
94
117
|
}
|
|
118
|
+
// ADR-097 Phase 1: validate caller-supplied budget + enforce hop limit
|
|
119
|
+
// and cumulative spend BEFORE outbound dispatch. Synchronous & atomic —
|
|
120
|
+
// no awaits between validate and enforce, so concurrent sends cannot
|
|
121
|
+
// both pass a single-hop budget. Errors are constant strings so a
|
|
122
|
+
// malicious caller cannot use the response as a budget oracle.
|
|
123
|
+
const budgetResult = validateBudget(options.budget, options.maxHops);
|
|
124
|
+
if (!budgetResult.ok) {
|
|
125
|
+
await this.audit.log('message_rejected', {
|
|
126
|
+
targetNodeId,
|
|
127
|
+
sessionId: session.sessionId,
|
|
128
|
+
metadata: { reason: 'INVALID_BUDGET', detail: budgetResult.error },
|
|
129
|
+
});
|
|
130
|
+
return {
|
|
131
|
+
success: false,
|
|
132
|
+
mode: 'direct',
|
|
133
|
+
envelopeId: '',
|
|
134
|
+
targetNodeIds: [targetNodeId],
|
|
135
|
+
error: 'INVALID_BUDGET',
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const enforcement = enforceBudget(budgetResult.budget, options.hopCount ?? 0, {
|
|
139
|
+
tokens: options.spent?.tokens ?? 0,
|
|
140
|
+
usd: options.spent?.usd ?? 0,
|
|
141
|
+
});
|
|
142
|
+
if (!enforcement.ok) {
|
|
143
|
+
await this.audit.log('message_rejected', {
|
|
144
|
+
targetNodeId,
|
|
145
|
+
sessionId: session.sessionId,
|
|
146
|
+
metadata: { reason: enforcement.reason },
|
|
147
|
+
});
|
|
148
|
+
return {
|
|
149
|
+
success: false,
|
|
150
|
+
mode: 'direct',
|
|
151
|
+
envelopeId: '',
|
|
152
|
+
targetNodeIds: [targetNodeId],
|
|
153
|
+
error: enforcement.reason, // constant string — no oracle leak
|
|
154
|
+
};
|
|
155
|
+
}
|
|
95
156
|
const result = await this.routing.send(session, messageType, payload);
|
|
96
157
|
await this.audit.log(result.success ? 'message_sent' : 'message_rejected', {
|
|
97
158
|
targetNodeId,
|
|
98
159
|
sessionId: session.sessionId,
|
|
99
160
|
latencyMs: result.latencyMs,
|
|
100
|
-
metadata: {
|
|
161
|
+
metadata: {
|
|
162
|
+
messageType,
|
|
163
|
+
mode: result.mode,
|
|
164
|
+
hopCount: enforcement.nextHopCount,
|
|
165
|
+
},
|
|
101
166
|
});
|
|
102
167
|
return result;
|
|
103
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Re-export the budget primitives so external callers (e.g. follow-up
|
|
171
|
+
* iterations adding receive-side decrement) can reuse them without
|
|
172
|
+
* dipping into domain/value-objects directly.
|
|
173
|
+
*/
|
|
174
|
+
static budget = { validate: validateBudget, enforce: enforceBudget };
|
|
104
175
|
async broadcastMessage(messageType, payload) {
|
|
105
176
|
this.ensureInitialized();
|
|
106
177
|
return this.routing.broadcast(messageType, payload);
|
|
@@ -153,6 +224,97 @@ export class FederationCoordinator {
|
|
|
153
224
|
healthy: this.initialized,
|
|
154
225
|
};
|
|
155
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* ADR-097 Phase 4: per-peer breaker state snapshot for the doctor
|
|
229
|
+
* surface and `federation_breaker_status` MCP tool.
|
|
230
|
+
*
|
|
231
|
+
* Returns one entry per known peer with the entity's stateRecord —
|
|
232
|
+
* what state, when it changed, why, and which caller's correlation
|
|
233
|
+
* key triggered it. Pure read; does not mutate.
|
|
234
|
+
*/
|
|
235
|
+
getPeerStates() {
|
|
236
|
+
return this.discovery.listPeers().map((peer) => ({
|
|
237
|
+
nodeId: peer.nodeId,
|
|
238
|
+
...peer.stateRecord,
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Aggregated counts for the doctor surface — `{ active: N, suspended: M,
|
|
243
|
+
* evicted: K }`. Cheap O(peers) sweep; safe to call from a status line.
|
|
244
|
+
*/
|
|
245
|
+
getPeerStateCounts() {
|
|
246
|
+
let active = 0;
|
|
247
|
+
let suspended = 0;
|
|
248
|
+
let evicted = 0;
|
|
249
|
+
for (const peer of this.discovery.listPeers()) {
|
|
250
|
+
switch (peer.state) {
|
|
251
|
+
case FederationNodeState.ACTIVE:
|
|
252
|
+
active++;
|
|
253
|
+
break;
|
|
254
|
+
case FederationNodeState.SUSPENDED:
|
|
255
|
+
suspended++;
|
|
256
|
+
break;
|
|
257
|
+
case FederationNodeState.EVICTED:
|
|
258
|
+
evicted++;
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return { active, suspended, evicted };
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Operator-initiated evict. Returns true on transition, false if the
|
|
266
|
+
* peer was already EVICTED or unknown. Logs to audit either way.
|
|
267
|
+
*
|
|
268
|
+
* Does NOT remove the peer from the discovery registry — `leavePeer`
|
|
269
|
+
* is the registry-removal API. Eviction is the breaker layer; the peer
|
|
270
|
+
* remains queryable so the operator can later reactivate.
|
|
271
|
+
*/
|
|
272
|
+
async evictPeer(nodeId, reason = 'MANUAL_EVICT', correlationId) {
|
|
273
|
+
this.ensureInitialized();
|
|
274
|
+
const peer = this.discovery.getPeer(nodeId);
|
|
275
|
+
if (!peer)
|
|
276
|
+
return false;
|
|
277
|
+
const ok = peer.evict({ reason, correlationId });
|
|
278
|
+
await this.audit.log('threat_blocked', {
|
|
279
|
+
targetNodeId: nodeId,
|
|
280
|
+
metadata: {
|
|
281
|
+
reason,
|
|
282
|
+
correlationId: correlationId ?? null,
|
|
283
|
+
state: peer.state,
|
|
284
|
+
applied: ok,
|
|
285
|
+
},
|
|
286
|
+
});
|
|
287
|
+
if (ok) {
|
|
288
|
+
const session = this.findSessionByNodeId(nodeId);
|
|
289
|
+
if (session) {
|
|
290
|
+
session.terminate();
|
|
291
|
+
this.sessions.delete(session.sessionId);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return ok;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Operator-initiated reactivate. Used after an integrator-supplied
|
|
298
|
+
* health probe confirms a SUSPENDED peer is healthy, OR as an
|
|
299
|
+
* operator-override escape from EVICTED. Returns true on transition.
|
|
300
|
+
*/
|
|
301
|
+
async reactivatePeer(nodeId, correlationId) {
|
|
302
|
+
this.ensureInitialized();
|
|
303
|
+
const peer = this.discovery.getPeer(nodeId);
|
|
304
|
+
if (!peer)
|
|
305
|
+
return false;
|
|
306
|
+
const ok = peer.reactivate(correlationId);
|
|
307
|
+
await this.audit.log('trust_level_changed', {
|
|
308
|
+
targetNodeId: nodeId,
|
|
309
|
+
metadata: {
|
|
310
|
+
action: 'reactivate',
|
|
311
|
+
correlationId: correlationId ?? null,
|
|
312
|
+
state: peer.state,
|
|
313
|
+
applied: ok,
|
|
314
|
+
},
|
|
315
|
+
});
|
|
316
|
+
return ok;
|
|
317
|
+
}
|
|
156
318
|
getSession(sessionId) {
|
|
157
319
|
return this.sessions.get(sessionId);
|
|
158
320
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation-coordinator.js","sourceRoot":"","sources":["../../src/application/federation-coordinator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"federation-coordinator.js","sourceRoot":"","sources":["../../src/application/federation-coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-engine.d.ts","sourceRoot":"","sources":["../../src/application/policy-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,KAAK,SAAS,EAAgB,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,4CAA4C,CAAC;AACnI,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAEvF,MAAM,MAAM,mBAAmB,GAC3B,qBAAqB,GACrB,oBAAoB,GACpB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC/D,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC;IAC3C,QAAQ,CAAC,sBAAsB,EAAE,UAAU,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxD,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"policy-engine.d.ts","sourceRoot":"","sources":["../../src/application/policy-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,KAAK,SAAS,EAAgB,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,4CAA4C,CAAC;AACnI,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAEvF,MAAM,MAAM,mBAAmB,GAC3B,qBAAqB,GACrB,oBAAoB,GACpB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC/D,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC;IAC3C,QAAQ,CAAC,sBAAsB,EAAE,UAAU,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxD,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AA4CD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC;CACrD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsD;gBAGtF,IAAI,EAAE,gBAAgB,EACtB,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EACxC,SAAS,CAAC,EAAE,eAAe;IAc7B,eAAe,CACb,WAAW,EAAE,qBAAqB,EAClC,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,GACnB,sBAAsB;IAyDzB,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,GAAG,SAAS;IAWhF,mBAAmB,CACjB,YAAY,EAAE,UAAU,EACxB,aAAa,EAAE,UAAU,GACxB;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,qBAAqB,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAgCvE,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,0BAA0B;CAyBnC"}
|
|
@@ -29,6 +29,15 @@ const CLAIMS_FOR_MESSAGE_TYPE = {
|
|
|
29
29
|
'handshake-accept': ['federation:connect'],
|
|
30
30
|
'handshake-reject': ['federation:connect'],
|
|
31
31
|
'session-terminate': ['federation:connect'],
|
|
32
|
+
// ADR-101 Component C — federated claims operations.
|
|
33
|
+
// claim-event: broadcasts a ClaimDomainEvent (state mutation across peers),
|
|
34
|
+
// same authorization shape as task-assignment.
|
|
35
|
+
'claim-event': ['federation:write'],
|
|
36
|
+
// agent-handoff: transfers claim ownership to a remote agent. Requires
|
|
37
|
+
// both the write capability (state mutation) AND spawn-lifecycle authority
|
|
38
|
+
// (handoff is a sibling of agent-spawn — both reshape who owns work).
|
|
39
|
+
// Matches the consensus-gated security posture in ADR-101.
|
|
40
|
+
'agent-handoff': ['federation:write', 'federation:spawn'],
|
|
32
41
|
};
|
|
33
42
|
export class PolicyEngine {
|
|
34
43
|
deps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-engine.js","sourceRoot":"","sources":["../../src/application/policy-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAgCnF,MAAM,uBAAuB,GAAmB;IAC9C,mBAAmB,EAAE,SAAS;IAC9B,oBAAoB,EAAE,GAAG;IACzB,mBAAmB,EAAE;QACnB,iBAAiB,EAAE,cAAc,EAAE,iBAAiB;QACpD,eAAe,EAAE,kBAAkB,EAAE,WAAW;QAChD,cAAc,EAAE,iBAAiB,EAAE,aAAa;KACjD;IACD,cAAc,EAAE,IAAI;IACpB,oBAAoB,EAAE,IAAI;IAC1B,qBAAqB,EAAE,UAAU,CAAC,QAAQ;IAC1C,sBAAsB,EAAE,UAAU,CAAC,OAAO;IAC1C,qBAAqB,EAAE,UAAU,CAAC,UAAU;CAC7C,CAAC;AAEF,MAAM,uBAAuB,GAAyD;IACpF,iBAAiB,EAAE,CAAC,kBAAkB,CAAC;IACvC,cAAc,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IACxD,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAC3D,eAAe,EAAE,CAAC,kBAAkB,CAAC;IACrC,kBAAkB,EAAE,CAAC,iBAAiB,CAAC;IACvC,cAAc,EAAE,CAAC,kBAAkB,CAAC;IACpC,iBAAiB,EAAE,CAAC,kBAAkB,CAAC;IACvC,aAAa,EAAE,CAAC,kBAAkB,CAAC;IACnC,WAAW,EAAE,CAAC,oBAAoB,CAAC;IACnC,WAAW,EAAE,CAAC,oBAAoB,CAAC;IACnC,oBAAoB,EAAE,CAAC,oBAAoB,CAAC;IAC5C,gBAAgB,EAAE,CAAC,oBAAoB,CAAC;IACxC,kBAAkB,EAAE,CAAC,oBAAoB,CAAC;IAC1C,kBAAkB,EAAE,CAAC,oBAAoB,CAAC;IAC1C,mBAAmB,EAAE,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"policy-engine.js","sourceRoot":"","sources":["../../src/application/policy-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type FederationMessageType = 'task-assignment' | 'memory-query' | 'memory-response' | 'context-share' | 'status-broadcast' | 'trust-change' | 'topology-change' | 'agent-spawn' | 'heartbeat' | 'challenge' | 'challenge-response' | 'handshake-init' | 'handshake-accept' | 'handshake-reject' | 'session-terminate';
|
|
1
|
+
export type FederationMessageType = 'task-assignment' | 'memory-query' | 'memory-response' | 'context-share' | 'status-broadcast' | 'trust-change' | 'topology-change' | 'agent-spawn' | 'heartbeat' | 'challenge' | 'challenge-response' | 'handshake-init' | 'handshake-accept' | 'handshake-reject' | 'session-terminate' | 'claim-event' | 'agent-handoff';
|
|
2
2
|
export type PIIScanAction = 'pass' | 'redact' | 'hash' | 'block';
|
|
3
3
|
export interface PIIScanResult {
|
|
4
4
|
readonly scanned: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation-envelope.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/federation-envelope.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,WAAW,GACX,WAAW,GACX,oBAAoB,GACpB,gBAAgB,GAChB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"federation-envelope.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/federation-envelope.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,WAAW,GACX,WAAW,GACX,oBAAoB,GACpB,gBAAgB,GAChB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GAEnB,aAAa,GACb,eAAe,CAAC;AAEpB,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACjD,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IAClD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,GAAG,OAAO;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAED,qBAAa,kBAAkB,CAAC,CAAC,GAAG,OAAO;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;gBAE1B,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAa7C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAejC,iBAAiB,IAAI,MAAM;IAa3B,MAAM,CAAC,eAAe,IAAI,aAAa;CASxC;AAED,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,qBAAqB,CAOtE,CAAC"}
|
|
@@ -64,5 +64,8 @@ export const CONSENSUS_REQUIRED_TYPES = new Set([
|
|
|
64
64
|
'trust-change',
|
|
65
65
|
'topology-change',
|
|
66
66
|
'agent-spawn',
|
|
67
|
+
// ADR-101 Component C: handoffs cross trust boundaries — optionally
|
|
68
|
+
// require quorum from validators in high-trust deployments.
|
|
69
|
+
'agent-handoff',
|
|
67
70
|
]);
|
|
68
71
|
//# sourceMappingURL=federation-envelope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation-envelope.js","sourceRoot":"","sources":["../../../src/domain/entities/federation-envelope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"federation-envelope.js","sourceRoot":"","sources":["../../../src/domain/entities/federation-envelope.ts"],"names":[],"mappings":"AAiDA,MAAM,OAAO,kBAAkB;IACpB,UAAU,CAAS;IACnB,YAAY,CAAS;IACrB,YAAY,CAAS;IACrB,SAAS,CAAS;IAClB,WAAW,CAAwB;IACnC,OAAO,CAAI;IACX,SAAS,CAAO;IAChB,KAAK,CAAS;IACd,aAAa,CAAS;IACtB,aAAa,CAAgB;IAEtC,YAAY,KAAiC;QAC3C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAC3C,CAAC;IAED,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC1D,CAAC;IAED,MAAM;QACJ,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,eAAe;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,EAAE;YAClB,cAAc,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAuC,IAAI,GAAG,CAAC;IAClF,cAAc;IACd,iBAAiB;IACjB,aAAa;IACb,oEAAoE;IACpE,4DAA4D;IAC5D,eAAe;CAChB,CAAC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TrustLevel } from './trust-level.js';
|
|
2
|
+
import { FederationNodeState, SuspensionReason, TransitionReason } from '../value-objects/federation-node-state.js';
|
|
2
3
|
export interface FederationNodeCapabilities {
|
|
3
4
|
readonly agentTypes: readonly string[];
|
|
4
5
|
readonly maxConcurrentSessions: number;
|
|
@@ -11,6 +12,13 @@ export interface FederationNodeMetadata {
|
|
|
11
12
|
readonly version?: string;
|
|
12
13
|
readonly [key: string]: unknown;
|
|
13
14
|
}
|
|
15
|
+
/** Last-transition record kept on the entity for the audit trail. */
|
|
16
|
+
export interface FederationNodeStateRecord {
|
|
17
|
+
readonly state: FederationNodeState;
|
|
18
|
+
readonly changedAt: Date;
|
|
19
|
+
readonly reason?: SuspensionReason;
|
|
20
|
+
readonly correlationId?: string;
|
|
21
|
+
}
|
|
14
22
|
export interface FederationNodeProps {
|
|
15
23
|
readonly nodeId: string;
|
|
16
24
|
readonly publicKey: string;
|
|
@@ -20,6 +28,14 @@ export interface FederationNodeProps {
|
|
|
20
28
|
readonly trustScore: number;
|
|
21
29
|
readonly lastSeen: Date;
|
|
22
30
|
readonly metadata: FederationNodeMetadata;
|
|
31
|
+
/** Phase 2: peer state. Defaults to ACTIVE if unset. */
|
|
32
|
+
readonly state?: FederationNodeState;
|
|
33
|
+
/** Phase 2: when the current state was entered. Defaults to now. */
|
|
34
|
+
readonly stateChangedAt?: Date;
|
|
35
|
+
/** Phase 2: why we entered the current non-ACTIVE state. */
|
|
36
|
+
readonly stateReason?: SuspensionReason;
|
|
37
|
+
/** Phase 2: caller correlation key for the last transition. */
|
|
38
|
+
readonly stateCorrelationId?: string;
|
|
23
39
|
}
|
|
24
40
|
export declare class FederationNode {
|
|
25
41
|
readonly nodeId: string;
|
|
@@ -30,15 +46,54 @@ export declare class FederationNode {
|
|
|
30
46
|
private _trustScore;
|
|
31
47
|
private _lastSeen;
|
|
32
48
|
private readonly _metadata;
|
|
49
|
+
private _state;
|
|
50
|
+
private _stateChangedAt;
|
|
51
|
+
private _stateReason?;
|
|
52
|
+
private _stateCorrelationId?;
|
|
33
53
|
constructor(props: FederationNodeProps);
|
|
34
54
|
get trustLevel(): TrustLevel;
|
|
35
55
|
get trustScore(): number;
|
|
36
56
|
get lastSeen(): Date;
|
|
37
57
|
get metadata(): FederationNodeMetadata;
|
|
58
|
+
/** Current peer state (ADR-097 Phase 2). */
|
|
59
|
+
get state(): FederationNodeState;
|
|
60
|
+
/** When the current state was entered. */
|
|
61
|
+
get stateChangedAt(): Date;
|
|
62
|
+
/** Last-transition record for the audit trail. */
|
|
63
|
+
get stateRecord(): FederationNodeStateRecord;
|
|
64
|
+
/** Convenience predicate: is this peer accepting outbound sends? */
|
|
65
|
+
get isActive(): boolean;
|
|
66
|
+
/** Convenience predicate: is this peer terminally evicted? */
|
|
67
|
+
get isEvicted(): boolean;
|
|
38
68
|
updateTrustLevel(level: TrustLevel): void;
|
|
39
69
|
updateTrustScore(score: number): void;
|
|
40
70
|
markSeen(): void;
|
|
41
71
|
isStale(maxAgeMs: number): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Transition this peer to SUSPENDED. Legal from ACTIVE only — calling
|
|
74
|
+
* from SUSPENDED or EVICTED returns false (the entity is already at or
|
|
75
|
+
* past the breaker threshold, so a duplicate trip is a no-op).
|
|
76
|
+
*
|
|
77
|
+
* Returns true if the state changed, false if the call was rejected
|
|
78
|
+
* (illegal transition). The breaker treats false as "already handled."
|
|
79
|
+
*/
|
|
80
|
+
suspend(reason: TransitionReason, now?: Date): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Transition this peer to EVICTED. Legal from ACTIVE or SUSPENDED.
|
|
83
|
+
* EVICTED is terminal under normal flow — only `reactivate` (operator-
|
|
84
|
+
* initiated) can move the peer back to ACTIVE.
|
|
85
|
+
*/
|
|
86
|
+
evict(reason: TransitionReason, now?: Date): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Transition back to ACTIVE. Legal from SUSPENDED (after cooldown +
|
|
89
|
+
* probe success — the breaker is responsible for those checks; this
|
|
90
|
+
* entity does not gate on time) or from EVICTED (operator override).
|
|
91
|
+
*
|
|
92
|
+
* `correlationId` lets the caller record *why* they're reactivating
|
|
93
|
+
* (probe ID, operator ticket, etc.) for the audit trail.
|
|
94
|
+
*/
|
|
95
|
+
reactivate(correlationId?: string, now?: Date): boolean;
|
|
96
|
+
private _transition;
|
|
42
97
|
toProps(): FederationNodeProps;
|
|
43
98
|
static create(props: Omit<FederationNodeProps, 'trustLevel' | 'trustScore' | 'lastSeen'> & {
|
|
44
99
|
trustLevel?: TrustLevel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation-node.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/federation-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"federation-node.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/federation-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TrustLevel } from './trust-level.js';
|
|
2
|
+
import { FederationNodeState, canTransition, } from '../value-objects/federation-node-state.js';
|
|
2
3
|
export class FederationNode {
|
|
3
4
|
nodeId;
|
|
4
5
|
publicKey;
|
|
@@ -8,6 +9,13 @@ export class FederationNode {
|
|
|
8
9
|
_trustScore;
|
|
9
10
|
_lastSeen;
|
|
10
11
|
_metadata;
|
|
12
|
+
// Phase 2 state machine. Mutated only via suspend()/evict()/reactivate().
|
|
13
|
+
// Direct field writes are not permitted — every transition flows through
|
|
14
|
+
// canTransition() in federation-node-state.ts.
|
|
15
|
+
_state;
|
|
16
|
+
_stateChangedAt;
|
|
17
|
+
_stateReason;
|
|
18
|
+
_stateCorrelationId;
|
|
11
19
|
constructor(props) {
|
|
12
20
|
this.nodeId = props.nodeId;
|
|
13
21
|
this.publicKey = props.publicKey;
|
|
@@ -17,6 +25,10 @@ export class FederationNode {
|
|
|
17
25
|
this._trustScore = props.trustScore;
|
|
18
26
|
this._lastSeen = props.lastSeen;
|
|
19
27
|
this._metadata = props.metadata;
|
|
28
|
+
this._state = props.state ?? FederationNodeState.ACTIVE;
|
|
29
|
+
this._stateChangedAt = props.stateChangedAt ?? new Date();
|
|
30
|
+
this._stateReason = props.stateReason;
|
|
31
|
+
this._stateCorrelationId = props.stateCorrelationId;
|
|
20
32
|
}
|
|
21
33
|
get trustLevel() {
|
|
22
34
|
return this._trustLevel;
|
|
@@ -30,6 +42,31 @@ export class FederationNode {
|
|
|
30
42
|
get metadata() {
|
|
31
43
|
return this._metadata;
|
|
32
44
|
}
|
|
45
|
+
/** Current peer state (ADR-097 Phase 2). */
|
|
46
|
+
get state() {
|
|
47
|
+
return this._state;
|
|
48
|
+
}
|
|
49
|
+
/** When the current state was entered. */
|
|
50
|
+
get stateChangedAt() {
|
|
51
|
+
return this._stateChangedAt;
|
|
52
|
+
}
|
|
53
|
+
/** Last-transition record for the audit trail. */
|
|
54
|
+
get stateRecord() {
|
|
55
|
+
return {
|
|
56
|
+
state: this._state,
|
|
57
|
+
changedAt: this._stateChangedAt,
|
|
58
|
+
reason: this._stateReason,
|
|
59
|
+
correlationId: this._stateCorrelationId,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Convenience predicate: is this peer accepting outbound sends? */
|
|
63
|
+
get isActive() {
|
|
64
|
+
return this._state === FederationNodeState.ACTIVE;
|
|
65
|
+
}
|
|
66
|
+
/** Convenience predicate: is this peer terminally evicted? */
|
|
67
|
+
get isEvicted() {
|
|
68
|
+
return this._state === FederationNodeState.EVICTED;
|
|
69
|
+
}
|
|
33
70
|
updateTrustLevel(level) {
|
|
34
71
|
this._trustLevel = level;
|
|
35
72
|
}
|
|
@@ -42,6 +79,51 @@ export class FederationNode {
|
|
|
42
79
|
isStale(maxAgeMs) {
|
|
43
80
|
return Date.now() - this._lastSeen.getTime() > maxAgeMs;
|
|
44
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Transition this peer to SUSPENDED. Legal from ACTIVE only — calling
|
|
84
|
+
* from SUSPENDED or EVICTED returns false (the entity is already at or
|
|
85
|
+
* past the breaker threshold, so a duplicate trip is a no-op).
|
|
86
|
+
*
|
|
87
|
+
* Returns true if the state changed, false if the call was rejected
|
|
88
|
+
* (illegal transition). The breaker treats false as "already handled."
|
|
89
|
+
*/
|
|
90
|
+
suspend(reason, now = new Date()) {
|
|
91
|
+
return this._transition(FederationNodeState.SUSPENDED, reason, now);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Transition this peer to EVICTED. Legal from ACTIVE or SUSPENDED.
|
|
95
|
+
* EVICTED is terminal under normal flow — only `reactivate` (operator-
|
|
96
|
+
* initiated) can move the peer back to ACTIVE.
|
|
97
|
+
*/
|
|
98
|
+
evict(reason, now = new Date()) {
|
|
99
|
+
return this._transition(FederationNodeState.EVICTED, reason, now);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Transition back to ACTIVE. Legal from SUSPENDED (after cooldown +
|
|
103
|
+
* probe success — the breaker is responsible for those checks; this
|
|
104
|
+
* entity does not gate on time) or from EVICTED (operator override).
|
|
105
|
+
*
|
|
106
|
+
* `correlationId` lets the caller record *why* they're reactivating
|
|
107
|
+
* (probe ID, operator ticket, etc.) for the audit trail.
|
|
108
|
+
*/
|
|
109
|
+
reactivate(correlationId, now = new Date()) {
|
|
110
|
+
if (!canTransition(this._state, FederationNodeState.ACTIVE))
|
|
111
|
+
return false;
|
|
112
|
+
this._state = FederationNodeState.ACTIVE;
|
|
113
|
+
this._stateChangedAt = now;
|
|
114
|
+
this._stateReason = undefined;
|
|
115
|
+
this._stateCorrelationId = correlationId;
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
_transition(target, reason, now) {
|
|
119
|
+
if (!canTransition(this._state, target))
|
|
120
|
+
return false;
|
|
121
|
+
this._state = target;
|
|
122
|
+
this._stateChangedAt = now;
|
|
123
|
+
this._stateReason = reason.reason;
|
|
124
|
+
this._stateCorrelationId = reason.correlationId;
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
45
127
|
toProps() {
|
|
46
128
|
return {
|
|
47
129
|
nodeId: this.nodeId,
|
|
@@ -52,6 +134,10 @@ export class FederationNode {
|
|
|
52
134
|
trustScore: this._trustScore,
|
|
53
135
|
lastSeen: this._lastSeen,
|
|
54
136
|
metadata: this._metadata,
|
|
137
|
+
state: this._state,
|
|
138
|
+
stateChangedAt: this._stateChangedAt,
|
|
139
|
+
stateReason: this._stateReason,
|
|
140
|
+
stateCorrelationId: this._stateCorrelationId,
|
|
55
141
|
};
|
|
56
142
|
}
|
|
57
143
|
static create(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation-node.js","sourceRoot":"","sources":["../../../src/domain/entities/federation-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"federation-node.js","sourceRoot":"","sources":["../../../src/domain/entities/federation-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,mBAAmB,EAGnB,aAAa,GACd,MAAM,2CAA2C,CAAC;AA2CnD,MAAM,OAAO,cAAc;IAChB,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,YAAY,CAA6B;IAE1C,WAAW,CAAa;IACxB,WAAW,CAAS;IACpB,SAAS,CAAO;IACP,SAAS,CAAyB;IAEnD,0EAA0E;IAC1E,yEAAyE;IACzE,+CAA+C;IACvC,MAAM,CAAsB;IAC5B,eAAe,CAAO;IACtB,YAAY,CAAoB;IAChC,mBAAmB,CAAU;IAErC,YAAY,KAA0B;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,mBAAmB,CAAC,MAAM,CAAC;QACxD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,cAAc,IAAI,IAAI,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,kBAAkB,CAAC;IACtD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,4CAA4C;IAC5C,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,0CAA0C;IAC1C,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,kDAAkD;IAClD,IAAI,WAAW;QACb,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,SAAS,EAAE,IAAI,CAAC,eAAe;YAC/B,MAAM,EAAE,IAAI,CAAC,YAAY;YACzB,aAAa,EAAE,IAAI,CAAC,mBAAmB;SACxC,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,KAAK,mBAAmB,CAAC,MAAM,CAAC;IACpD,CAAC;IAED,8DAA8D;IAC9D,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,mBAAmB,CAAC,OAAO,CAAC;IACrD,CAAC;IAED,gBAAgB,CAAC,KAAiB;QAChC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,gBAAgB,CAAC,KAAa;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC1D,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,MAAwB,EAAE,MAAY,IAAI,IAAI,EAAE;QACtD,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAwB,EAAE,MAAY,IAAI,IAAI,EAAE;QACpD,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,aAAsB,EAAE,MAAY,IAAI,IAAI,EAAE;QACvD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1E,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW,CACjB,MAA2B,EAC3B,MAAwB,EACxB,GAAS;QAET,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;SAC7C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAIb;QACC,OAAO,IAAI,cAAc,CAAC;YACxB,GAAG,KAAK;YACR,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS;YACpD,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC;YACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAE;SACvC,CAAC,CAAC;IACL,CAAC;CACF"}
|