@claude-flow/plugin-agent-federation 1.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +45 -0
  2. package/dist/application/federation-breaker-service.d.ts +182 -0
  3. package/dist/application/federation-breaker-service.d.ts.map +1 -0
  4. package/dist/application/federation-breaker-service.js +251 -0
  5. package/dist/application/federation-breaker-service.js.map +1 -0
  6. package/dist/application/federation-coordinator.d.ts +166 -0
  7. package/dist/application/federation-coordinator.d.ts.map +1 -0
  8. package/dist/application/federation-coordinator.js +412 -0
  9. package/dist/application/federation-coordinator.js.map +1 -0
  10. package/dist/application/inbound-dispatcher.d.ts +59 -0
  11. package/dist/application/inbound-dispatcher.d.ts.map +1 -0
  12. package/dist/application/inbound-dispatcher.js +96 -0
  13. package/dist/application/inbound-dispatcher.js.map +1 -0
  14. package/dist/application/policy-engine.d.ts +41 -0
  15. package/dist/application/policy-engine.d.ts.map +1 -0
  16. package/dist/application/policy-engine.js +184 -0
  17. package/dist/application/policy-engine.js.map +1 -0
  18. package/dist/application/spend-reporter.d.ts +150 -0
  19. package/dist/application/spend-reporter.d.ts.map +1 -0
  20. package/dist/application/spend-reporter.js +128 -0
  21. package/dist/application/spend-reporter.js.map +1 -0
  22. package/dist/application/trust-evaluator.d.ts +42 -0
  23. package/dist/application/trust-evaluator.d.ts.map +1 -0
  24. package/dist/application/trust-evaluator.js +132 -0
  25. package/dist/application/trust-evaluator.js.map +1 -0
  26. package/dist/bin.d.ts +13 -0
  27. package/dist/bin.d.ts.map +1 -0
  28. package/dist/bin.js +189 -0
  29. package/dist/bin.js.map +1 -0
  30. package/dist/cli-commands.d.ts +7 -0
  31. package/dist/cli-commands.d.ts.map +1 -0
  32. package/dist/cli-commands.js +198 -0
  33. package/dist/cli-commands.js.map +1 -0
  34. package/dist/domain/entities/federation-envelope.d.ts +45 -0
  35. package/dist/domain/entities/federation-envelope.d.ts.map +1 -0
  36. package/dist/domain/entities/federation-envelope.js +71 -0
  37. package/dist/domain/entities/federation-envelope.js.map +1 -0
  38. package/dist/domain/entities/federation-node.d.ts +104 -0
  39. package/dist/domain/entities/federation-node.d.ts.map +1 -0
  40. package/dist/domain/entities/federation-node.js +152 -0
  41. package/dist/domain/entities/federation-node.js.map +1 -0
  42. package/dist/domain/entities/federation-session.d.ts +55 -0
  43. package/dist/domain/entities/federation-session.d.ts.map +1 -0
  44. package/dist/domain/entities/federation-session.js +105 -0
  45. package/dist/domain/entities/federation-session.js.map +1 -0
  46. package/dist/domain/entities/trust-level.d.ts +17 -0
  47. package/dist/domain/entities/trust-level.d.ts.map +1 -0
  48. package/dist/domain/entities/trust-level.js +35 -0
  49. package/dist/domain/entities/trust-level.js.map +1 -0
  50. package/dist/domain/services/audit-service.d.ts +69 -0
  51. package/dist/domain/services/audit-service.d.ts.map +1 -0
  52. package/dist/domain/services/audit-service.js +149 -0
  53. package/dist/domain/services/audit-service.js.map +1 -0
  54. package/dist/domain/services/discovery-service.d.ts +51 -0
  55. package/dist/domain/services/discovery-service.d.ts.map +1 -0
  56. package/dist/domain/services/discovery-service.js +140 -0
  57. package/dist/domain/services/discovery-service.js.map +1 -0
  58. package/dist/domain/services/handshake-service.d.ts +48 -0
  59. package/dist/domain/services/handshake-service.d.ts.map +1 -0
  60. package/dist/domain/services/handshake-service.js +94 -0
  61. package/dist/domain/services/handshake-service.js.map +1 -0
  62. package/dist/domain/services/pii-pipeline-service.d.ts +65 -0
  63. package/dist/domain/services/pii-pipeline-service.d.ts.map +1 -0
  64. package/dist/domain/services/pii-pipeline-service.js +208 -0
  65. package/dist/domain/services/pii-pipeline-service.js.map +1 -0
  66. package/dist/domain/services/routing-service.d.ts +51 -0
  67. package/dist/domain/services/routing-service.d.ts.map +1 -0
  68. package/dist/domain/services/routing-service.js +147 -0
  69. package/dist/domain/services/routing-service.js.map +1 -0
  70. package/dist/domain/value-objects/federation-budget.d.ts +89 -0
  71. package/dist/domain/value-objects/federation-budget.d.ts.map +1 -0
  72. package/dist/domain/value-objects/federation-budget.js +165 -0
  73. package/dist/domain/value-objects/federation-budget.js.map +1 -0
  74. package/dist/domain/value-objects/federation-node-state.d.ts +92 -0
  75. package/dist/domain/value-objects/federation-node-state.d.ts.map +1 -0
  76. package/dist/domain/value-objects/federation-node-state.js +100 -0
  77. package/dist/domain/value-objects/federation-node-state.js.map +1 -0
  78. package/dist/index.d.ts +17 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +17 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/mcp-tools.d.ts +8 -0
  83. package/dist/mcp-tools.d.ts.map +1 -0
  84. package/dist/mcp-tools.js +343 -0
  85. package/dist/mcp-tools.js.map +1 -0
  86. package/dist/plugin.d.ts +18 -0
  87. package/dist/plugin.d.ts.map +1 -0
  88. package/dist/plugin.js +376 -0
  89. package/dist/plugin.js.map +1 -0
  90. package/package.json +44 -0
