instar 0.17.13 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -4
- package/dashboard/favicon.png +0 -0
- package/dashboard/index.html +7 -3
- package/dashboard/logo.png +0 -0
- package/dist/commands/init.js +16 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/relay.d.ts +1 -0
- package/dist/commands/relay.d.ts.map +1 -1
- package/dist/commands/relay.js +2 -0
- package/dist/commands/relay.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +177 -4
- package/dist/commands/server.js.map +1 -1
- package/dist/core/AutoUpdater.d.ts.map +1 -1
- package/dist/core/AutoUpdater.js +11 -2
- package/dist/core/AutoUpdater.js.map +1 -1
- package/dist/core/Config.d.ts.map +1 -1
- package/dist/core/Config.js +1 -0
- package/dist/core/Config.js.map +1 -1
- package/dist/core/MessageSentinel.d.ts +14 -0
- package/dist/core/MessageSentinel.d.ts.map +1 -1
- package/dist/core/MessageSentinel.js +42 -10
- package/dist/core/MessageSentinel.js.map +1 -1
- package/dist/core/SessionManager.d.ts +13 -1
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +67 -0
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/types.d.ts +26 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +40 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +1 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +1 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +35 -0
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/AgentTrustManager.d.ts +40 -0
- package/dist/threadline/AgentTrustManager.d.ts.map +1 -1
- package/dist/threadline/AgentTrustManager.js +115 -0
- package/dist/threadline/AgentTrustManager.js.map +1 -1
- package/dist/threadline/ContentClassifier.d.ts +83 -0
- package/dist/threadline/ContentClassifier.d.ts.map +1 -0
- package/dist/threadline/ContentClassifier.js +201 -0
- package/dist/threadline/ContentClassifier.js.map +1 -0
- package/dist/threadline/InboundMessageGate.d.ts +69 -0
- package/dist/threadline/InboundMessageGate.d.ts.map +1 -0
- package/dist/threadline/InboundMessageGate.js +196 -0
- package/dist/threadline/InboundMessageGate.js.map +1 -0
- package/dist/threadline/RelayGroundingPreamble.d.ts +48 -0
- package/dist/threadline/RelayGroundingPreamble.d.ts.map +1 -0
- package/dist/threadline/RelayGroundingPreamble.js +68 -0
- package/dist/threadline/RelayGroundingPreamble.js.map +1 -0
- package/dist/threadline/ThreadlineBootstrap.d.ts +19 -0
- package/dist/threadline/ThreadlineBootstrap.d.ts.map +1 -1
- package/dist/threadline/ThreadlineBootstrap.js +125 -2
- package/dist/threadline/ThreadlineBootstrap.js.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.d.ts +10 -0
- package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.js +289 -0
- package/dist/threadline/ThreadlineMCPServer.js.map +1 -1
- package/dist/threadline/ThreadlineRouter.d.ts +19 -1
- package/dist/threadline/ThreadlineRouter.d.ts.map +1 -1
- package/dist/threadline/ThreadlineRouter.js +42 -17
- package/dist/threadline/ThreadlineRouter.js.map +1 -1
- package/dist/threadline/client/ThreadlineClient.d.ts +13 -0
- package/dist/threadline/client/ThreadlineClient.d.ts.map +1 -1
- package/dist/threadline/client/ThreadlineClient.js +43 -0
- package/dist/threadline/client/ThreadlineClient.js.map +1 -1
- package/dist/threadline/index.d.ts +7 -1
- package/dist/threadline/index.d.ts.map +1 -1
- package/dist/threadline/index.js +6 -0
- package/dist/threadline/index.js.map +1 -1
- package/dist/threadline/mcp-stdio-entry.js +46 -0
- package/dist/threadline/mcp-stdio-entry.js.map +1 -1
- package/dist/threadline/relay/RelayRateLimiter.js +1 -1
- package/dist/threadline/relay/RelayRateLimiter.js.map +1 -1
- package/dist/threadline/relay/RelayServer.d.ts.map +1 -1
- package/dist/threadline/relay/RelayServer.js +4 -3
- package/dist/threadline/relay/RelayServer.js.map +1 -1
- package/package.json +14 -7
- package/src/data/builtin-manifest.json +48 -48
- package/upgrades/0.17.14.md +26 -0
- package/upgrades/0.18.1.md +34 -0
|
@@ -27,6 +27,8 @@ export interface AgentTrustHistory {
|
|
|
27
27
|
}
|
|
28
28
|
export interface AgentTrustProfile {
|
|
29
29
|
agent: string;
|
|
30
|
+
/** Cryptographic fingerprint (Ed25519-derived). Primary identity key. */
|
|
31
|
+
fingerprint?: string;
|
|
30
32
|
level: AgentTrustLevel;
|
|
31
33
|
source: AgentTrustSource;
|
|
32
34
|
history: AgentTrustHistory;
|
|
@@ -68,6 +70,8 @@ export declare class AgentTrustManager {
|
|
|
68
70
|
private readonly auditPath;
|
|
69
71
|
private profiles;
|
|
70
72
|
private onTrustChange;
|
|
73
|
+
private saveDirty;
|
|
74
|
+
private saveTimer;
|
|
71
75
|
constructor(options: {
|
|
72
76
|
stateDir: string;
|
|
73
77
|
onTrustChange?: TrustChangeCallback;
|
|
@@ -81,6 +85,32 @@ export declare class AgentTrustManager {
|
|
|
81
85
|
* New agents start as 'untrusted' with 'setup-default' source.
|
|
82
86
|
*/
|
|
83
87
|
getOrCreateProfile(agentName: string): AgentTrustProfile;
|
|
88
|
+
/**
|
|
89
|
+
* Get trust profile by cryptographic fingerprint.
|
|
90
|
+
* Used for relay inbound messages where identity is fingerprint-based.
|
|
91
|
+
*/
|
|
92
|
+
getProfileByFingerprint(fingerprint: string): AgentTrustProfile | null;
|
|
93
|
+
/**
|
|
94
|
+
* Get or create a trust profile keyed by fingerprint.
|
|
95
|
+
* For relay agents, the fingerprint IS the identity.
|
|
96
|
+
*/
|
|
97
|
+
getOrCreateProfileByFingerprint(fingerprint: string, displayName?: string): AgentTrustProfile;
|
|
98
|
+
/**
|
|
99
|
+
* Get trust level by fingerprint. Returns 'untrusted' for unknown agents.
|
|
100
|
+
*/
|
|
101
|
+
getTrustLevelByFingerprint(fingerprint: string): AgentTrustLevel;
|
|
102
|
+
/**
|
|
103
|
+
* Get allowed operations by fingerprint.
|
|
104
|
+
*/
|
|
105
|
+
getAllowedOperationsByFingerprint(fingerprint: string): string[];
|
|
106
|
+
/**
|
|
107
|
+
* Set trust level by fingerprint.
|
|
108
|
+
*/
|
|
109
|
+
setTrustLevelByFingerprint(fingerprint: string, level: AgentTrustLevel, source: AgentTrustSource, reason?: string, displayName?: string): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Record a received message by fingerprint (debounced save).
|
|
112
|
+
*/
|
|
113
|
+
recordMessageReceivedByFingerprint(fingerprint: string): void;
|
|
84
114
|
/**
|
|
85
115
|
* Set trust level for an agent.
|
|
86
116
|
* UPGRADES require source: 'user-granted' or 'paired-machine-granted'.
|
|
@@ -142,6 +172,16 @@ export declare class AgentTrustManager {
|
|
|
142
172
|
* Force reload profiles from disk.
|
|
143
173
|
*/
|
|
144
174
|
reload(): void;
|
|
175
|
+
/**
|
|
176
|
+
* Flush any pending saves and stop the debounce timer.
|
|
177
|
+
* Call on shutdown for clean exit.
|
|
178
|
+
*/
|
|
179
|
+
flush(): void;
|
|
180
|
+
/**
|
|
181
|
+
* Schedule a debounced save (dirty-flag + interval flush).
|
|
182
|
+
* Avoids synchronous disk writes on every message received.
|
|
183
|
+
*/
|
|
184
|
+
private scheduleSave;
|
|
145
185
|
private loadProfiles;
|
|
146
186
|
private save;
|
|
147
187
|
private writeAudit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentTrustManager.d.ts","sourceRoot":"","sources":["../../src/threadline/AgentTrustManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAClF,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,wBAAwB,GAAG,eAAe,CAAC;AAE3F,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,eAAe,CAAC;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,gBAAgB,GAAG,QAAQ,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,eAAe,CAAC;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,8CAA8C;AAC9C,MAAM,MAAM,mBAAmB,GAAG,CAAC,YAAY,EAAE,uBAAuB,KAAK,IAAI,CAAC;AAElF,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AA+CD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,aAAa,CAA6B;
|
|
1
|
+
{"version":3,"file":"AgentTrustManager.d.ts","sourceRoot":"","sources":["../../src/threadline/AgentTrustManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,8 @@ export class AgentTrustManager {
|
|
|
60
60
|
auditPath;
|
|
61
61
|
profiles;
|
|
62
62
|
onTrustChange;
|
|
63
|
+
saveDirty = false;
|
|
64
|
+
saveTimer = null;
|
|
63
65
|
constructor(options) {
|
|
64
66
|
this.threadlineDir = path.join(options.stateDir, 'threadline');
|
|
65
67
|
fs.mkdirSync(this.threadlineDir, { recursive: true });
|
|
@@ -103,6 +105,87 @@ export class AgentTrustManager {
|
|
|
103
105
|
}
|
|
104
106
|
return this.profiles[agentName];
|
|
105
107
|
}
|
|
108
|
+
// ── Fingerprint-Based Access (for relay messages) ──────────────
|
|
109
|
+
/**
|
|
110
|
+
* Get trust profile by cryptographic fingerprint.
|
|
111
|
+
* Used for relay inbound messages where identity is fingerprint-based.
|
|
112
|
+
*/
|
|
113
|
+
getProfileByFingerprint(fingerprint) {
|
|
114
|
+
for (const profile of Object.values(this.profiles)) {
|
|
115
|
+
if (profile.fingerprint === fingerprint) {
|
|
116
|
+
return profile;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get or create a trust profile keyed by fingerprint.
|
|
123
|
+
* For relay agents, the fingerprint IS the identity.
|
|
124
|
+
*/
|
|
125
|
+
getOrCreateProfileByFingerprint(fingerprint, displayName) {
|
|
126
|
+
// Check if profile already exists by fingerprint
|
|
127
|
+
const existing = this.getProfileByFingerprint(fingerprint);
|
|
128
|
+
if (existing)
|
|
129
|
+
return existing;
|
|
130
|
+
// Create new profile keyed by fingerprint
|
|
131
|
+
const now = new Date().toISOString();
|
|
132
|
+
const key = displayName ?? fingerprint;
|
|
133
|
+
this.profiles[key] = {
|
|
134
|
+
agent: key,
|
|
135
|
+
fingerprint,
|
|
136
|
+
level: 'untrusted',
|
|
137
|
+
source: 'setup-default',
|
|
138
|
+
history: {
|
|
139
|
+
messagesReceived: 0,
|
|
140
|
+
messagesResponded: 0,
|
|
141
|
+
successfulInteractions: 0,
|
|
142
|
+
failedInteractions: 0,
|
|
143
|
+
lastInteraction: '',
|
|
144
|
+
streakSinceIncident: 0,
|
|
145
|
+
},
|
|
146
|
+
allowedOperations: [...DEFAULT_ALLOWED_OPS.untrusted],
|
|
147
|
+
blockedOperations: [],
|
|
148
|
+
createdAt: now,
|
|
149
|
+
updatedAt: now,
|
|
150
|
+
};
|
|
151
|
+
this.save();
|
|
152
|
+
return this.profiles[key];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get trust level by fingerprint. Returns 'untrusted' for unknown agents.
|
|
156
|
+
*/
|
|
157
|
+
getTrustLevelByFingerprint(fingerprint) {
|
|
158
|
+
const profile = this.getProfileByFingerprint(fingerprint);
|
|
159
|
+
return profile?.level ?? 'untrusted';
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get allowed operations by fingerprint.
|
|
163
|
+
*/
|
|
164
|
+
getAllowedOperationsByFingerprint(fingerprint) {
|
|
165
|
+
const profile = this.getProfileByFingerprint(fingerprint);
|
|
166
|
+
if (!profile)
|
|
167
|
+
return [...DEFAULT_ALLOWED_OPS.untrusted];
|
|
168
|
+
return profile.allowedOperations.length > 0
|
|
169
|
+
? profile.allowedOperations
|
|
170
|
+
: [...DEFAULT_ALLOWED_OPS[profile.level]];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Set trust level by fingerprint.
|
|
174
|
+
*/
|
|
175
|
+
setTrustLevelByFingerprint(fingerprint, level, source, reason, displayName) {
|
|
176
|
+
const profile = this.getOrCreateProfileByFingerprint(fingerprint, displayName);
|
|
177
|
+
return this.setTrustLevel(profile.agent, level, source, reason);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Record a received message by fingerprint (debounced save).
|
|
181
|
+
*/
|
|
182
|
+
recordMessageReceivedByFingerprint(fingerprint) {
|
|
183
|
+
const profile = this.getOrCreateProfileByFingerprint(fingerprint);
|
|
184
|
+
profile.history.messagesReceived++;
|
|
185
|
+
profile.history.lastInteraction = new Date().toISOString();
|
|
186
|
+
profile.updatedAt = new Date().toISOString();
|
|
187
|
+
this.scheduleSave();
|
|
188
|
+
}
|
|
106
189
|
// ── Trust Level Management ──────────────────────────────────────
|
|
107
190
|
/**
|
|
108
191
|
* Set trust level for an agent.
|
|
@@ -376,7 +459,39 @@ export class AgentTrustManager {
|
|
|
376
459
|
reload() {
|
|
377
460
|
this.profiles = this.loadProfiles();
|
|
378
461
|
}
|
|
462
|
+
/**
|
|
463
|
+
* Flush any pending saves and stop the debounce timer.
|
|
464
|
+
* Call on shutdown for clean exit.
|
|
465
|
+
*/
|
|
466
|
+
flush() {
|
|
467
|
+
if (this.saveDirty) {
|
|
468
|
+
this.save();
|
|
469
|
+
this.saveDirty = false;
|
|
470
|
+
}
|
|
471
|
+
if (this.saveTimer) {
|
|
472
|
+
clearInterval(this.saveTimer);
|
|
473
|
+
this.saveTimer = null;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
379
476
|
// ── Private ─────────────────────────────────────────────────────
|
|
477
|
+
/**
|
|
478
|
+
* Schedule a debounced save (dirty-flag + interval flush).
|
|
479
|
+
* Avoids synchronous disk writes on every message received.
|
|
480
|
+
*/
|
|
481
|
+
scheduleSave() {
|
|
482
|
+
this.saveDirty = true;
|
|
483
|
+
if (!this.saveTimer) {
|
|
484
|
+
this.saveTimer = setInterval(() => {
|
|
485
|
+
if (this.saveDirty) {
|
|
486
|
+
this.save();
|
|
487
|
+
this.saveDirty = false;
|
|
488
|
+
}
|
|
489
|
+
}, 5000); // Flush every 5 seconds
|
|
490
|
+
// Don't keep process alive just for this timer
|
|
491
|
+
if (this.saveTimer.unref)
|
|
492
|
+
this.saveTimer.unref();
|
|
493
|
+
}
|
|
494
|
+
}
|
|
380
495
|
loadProfiles() {
|
|
381
496
|
const data = safeJsonParse(this.profilesPath, {
|
|
382
497
|
profiles: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentTrustManager.js","sourceRoot":"","sources":["../../src/threadline/AgentTrustManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentTrustManager.js","sourceRoot":"","sources":["../../src/threadline/AgentTrustManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AA4D7B,wEAAwE;AAExE,0DAA0D;AAC1D,MAAM,WAAW,GAAsB,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAE1F,uEAAuE;AACvE,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD,iDAAiD;AACjD,MAAM,mBAAmB,GAAsC;IAC7D,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;IAChD,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC;IAC7E,UAAU,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC;CACtG,CAAC;AAEF,wEAAwE;AAExE,SAAS,WAAW,CAAC,QAAgB,EAAE,IAAY;IACjD,MAAM,OAAO,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACxF,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAI,QAAgB,EAAE,QAAW;IACrD,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AASD,MAAM,OAAO,iBAAiB;IACX,aAAa,CAAS;IACtB,YAAY,CAAS;IACrB,SAAS,CAAS;IAC3B,QAAQ,CAAoC;IAC5C,aAAa,CAA6B;IAC1C,SAAS,GAAG,KAAK,CAAC;IAClB,SAAS,GAA0C,IAAI,CAAC;IAEhE,YAAY,OAGX;QACC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC/D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;IAED,mEAAmE;IAEnE;;OAEG;IACH,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,SAAiB;QAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG;gBACzB,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,eAAe;gBACvB,OAAO,EAAE;oBACP,gBAAgB,EAAE,CAAC;oBACnB,iBAAiB,EAAE,CAAC;oBACpB,sBAAsB,EAAE,CAAC;oBACzB,kBAAkB,EAAE,CAAC;oBACrB,eAAe,EAAE,EAAE;oBACnB,mBAAmB,EAAE,CAAC;iBACvB;gBACD,iBAAiB,EAAE,CAAC,GAAG,mBAAmB,CAAC,SAAS,CAAC;gBACrD,iBAAiB,EAAE,EAAE;gBACrB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACf,CAAC;YACF,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,kEAAkE;IAElE;;;OAGG;IACH,uBAAuB,CAAC,WAAmB;QACzC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gBACxC,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,+BAA+B,CAAC,WAAmB,EAAE,WAAoB;QACvE,iDAAiD;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,0CAA0C;QAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,WAAW,IAAI,WAAW,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;YACnB,KAAK,EAAE,GAAG;YACV,WAAW;YACX,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,eAAe;YACvB,OAAO,EAAE;gBACP,gBAAgB,EAAE,CAAC;gBACnB,iBAAiB,EAAE,CAAC;gBACpB,sBAAsB,EAAE,CAAC;gBACzB,kBAAkB,EAAE,CAAC;gBACrB,eAAe,EAAE,EAAE;gBACnB,mBAAmB,EAAE,CAAC;aACvB;YACD,iBAAiB,EAAE,CAAC,GAAG,mBAAmB,CAAC,SAAS,CAAC;YACrD,iBAAiB,EAAE,EAAE;YACrB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,0BAA0B,CAAC,WAAmB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAC1D,OAAO,OAAO,EAAE,KAAK,IAAI,WAAW,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,iCAAiC,CAAC,WAAmB;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;YACzC,CAAC,CAAC,OAAO,CAAC,iBAAiB;YAC3B,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,0BAA0B,CACxB,WAAmB,EACnB,KAAsB,EACtB,MAAwB,EACxB,MAAe,EACf,WAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,+BAA+B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,kCAAkC,CAAC,WAAmB;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,+BAA+B,CAAC,WAAW,CAAC,CAAC;QAClE,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3D,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,mEAAmE;IAEnE;;;;OAIG;IACH,aAAa,CACX,SAAiB,EACjB,KAAsB,EACtB,MAAwB,EACxB,MAAe;QAEf,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QAEpC,iEAAiE;QACjE,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,wBAAwB,EAAE,CAAC;gBACrE,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,OAAO,CAAC,iBAAiB,GAAG,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,UAAU,CAAC;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,SAAS;YAChB,aAAa;YACb,QAAQ,EAAE,KAAK;YACf,MAAM;YACN,MAAM,EAAE,MAAM,IAAI,0BAA0B,KAAK,EAAE;YACnD,aAAa,EAAE,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,wBAAwB;SAChF,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC;gBACjB,KAAK,EAAE,SAAS;gBAChB,aAAa;gBACb,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,MAAM,IAAI,0BAA0B,KAAK,EAAE;gBACnD,aAAa,EAAE,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,wBAAwB;aAChF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mEAAmE;IAEnE;;OAEG;IACH,iBAAiB,CAAC,SAAiB,EAAE,OAAgB,EAAE,OAAgB;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,GAAG,CAAC;QAEtC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACzC,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACrC,OAAO,CAAC,OAAO,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,SAAiB;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3D,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,SAAiB;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACpC,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,mEAAmE;IAEnE;;;OAGG;IACH,eAAe,CAAC,SAAiB,EAAE,SAAiB;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,wDAAwD;YACxD,OAAO,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3D,CAAC;QAED,uDAAuD;QACvD,IAAI,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAClD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,8BAA8B;QAC9B,IAAI,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oCAAoC;QACpC,OAAO,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,mEAAmE;IAEnE;;OAEG;IACH,mBAAmB,CAAC,SAAiB;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,sBAAsB,GAAG,CAAC,CAAC,kBAAkB,CAAC;QAE9D,OAAO;YACL,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;YACpC,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;YACtC,sBAAsB,EAAE,CAAC,CAAC,sBAAsB;YAChD,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;YACxC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7D,mBAAmB,EAAE,CAAC,CAAC,mBAAmB;YAC1C,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;SAC3C,CAAC;IACJ,CAAC;IAED,mEAAmE;IAEnE;;;OAGG;IACH,aAAa,CAAC,SAAiB,EAAE,MAAc;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAE3B,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QACpC,IAAI,aAAa,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC,CAAC,oBAAoB;QAErE,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;QAC5B,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,OAAO,CAAC,iBAAiB,GAAG,CAAC,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,UAAU,CAAC;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,SAAS;YAChB,aAAa;YACb,QAAQ,EAAE,WAAW;YACrB,MAAM,EAAE,QAAQ;YAChB,MAAM;YACN,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC;gBACjB,KAAK,EAAE,SAAS;gBAChB,aAAa;gBACb,QAAQ,EAAE,WAAW;gBACrB,MAAM;gBACN,aAAa,EAAE,KAAK;aACrB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,uBAAuB,CAAC,SAAiB,EAAE,KAAc;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAEhD,MAAM,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;QACxD,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QAEnC,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,IAAI,OAAO,GAAG,sBAAsB;YAAE,OAAO,KAAK,CAAC;QAEnD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QACpC,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,UAAU,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAElC,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;QACzB,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,OAAO,CAAC,iBAAiB,GAAG,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,UAAU,CAAC;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,SAAS;YAChB,aAAa;YACb,QAAQ;YACR,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,sBAAsB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,wBAAwB;YACjG,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC;gBACjB,KAAK,EAAE,SAAS;gBAChB,aAAa;gBACb,QAAQ;gBACR,MAAM,EAAE,kCAAkC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO;gBAC5F,aAAa,EAAE,KAAK;aACrB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mEAAmE;IAEnE;;OAEG;IACH,YAAY,CAAC,MAA+D;QAC1E,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,mEAAmE;IAEnE;;OAEG;IACH,cAAc,CAAC,SAAiB,EAAE,SAAiB;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,SAAiB,EAAE,SAAiB;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACrF,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,mEAAmE;IAEnE;;OAEG;IACH,cAAc,CAAC,KAAc;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAChE,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YAExB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC7C,IAAI,CAAC;oBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;gBAAC,CAAC;gBACnD,MAAM,CAAC;oBAAC,OAAO,IAAI,CAAC;gBAAC,CAAC;YACxB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAEnD,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,mEAAmE;IAEnE;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED,mEAAmE;IAEnE;;;OAGG;IACK,YAAY;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;gBAChC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACzB,CAAC;YACH,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,wBAAwB;YAClC,+CAA+C;YAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,IAAI,GAAG,aAAa,CAAe,IAAI,CAAC,YAAY,EAAE;YAC1D,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,MAAM,IAAI,GAAiB;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YACF,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,KAAsB;QACvC,IAAI,CAAC;YACH,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,CAAkB,EAAE,CAAkB;QACzD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;CACF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContentClassifier — Optional outbound content filter for relay responses.
|
|
3
|
+
*
|
|
4
|
+
* Evaluates outbound messages before they're sent to detect sensitive data:
|
|
5
|
+
* - API keys, tokens, credentials
|
|
6
|
+
* - Database queries or internal data
|
|
7
|
+
* - System prompts or internal instructions
|
|
8
|
+
* - Personal user information
|
|
9
|
+
*
|
|
10
|
+
* Default: disabled. Operators enable via config for agents handling
|
|
11
|
+
* sensitive data. Layer 4 (grounding preamble) is behavioral guidance;
|
|
12
|
+
* Layer 5 (this) is the actual outbound enforcement.
|
|
13
|
+
*
|
|
14
|
+
* Part of PROP-relay-auto-connect, Layer 5.
|
|
15
|
+
*/
|
|
16
|
+
export type ContentClassification = 'safe' | 'sensitive' | 'blocked';
|
|
17
|
+
export interface ClassificationResult {
|
|
18
|
+
/** Overall classification */
|
|
19
|
+
classification: ContentClassification;
|
|
20
|
+
/** Why it was flagged (if not safe) */
|
|
21
|
+
reason?: string;
|
|
22
|
+
/** Sanitized version (if sensitive and redaction is available) */
|
|
23
|
+
redacted?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ContentClassifierConfig {
|
|
26
|
+
/** Enable the classifier (default: false) */
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
/** Block sensitive content outright, or just flag it (default: false — flag only) */
|
|
29
|
+
blockSensitive?: boolean;
|
|
30
|
+
/** Custom patterns to detect (in addition to defaults) */
|
|
31
|
+
customPatterns?: Array<{
|
|
32
|
+
pattern: string;
|
|
33
|
+
label: string;
|
|
34
|
+
}>;
|
|
35
|
+
/** LLM classifier function — if provided, used for deep classification */
|
|
36
|
+
llmClassify?: (content: string, systemPrompt: string) => Promise<string>;
|
|
37
|
+
}
|
|
38
|
+
export interface ThreadContext {
|
|
39
|
+
/** Trust level of the conversation partner */
|
|
40
|
+
trustLevel: string;
|
|
41
|
+
/** Thread ID */
|
|
42
|
+
threadId?: string;
|
|
43
|
+
/** Remote agent name */
|
|
44
|
+
remoteAgent?: string;
|
|
45
|
+
}
|
|
46
|
+
export declare class ContentClassifier {
|
|
47
|
+
private readonly config;
|
|
48
|
+
private metrics;
|
|
49
|
+
constructor(config: ContentClassifierConfig);
|
|
50
|
+
/**
|
|
51
|
+
* Whether the classifier is active.
|
|
52
|
+
*/
|
|
53
|
+
get enabled(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Classify outbound content before sending.
|
|
56
|
+
*
|
|
57
|
+
* Two-stage pipeline:
|
|
58
|
+
* 1. Fast regex pattern matching (catches obvious leaks)
|
|
59
|
+
* 2. LLM classification (catches subtle leaks, if llmClassify is provided)
|
|
60
|
+
*
|
|
61
|
+
* If regex catches something definitive (API key, private key), we skip
|
|
62
|
+
* the LLM call for speed and cost savings.
|
|
63
|
+
*/
|
|
64
|
+
classify(content: string, context: ThreadContext): Promise<ClassificationResult>;
|
|
65
|
+
/**
|
|
66
|
+
* Get classifier metrics for observability.
|
|
67
|
+
*/
|
|
68
|
+
getMetrics(): {
|
|
69
|
+
classified: number;
|
|
70
|
+
safe: number;
|
|
71
|
+
sensitive: number;
|
|
72
|
+
blocked: number;
|
|
73
|
+
errors: number;
|
|
74
|
+
patternDetections: number;
|
|
75
|
+
llmClassifications: number;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create a disabled (no-op) classifier.
|
|
80
|
+
* Used as default when content classification is not configured.
|
|
81
|
+
*/
|
|
82
|
+
export declare function createDisabledClassifier(): ContentClassifier;
|
|
83
|
+
//# sourceMappingURL=ContentClassifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentClassifier.d.ts","sourceRoot":"","sources":["../../src/threadline/ContentClassifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;AAErE,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,cAAc,EAAE,qBAAqB,CAAC;IACtC,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC1D,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,0EAA0E;IAC1E,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAuGD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAGjD,OAAO,CAAC,OAAO,CAQb;gBAEU,MAAM,EAAE,uBAAuB;IAI3C;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;;;;;;OASG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyEtF;;OAEG;IACH,UAAU;;;;;;;;;CAGX;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,iBAAiB,CAE5D"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContentClassifier — Optional outbound content filter for relay responses.
|
|
3
|
+
*
|
|
4
|
+
* Evaluates outbound messages before they're sent to detect sensitive data:
|
|
5
|
+
* - API keys, tokens, credentials
|
|
6
|
+
* - Database queries or internal data
|
|
7
|
+
* - System prompts or internal instructions
|
|
8
|
+
* - Personal user information
|
|
9
|
+
*
|
|
10
|
+
* Default: disabled. Operators enable via config for agents handling
|
|
11
|
+
* sensitive data. Layer 4 (grounding preamble) is behavioral guidance;
|
|
12
|
+
* Layer 5 (this) is the actual outbound enforcement.
|
|
13
|
+
*
|
|
14
|
+
* Part of PROP-relay-auto-connect, Layer 5.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Fast regex-based detection for common sensitive patterns.
|
|
18
|
+
* This runs before (and sometimes instead of) the LLM classifier.
|
|
19
|
+
*/
|
|
20
|
+
const BUILTIN_PATTERNS = [
|
|
21
|
+
// API keys and tokens
|
|
22
|
+
{ regex: /sk-[a-zA-Z0-9]{20,}/, label: 'API key (sk-* pattern)' },
|
|
23
|
+
{ regex: /sk-ant-api[a-zA-Z0-9-]{20,}/, label: 'Anthropic API key' },
|
|
24
|
+
{ regex: /ghp_[a-zA-Z0-9]{36,}/, label: 'GitHub personal access token' },
|
|
25
|
+
{ regex: /gho_[a-zA-Z0-9]{36,}/, label: 'GitHub OAuth token' },
|
|
26
|
+
{ regex: /xoxb-[0-9]{10,}-[a-zA-Z0-9-]+/, label: 'Slack bot token' },
|
|
27
|
+
{ regex: /xoxp-[0-9]{10,}-[a-zA-Z0-9-]+/, label: 'Slack user token' },
|
|
28
|
+
{ regex: /Bearer\s+[a-zA-Z0-9._\-]{20,}/, label: 'Bearer token' },
|
|
29
|
+
{ regex: /AKIA[0-9A-Z]{16}/, label: 'AWS access key' },
|
|
30
|
+
{ regex: /-----BEGIN (RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----/, label: 'Private key' },
|
|
31
|
+
// Database content
|
|
32
|
+
{ regex: /(?:postgres|mysql|mongodb|redis):\/\/[^\s]+:[^\s]+@/, label: 'Database connection string' },
|
|
33
|
+
{ regex: /SELECT\s+.+\s+FROM\s+\w+\s+WHERE/i, label: 'SQL query with data' },
|
|
34
|
+
// Internal instructions
|
|
35
|
+
{ regex: /system\s*prompt\s*[:=]/i, label: 'System prompt reference' },
|
|
36
|
+
{ regex: /\[INTERNAL\].*(?:instruction|directive|config)/i, label: 'Internal instruction' },
|
|
37
|
+
// PII patterns
|
|
38
|
+
{ regex: /\b\d{3}[-.]?\d{2}[-.]?\d{4}\b/, label: 'Possible SSN' },
|
|
39
|
+
{ regex: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b.*(?:password|passwd|pwd)/i, label: 'Email with password context' },
|
|
40
|
+
];
|
|
41
|
+
function detectPatterns(content, customPatterns) {
|
|
42
|
+
const matches = [];
|
|
43
|
+
for (const { regex, label } of BUILTIN_PATTERNS) {
|
|
44
|
+
const match = content.match(regex);
|
|
45
|
+
if (match) {
|
|
46
|
+
matches.push({ label, match: match[0].slice(0, 30) + (match[0].length > 30 ? '...' : '') });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (customPatterns) {
|
|
50
|
+
for (const { pattern, label } of customPatterns) {
|
|
51
|
+
try {
|
|
52
|
+
const regex = new RegExp(pattern);
|
|
53
|
+
const match = content.match(regex);
|
|
54
|
+
if (match) {
|
|
55
|
+
matches.push({ label, match: match[0].slice(0, 30) + (match[0].length > 30 ? '...' : '') });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Invalid regex — skip
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return matches;
|
|
64
|
+
}
|
|
65
|
+
// ── LLM Classification Prompt ────────────────────────────────────────
|
|
66
|
+
const LLM_CLASSIFIER_PROMPT = `You are a content safety classifier for an AI agent's outbound messages.
|
|
67
|
+
|
|
68
|
+
Evaluate whether the following message contains any sensitive information that should NOT be shared with an external agent:
|
|
69
|
+
|
|
70
|
+
1. API keys, tokens, secrets, or credentials
|
|
71
|
+
2. Database contents, queries, or connection strings
|
|
72
|
+
3. System prompts, internal instructions, or configuration details
|
|
73
|
+
4. Personal user information (emails with passwords, SSNs, financial data)
|
|
74
|
+
5. Proprietary business logic or trade secrets
|
|
75
|
+
|
|
76
|
+
Respond with EXACTLY one line in this format:
|
|
77
|
+
CLASSIFICATION: safe|sensitive|blocked
|
|
78
|
+
REASON: [brief reason if not safe]
|
|
79
|
+
|
|
80
|
+
"safe" = no sensitive content detected
|
|
81
|
+
"sensitive" = contains information that could be sensitive in context
|
|
82
|
+
"blocked" = contains clearly dangerous content (credentials, keys, PII)`;
|
|
83
|
+
function parseLLMResponse(response) {
|
|
84
|
+
const classLine = response.match(/CLASSIFICATION:\s*(safe|sensitive|blocked)/i);
|
|
85
|
+
const reasonLine = response.match(/REASON:\s*(.+)/i);
|
|
86
|
+
if (!classLine) {
|
|
87
|
+
// If LLM didn't follow format, default to safe (fail-open for availability)
|
|
88
|
+
return { classification: 'safe' };
|
|
89
|
+
}
|
|
90
|
+
const classification = classLine[1].toLowerCase();
|
|
91
|
+
return {
|
|
92
|
+
classification,
|
|
93
|
+
reason: reasonLine?.[1]?.trim(),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// ── Implementation ───────────────────────────────────────────────────
|
|
97
|
+
export class ContentClassifier {
|
|
98
|
+
config;
|
|
99
|
+
// Metrics
|
|
100
|
+
metrics = {
|
|
101
|
+
classified: 0,
|
|
102
|
+
safe: 0,
|
|
103
|
+
sensitive: 0,
|
|
104
|
+
blocked: 0,
|
|
105
|
+
errors: 0,
|
|
106
|
+
patternDetections: 0,
|
|
107
|
+
llmClassifications: 0,
|
|
108
|
+
};
|
|
109
|
+
constructor(config) {
|
|
110
|
+
this.config = config;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Whether the classifier is active.
|
|
114
|
+
*/
|
|
115
|
+
get enabled() {
|
|
116
|
+
return this.config.enabled;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Classify outbound content before sending.
|
|
120
|
+
*
|
|
121
|
+
* Two-stage pipeline:
|
|
122
|
+
* 1. Fast regex pattern matching (catches obvious leaks)
|
|
123
|
+
* 2. LLM classification (catches subtle leaks, if llmClassify is provided)
|
|
124
|
+
*
|
|
125
|
+
* If regex catches something definitive (API key, private key), we skip
|
|
126
|
+
* the LLM call for speed and cost savings.
|
|
127
|
+
*/
|
|
128
|
+
async classify(content, context) {
|
|
129
|
+
if (!this.config.enabled) {
|
|
130
|
+
return { classification: 'safe' };
|
|
131
|
+
}
|
|
132
|
+
this.metrics.classified++;
|
|
133
|
+
try {
|
|
134
|
+
// Stage 1: Fast pattern detection
|
|
135
|
+
const patterns = detectPatterns(content, this.config.customPatterns);
|
|
136
|
+
if (patterns.length > 0) {
|
|
137
|
+
this.metrics.patternDetections++;
|
|
138
|
+
// Definitive blocks: private keys, API keys, connection strings
|
|
139
|
+
const definitiveLabels = ['Private key', 'Database connection string', 'AWS access key'];
|
|
140
|
+
const isDefinitive = patterns.some(p => definitiveLabels.some(d => p.label.includes(d)));
|
|
141
|
+
if (isDefinitive) {
|
|
142
|
+
this.metrics.blocked++;
|
|
143
|
+
return {
|
|
144
|
+
classification: 'blocked',
|
|
145
|
+
reason: `Pattern detected: ${patterns.map(p => p.label).join(', ')}`,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
// Non-definitive patterns → sensitive
|
|
149
|
+
const result = {
|
|
150
|
+
classification: this.config.blockSensitive ? 'blocked' : 'sensitive',
|
|
151
|
+
reason: `Potential sensitive content: ${patterns.map(p => p.label).join(', ')}`,
|
|
152
|
+
};
|
|
153
|
+
if (this.config.blockSensitive) {
|
|
154
|
+
this.metrics.blocked++;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
this.metrics.sensitive++;
|
|
158
|
+
}
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
// Stage 2: LLM classification (if available and no patterns found)
|
|
162
|
+
if (this.config.llmClassify) {
|
|
163
|
+
this.metrics.llmClassifications++;
|
|
164
|
+
const llmResponse = await this.config.llmClassify(content, LLM_CLASSIFIER_PROMPT);
|
|
165
|
+
const result = parseLLMResponse(llmResponse);
|
|
166
|
+
// Apply blockSensitive policy
|
|
167
|
+
if (result.classification === 'sensitive' && this.config.blockSensitive) {
|
|
168
|
+
result.classification = 'blocked';
|
|
169
|
+
}
|
|
170
|
+
this.metrics[result.classification]++;
|
|
171
|
+
return result;
|
|
172
|
+
}
|
|
173
|
+
// No patterns, no LLM → safe
|
|
174
|
+
this.metrics.safe++;
|
|
175
|
+
return { classification: 'safe' };
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
this.metrics.errors++;
|
|
179
|
+
// Fail-open: classification errors don't block messages
|
|
180
|
+
// (availability > perfect security for a behavioral layer)
|
|
181
|
+
return {
|
|
182
|
+
classification: 'safe',
|
|
183
|
+
reason: `Classification error (fail-open): ${err instanceof Error ? err.message : 'unknown'}`,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get classifier metrics for observability.
|
|
189
|
+
*/
|
|
190
|
+
getMetrics() {
|
|
191
|
+
return { ...this.metrics };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Create a disabled (no-op) classifier.
|
|
196
|
+
* Used as default when content classification is not configured.
|
|
197
|
+
*/
|
|
198
|
+
export function createDisabledClassifier() {
|
|
199
|
+
return new ContentClassifier({ enabled: false });
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=ContentClassifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentClassifier.js","sourceRoot":"","sources":["../../src/threadline/ContentClassifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InboundMessageGate — Pre-filter for relay inbound messages.
|
|
3
|
+
*
|
|
4
|
+
* Gates on sender identity, trust level, rate limits, and payload size.
|
|
5
|
+
* Does NOT determine delivery mode — that's AutonomyGate's job.
|
|
6
|
+
*
|
|
7
|
+
* Part of PROP-relay-auto-connect.
|
|
8
|
+
*/
|
|
9
|
+
import type { AgentTrustManager, AgentTrustLevel } from './AgentTrustManager.js';
|
|
10
|
+
import type { ThreadlineRouter } from './ThreadlineRouter.js';
|
|
11
|
+
import type { ReceivedMessage } from './client/ThreadlineClient.js';
|
|
12
|
+
export interface InboundGateConfig {
|
|
13
|
+
/** Max payload size in bytes (default: 64KB) */
|
|
14
|
+
maxPayloadBytes?: number;
|
|
15
|
+
/** Per-trust-level rate limits */
|
|
16
|
+
rateLimits?: Partial<Record<AgentTrustLevel, {
|
|
17
|
+
probesPerHour: number;
|
|
18
|
+
messagesPerHour: number;
|
|
19
|
+
messagesPerDay: number;
|
|
20
|
+
}>>;
|
|
21
|
+
}
|
|
22
|
+
export interface GateDecision {
|
|
23
|
+
action: 'pass' | 'block';
|
|
24
|
+
reason?: string;
|
|
25
|
+
fingerprint?: string;
|
|
26
|
+
message?: ReceivedMessage;
|
|
27
|
+
trustLevel?: AgentTrustLevel;
|
|
28
|
+
}
|
|
29
|
+
export declare class InboundMessageGate {
|
|
30
|
+
private readonly trustManager;
|
|
31
|
+
private router;
|
|
32
|
+
private readonly config;
|
|
33
|
+
private readonly rateLimiter;
|
|
34
|
+
private readonly maxPayloadBytes;
|
|
35
|
+
private cleanupTimer;
|
|
36
|
+
private metrics;
|
|
37
|
+
constructor(trustManager: AgentTrustManager, router: ThreadlineRouter | null, config?: InboundGateConfig);
|
|
38
|
+
/**
|
|
39
|
+
* Late-bind the router after server initialization.
|
|
40
|
+
* The router isn't available at bootstrap time — it's created in server.ts
|
|
41
|
+
* after the Threadline bootstrap completes.
|
|
42
|
+
*/
|
|
43
|
+
setRouter(router: ThreadlineRouter): void;
|
|
44
|
+
/**
|
|
45
|
+
* Evaluate an inbound relay message.
|
|
46
|
+
* Returns 'pass' to route to ThreadlineRouter/AutonomyGate,
|
|
47
|
+
* or 'block' with reason.
|
|
48
|
+
*/
|
|
49
|
+
evaluate(message: ReceivedMessage): Promise<GateDecision>;
|
|
50
|
+
/**
|
|
51
|
+
* Get gate metrics for observability.
|
|
52
|
+
*/
|
|
53
|
+
getMetrics(): {
|
|
54
|
+
passed: number;
|
|
55
|
+
blocked: number;
|
|
56
|
+
blockedByTrust: number;
|
|
57
|
+
blockedByRate: number;
|
|
58
|
+
blockedBySize: number;
|
|
59
|
+
probesHandled: number;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Shutdown: cleanup timers.
|
|
63
|
+
*/
|
|
64
|
+
shutdown(): void;
|
|
65
|
+
private classifyOperation;
|
|
66
|
+
private estimatePayloadSize;
|
|
67
|
+
private getRateLimits;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=InboundMessageGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InboundMessageGate.d.ts","sourceRoot":"","sources":["../../src/threadline/InboundMessageGate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAIpE,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC3H;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AA6ED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,YAAY,CAA+C;IAGnE,OAAO,CAAC,OAAO,CAOb;gBAGA,YAAY,EAAE,iBAAiB,EAC/B,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAC/B,MAAM,GAAE,iBAAsB;IAYhC;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAIzC;;;;OAIG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IA2D/D;;OAEG;IACH,UAAU;;;;;;;;IAIV;;OAEG;IACH,QAAQ,IAAI,IAAI;IAShB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,aAAa;CAMtB"}
|