@@ -0,0 +1,104 @@
1
+ import { TrustLevel } from './trust-level.js';
2
+ import { FederationNodeState, SuspensionReason, TransitionReason } from '../value-objects/federation-node-state.js';
3
+ export interface FederationNodeCapabilities {
4
+ readonly agentTypes: readonly string[];
5
+ readonly maxConcurrentSessions: number;
6
+ readonly supportedProtocols: readonly string[];
7
+ readonly complianceModes: readonly string[];
8
+ }
9
+ export interface FederationNodeMetadata {
10
+ readonly organizationId?: string;
11
+ readonly region?: string;
12
+ readonly version?: string;
13
+ readonly [key: string]: unknown;
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
+ }
22
+ export interface FederationNodeProps {
23
+ readonly nodeId: string;
24
+ readonly publicKey: string;
25
+ readonly endpoint: string;
26
+ readonly capabilities: FederationNodeCapabilities;
27
+ readonly trustLevel: TrustLevel;
28
+ readonly trustScore: number;
29
+ readonly lastSeen: Date;
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;
39
+ }
40
+ export declare class FederationNode {
41
+ readonly nodeId: string;
42
+ readonly publicKey: string;
43
+ readonly endpoint: string;
44
+ readonly capabilities: FederationNodeCapabilities;
45
+ private _trustLevel;
46
+ private _trustScore;
47
+ private _lastSeen;
48
+ private readonly _metadata;
49
+ private _state;
50
+ private _stateChangedAt;
51
+ private _stateReason?;
52
+ private _stateCorrelationId?;
53
+ constructor(props: FederationNodeProps);
54
+ get trustLevel(): TrustLevel;
55
+ get trustScore(): number;
56
+ get lastSeen(): Date;
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;
68
+ updateTrustLevel(level: TrustLevel): void;
69
+ updateTrustScore(score: number): void;
70
+ markSeen(): void;
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;
97
+ toProps(): FederationNodeProps;
98
+ static create(props: Omit<FederationNodeProps, 'trustLevel' | 'trustScore' | 'lastSeen'> & {
99
+ trustLevel?: TrustLevel;
100
+ trustScore?: number;
101
+ lastSeen?: Date;
102
+ }): FederationNode;
103
+ }
104
+ //# sourceMappingURL=federation-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-node.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/federation-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ import { TrustLevel } from './trust-level.js';
2
+ import { FederationNodeState, canTransition, } from '../value-objects/federation-node-state.js';
3
+ export class FederationNode {
4
+ nodeId;
5
+ publicKey;
6
+ endpoint;
7
+ capabilities;
8
+ _trustLevel;
9
+ _trustScore;
10
+ _lastSeen;
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;
19
+ constructor(props) {
20
+ this.nodeId = props.nodeId;
21
+ this.publicKey = props.publicKey;
22
+ this.endpoint = props.endpoint;
23
+ this.capabilities = props.capabilities;
24
+ this._trustLevel = props.trustLevel;
25
+ this._trustScore = props.trustScore;
26
+ this._lastSeen = props.lastSeen;
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;
32
+ }
33
+ get trustLevel() {
34
+ return this._trustLevel;
35
+ }
36
+ get trustScore() {
37
+ return this._trustScore;
38
+ }
39
+ get lastSeen() {
40
+ return this._lastSeen;
41
+ }
42
+ get metadata() {
43
+ return this._metadata;
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
+ }
70
+ updateTrustLevel(level) {
71
+ this._trustLevel = level;
72
+ }
73
+ updateTrustScore(score) {
74
+ this._trustScore = Math.max(0, Math.min(1, score));
75
+ }
76
+ markSeen() {
77
+ this._lastSeen = new Date();
78
+ }
79
+ isStale(maxAgeMs) {
80
+ return Date.now() - this._lastSeen.getTime() > maxAgeMs;
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
+ }
127
+ toProps() {
128
+ return {
129
+ nodeId: this.nodeId,
130
+ publicKey: this.publicKey,
131
+ endpoint: this.endpoint,
132
+ capabilities: this.capabilities,
133
+ trustLevel: this._trustLevel,
134
+ trustScore: this._trustScore,
135
+ lastSeen: this._lastSeen,
136
+ metadata: this._metadata,
137
+ state: this._state,
138
+ stateChangedAt: this._stateChangedAt,
139
+ stateReason: this._stateReason,
140
+ stateCorrelationId: this._stateCorrelationId,
141
+ };
142
+ }
143
+ static create(props) {
144
+ return new FederationNode({
145
+ ...props,
146
+ trustLevel: props.trustLevel ?? TrustLevel.UNTRUSTED,
147
+ trustScore: props.trustScore ?? 0,
148
+ lastSeen: props.lastSeen ?? new Date(),
149
+ });
150
+ }
151
+ }
152
+ //# sourceMappingURL=federation-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-node.js","sourceRoot":"","sources":["../../../src/domain/entities/federation-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { TrustLevel } from './trust-level.js';
2
+ export interface SessionMetrics {
3
+ messagesSent: number;
4
+ messagesReceived: number;
5
+ piiRedactions: number;
6
+ threatDetections: number;
7
+ hmacFailures: number;
8
+ totalInteractions: number;
9
+ }
10
+ export interface FederationSessionProps {
11
+ readonly sessionId: string;
12
+ readonly localNodeId: string;
13
+ readonly remoteNodeId: string;
14
+ readonly trustLevel: TrustLevel;
15
+ readonly negotiatedCapabilities: readonly string[];
16
+ readonly createdAt: Date;
17
+ readonly expiresAt: Date;
18
+ readonly heartbeatInterval: number;
19
+ readonly sessionToken: string;
20
+ readonly metrics: SessionMetrics;
21
+ }
22
+ export declare class FederationSession {
23
+ readonly sessionId: string;
24
+ readonly localNodeId: string;
25
+ readonly remoteNodeId: string;
26
+ readonly negotiatedCapabilities: readonly string[];
27
+ readonly createdAt: Date;
28
+ readonly heartbeatInterval: number;
29
+ readonly sessionToken: string;
30
+ private _trustLevel;
31
+ private _expiresAt;
32
+ private _lastHeartbeat;
33
+ private _metrics;
34
+ private _active;
35
+ constructor(props: FederationSessionProps);
36
+ get trustLevel(): TrustLevel;
37
+ get expiresAt(): Date;
38
+ get lastHeartbeat(): Date;
39
+ get metrics(): Readonly<SessionMetrics>;
40
+ get active(): boolean;
41
+ isExpired(): boolean;
42
+ isHeartbeatOverdue(): boolean;
43
+ recordHeartbeat(): void;
44
+ renew(newExpiresAt: Date): void;
45
+ updateTrustLevel(level: TrustLevel): void;
46
+ recordMessageSent(): void;
47
+ recordMessageReceived(): void;
48
+ recordPiiRedaction(): void;
49
+ recordThreatDetection(): void;
50
+ recordHmacFailure(): void;
51
+ terminate(): void;
52
+ toProps(): FederationSessionProps;
53
+ static createMetrics(): SessionMetrics;
54
+ }
55
+ //# sourceMappingURL=federation-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-session.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/federation-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,cAAc,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAU;gBAEb,KAAK,EAAE,sBAAsB;IAezC,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,SAAS,IAAI,IAAI,CAEpB;IAED,IAAI,aAAa,IAAI,IAAI,CAExB;IAED,IAAI,OAAO,IAAI,QAAQ,CAAC,cAAc,CAAC,CAEtC;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,SAAS,IAAI,OAAO;IAIpB,kBAAkB,IAAI,OAAO;IAK7B,eAAe,IAAI,IAAI;IAIvB,KAAK,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI;IAK/B,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIzC,iBAAiB,IAAI,IAAI;IAKzB,qBAAqB,IAAI,IAAI;IAK7B,kBAAkB,IAAI,IAAI;IAI1B,qBAAqB,IAAI,IAAI;IAI7B,iBAAiB,IAAI,IAAI;IAIzB,SAAS,IAAI,IAAI;IAIjB,OAAO,IAAI,sBAAsB;IAejC,MAAM,CAAC,aAAa,IAAI,cAAc;CAUvC"}
@@ -0,0 +1,105 @@
1
+ export class FederationSession {
2
+ sessionId;
3
+ localNodeId;
4
+ remoteNodeId;
5
+ negotiatedCapabilities;
6
+ createdAt;
7
+ heartbeatInterval;
8
+ sessionToken;
9
+ _trustLevel;
10
+ _expiresAt;
11
+ _lastHeartbeat;
12
+ _metrics;
13
+ _active;
14
+ constructor(props) {
15
+ this.sessionId = props.sessionId;
16
+ this.localNodeId = props.localNodeId;
17
+ this.remoteNodeId = props.remoteNodeId;
18
+ this._trustLevel = props.trustLevel;
19
+ this.negotiatedCapabilities = props.negotiatedCapabilities;
20
+ this.createdAt = props.createdAt;
21
+ this._expiresAt = props.expiresAt;
22
+ this.heartbeatInterval = props.heartbeatInterval;
23
+ this.sessionToken = props.sessionToken;
24
+ this._metrics = { ...props.metrics };
25
+ this._lastHeartbeat = new Date();
26
+ this._active = true;
27
+ }
28
+ get trustLevel() {
29
+ return this._trustLevel;
30
+ }
31
+ get expiresAt() {
32
+ return this._expiresAt;
33
+ }
34
+ get lastHeartbeat() {
35
+ return this._lastHeartbeat;
36
+ }
37
+ get metrics() {
38
+ return this._metrics;
39
+ }
40
+ get active() {
41
+ return this._active;
42
+ }
43
+ isExpired() {
44
+ return Date.now() >= this._expiresAt.getTime();
45
+ }
46
+ isHeartbeatOverdue() {
47
+ const overdueThreshold = this.heartbeatInterval * 3;
48
+ return Date.now() - this._lastHeartbeat.getTime() > overdueThreshold;
49
+ }
50
+ recordHeartbeat() {
51
+ this._lastHeartbeat = new Date();
52
+ }
53
+ renew(newExpiresAt) {
54
+ this._expiresAt = newExpiresAt;
55
+ this._lastHeartbeat = new Date();
56
+ }
57
+ updateTrustLevel(level) {
58
+ this._trustLevel = level;
59
+ }
60
+ recordMessageSent() {
61
+ this._metrics.messagesSent++;
62
+ this._metrics.totalInteractions++;
63
+ }
64
+ recordMessageReceived() {
65
+ this._metrics.messagesReceived++;
66
+ this._metrics.totalInteractions++;
67
+ }
68
+ recordPiiRedaction() {
69
+ this._metrics.piiRedactions++;
70
+ }
71
+ recordThreatDetection() {
72
+ this._metrics.threatDetections++;
73
+ }
74
+ recordHmacFailure() {
75
+ this._metrics.hmacFailures++;
76
+ }
77
+ terminate() {
78
+ this._active = false;
79
+ }
80
+ toProps() {
81
+ return {
82
+ sessionId: this.sessionId,
83
+ localNodeId: this.localNodeId,
84
+ remoteNodeId: this.remoteNodeId,
85
+ trustLevel: this._trustLevel,
86
+ negotiatedCapabilities: this.negotiatedCapabilities,
87
+ createdAt: this.createdAt,
88
+ expiresAt: this._expiresAt,
89
+ heartbeatInterval: this.heartbeatInterval,
90
+ sessionToken: this.sessionToken,
91
+ metrics: { ...this._metrics },
92
+ };
93
+ }
94
+ static createMetrics() {
95
+ return {
96
+ messagesSent: 0,
97
+ messagesReceived: 0,
98
+ piiRedactions: 0,
99
+ threatDetections: 0,
100
+ hmacFailures: 0,
101
+ totalInteractions: 0,
102
+ };
103
+ }
104
+ }
105
+ //# sourceMappingURL=federation-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation-session.js","sourceRoot":"","sources":["../../../src/domain/entities/federation-session.ts"],"names":[],"mappings":"AAwBA,MAAM,OAAO,iBAAiB;IACnB,SAAS,CAAS;IAClB,WAAW,CAAS;IACpB,YAAY,CAAS;IACrB,sBAAsB,CAAoB;IAC1C,SAAS,CAAO;IAChB,iBAAiB,CAAS;IAC1B,YAAY,CAAS;IAEtB,WAAW,CAAa;IACxB,UAAU,CAAO;IACjB,cAAc,CAAO;IACrB,QAAQ,CAAiB;IACzB,OAAO,CAAU;IAEzB,YAAY,KAA6B;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACjD,CAAC;IAED,kBAAkB;QAChB,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,gBAAgB,CAAC;IACvE,CAAC;IAED,eAAe;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,YAAkB;QACtB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,gBAAgB,CAAC,KAAiB;QAChC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IACpC,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IACpC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IAChC,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IACnC,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC/B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,OAAO;QACL,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;SAC9B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,OAAO;YACL,YAAY,EAAE,CAAC;YACf,gBAAgB,EAAE,CAAC;YACnB,aAAa,EAAE,CAAC;YAChB,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,iBAAiB,EAAE,CAAC;SACrB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ export declare enum TrustLevel {
2
+ UNTRUSTED = 0,
3
+ VERIFIED = 1,
4
+ ATTESTED = 2,
5
+ TRUSTED = 3,
6
+ PRIVILEGED = 4
7
+ }
8
+ export interface TrustTransitionThreshold {
9
+ upgradeScore: number;
10
+ downgradeScore: number;
11
+ minInteractions: number;
12
+ }
13
+ export declare const TRUST_TRANSITION_THRESHOLDS: Record<string, TrustTransitionThreshold>;
14
+ export declare const CAPABILITY_GATES: Record<TrustLevel, readonly string[]>;
15
+ export declare function isOperationAllowed(trustLevel: TrustLevel, operation: string): boolean;
16
+ export declare function getTrustLevelLabel(level: TrustLevel): string;
17
+ //# sourceMappingURL=trust-level.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-level.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/trust-level.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACpB,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,UAAU,IAAI;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAIhF,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAMlE,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAGrF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAS5D"}
@@ -0,0 +1,35 @@
1
+ export var TrustLevel;
2
+ (function (TrustLevel) {
3
+ TrustLevel[TrustLevel["UNTRUSTED"] = 0] = "UNTRUSTED";
4
+ TrustLevel[TrustLevel["VERIFIED"] = 1] = "VERIFIED";
5
+ TrustLevel[TrustLevel["ATTESTED"] = 2] = "ATTESTED";
6
+ TrustLevel[TrustLevel["TRUSTED"] = 3] = "TRUSTED";
7
+ TrustLevel[TrustLevel["PRIVILEGED"] = 4] = "PRIVILEGED";
8
+ })(TrustLevel || (TrustLevel = {}));
9
+ export const TRUST_TRANSITION_THRESHOLDS = {
10
+ '1->2': { upgradeScore: 0.7, downgradeScore: 0.5, minInteractions: 50 },
11
+ '2->3': { upgradeScore: 0.85, downgradeScore: 0.65, minInteractions: 500 },
12
+ '3->4': { upgradeScore: 0.95, downgradeScore: 0.8, minInteractions: 5000 },
13
+ };
14
+ export const CAPABILITY_GATES = {
15
+ [TrustLevel.UNTRUSTED]: ['discovery'],
16
+ [TrustLevel.VERIFIED]: ['discovery', 'status', 'ping'],
17
+ [TrustLevel.ATTESTED]: ['discovery', 'status', 'ping', 'send', 'receive', 'query-redacted'],
18
+ [TrustLevel.TRUSTED]: ['discovery', 'status', 'ping', 'send', 'receive', 'query-redacted', 'share-context', 'collaborative-task'],
19
+ [TrustLevel.PRIVILEGED]: ['discovery', 'status', 'ping', 'send', 'receive', 'query-redacted', 'share-context', 'collaborative-task', 'full-memory', 'remote-spawn'],
20
+ };
21
+ export function isOperationAllowed(trustLevel, operation) {
22
+ const allowed = CAPABILITY_GATES[trustLevel];
23
+ return allowed.includes(operation);
24
+ }
25
+ export function getTrustLevelLabel(level) {
26
+ const labels = {
27
+ [TrustLevel.UNTRUSTED]: 'UNTRUSTED',
28
+ [TrustLevel.VERIFIED]: 'VERIFIED',
29
+ [TrustLevel.ATTESTED]: 'ATTESTED',
30
+ [TrustLevel.TRUSTED]: 'TRUSTED',
31
+ [TrustLevel.PRIVILEGED]: 'PRIVILEGED',
32
+ };
33
+ return labels[level];
34
+ }
35
+ //# sourceMappingURL=trust-level.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-level.js","sourceRoot":"","sources":["../../../src/domain/entities/trust-level.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,qDAAa,CAAA;IACb,mDAAY,CAAA;IACZ,mDAAY,CAAA;IACZ,iDAAW,CAAA;IACX,uDAAc,CAAA;AAChB,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AAQD,MAAM,CAAC,MAAM,2BAA2B,GAA6C;IACnF,MAAM,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE;IACvE,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE;IAC1E,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE;CAC3E,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAA0C;IACrE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC;IACrC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC;IACtD,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC;IAC3F,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,CAAC;IACjI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,CAAC;CACpK,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,UAAsB,EAAE,SAAiB;IAC1E,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,MAAM,MAAM,GAA+B;QACzC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,WAAW;QACnC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,UAAU;QACjC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,UAAU;QACjC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS;QAC/B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,YAAY;KACtC,CAAC;IACF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,69 @@
1
+ export type FederationAuditEventType = 'peer_discovered' | 'peer_manifest_published' | 'handshake_initiated' | 'handshake_completed' | 'handshake_failed' | 'handshake_rejected' | 'session_created' | 'session_renewed' | 'session_expired' | 'session_terminated' | 'message_sent' | 'message_received' | 'message_rejected' | 'message_timeout' | 'pii_detected' | 'pii_stripped' | 'pii_blocked' | 'threat_detected' | 'threat_blocked' | 'threat_learned' | 'claim_checked' | 'claim_denied' | 'trust_level_changed' | 'consensus_proposed' | 'consensus_voted' | 'consensus_reached' | 'consensus_failed';
2
+ export type AuditSeverity = 'info' | 'warn' | 'error' | 'critical';
3
+ export type AuditCategory = 'discovery' | 'handshake' | 'message' | 'pii' | 'security' | 'consensus';
4
+ export type ComplianceMode = 'hipaa' | 'soc2' | 'gdpr' | 'none';
5
+ export interface FederationAuditEvent {
6
+ readonly eventId: string;
7
+ readonly timestamp: string;
8
+ readonly nodeId: string;
9
+ readonly sessionId?: string;
10
+ readonly eventType: FederationAuditEventType;
11
+ readonly severity: AuditSeverity;
12
+ readonly category: AuditCategory;
13
+ readonly sourceNodeId?: string;
14
+ readonly targetNodeId?: string;
15
+ readonly agentId?: string;
16
+ readonly trustLevel?: number;
17
+ readonly piiDetected?: boolean;
18
+ readonly piiTypesFound?: string[];
19
+ readonly piiAction?: string;
20
+ readonly threatDetected?: boolean;
21
+ readonly threatTypes?: string[];
22
+ readonly claimsChecked?: string[];
23
+ readonly claimsResult?: 'granted' | 'denied';
24
+ readonly latencyMs?: number;
25
+ readonly messageSizeBytes?: number;
26
+ readonly complianceMode?: ComplianceMode;
27
+ readonly dataResidency?: string;
28
+ readonly metadata?: Record<string, unknown>;
29
+ }
30
+ export interface AuditQuery {
31
+ readonly eventType?: FederationAuditEventType;
32
+ readonly severity?: AuditSeverity;
33
+ readonly category?: AuditCategory;
34
+ readonly nodeId?: string;
35
+ readonly sessionId?: string;
36
+ readonly since?: Date;
37
+ readonly until?: Date;
38
+ readonly limit?: number;
39
+ readonly offset?: number;
40
+ }
41
+ export type AuditExportFormat = 'json' | 'csv' | 'ndjson';
42
+ export interface AuditServiceDeps {
43
+ generateEventId: () => string;
44
+ getLocalNodeId: () => string;
45
+ persistEvent: (event: FederationAuditEvent) => Promise<void>;
46
+ queryEvents: (query: AuditQuery) => Promise<FederationAuditEvent[]>;
47
+ onAuditEvent?: (event: FederationAuditEvent) => void;
48
+ }
49
+ export interface AuditServiceConfig {
50
+ readonly complianceMode: ComplianceMode;
51
+ readonly dataResidency?: string;
52
+ readonly retentionDays: number;
53
+ readonly batchSize: number;
54
+ }
55
+ export declare class AuditService {
56
+ private readonly deps;
57
+ private readonly config;
58
+ private readonly buffer;
59
+ constructor(deps: AuditServiceDeps, config?: Partial<AuditServiceConfig>);
60
+ log(eventType: FederationAuditEventType, details?: Partial<Omit<FederationAuditEvent, 'eventId' | 'timestamp' | 'nodeId' | 'eventType' | 'severity' | 'category' | 'complianceMode'>>): Promise<FederationAuditEvent>;
61
+ query(query: AuditQuery): Promise<FederationAuditEvent[]>;
62
+ export(query: AuditQuery, format: AuditExportFormat): Promise<string>;
63
+ flush(): Promise<void>;
64
+ getBufferSize(): number;
65
+ private buildEvent;
66
+ private applyHipaaCompliance;
67
+ private toCsv;
68
+ }
69
+ //# sourceMappingURL=audit-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-service.d.ts","sourceRoot":"","sources":["../../../src/domain/services/audit-service.ts"],"names":[],"mappings":"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"}