@agent-link/server 0.1.316 → 0.1.318
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/entra.d.ts +16 -0
- package/dist/entra.js +54 -0
- package/dist/entra.js.map +1 -0
- package/dist/session-manager.d.ts +10 -0
- package/dist/session-manager.js +13 -0
- package/dist/session-manager.js.map +1 -1
- package/dist/ws-agent.js +90 -4
- package/dist/ws-agent.js.map +1 -1
- package/dist/ws-client.js +95 -9
- package/dist/ws-client.js.map +1 -1
- package/package.json +3 -2
- package/web/dist/assets/{cssMode-C9yHRcou.js → cssMode-DsYeGpsY.js} +1 -1
- package/web/dist/assets/{editor.main-Bebs377N.js → editor.main-D14Ei3VN.js} +3 -3
- package/web/dist/assets/{freemarker2-CRgani2X.js → freemarker2-B297NgYx.js} +1 -1
- package/web/dist/assets/{handlebars-D7fKESU-.js → handlebars-CFNoZvqS.js} +1 -1
- package/web/dist/assets/{html-BiFxT-gl.js → html-DIhUgRLM.js} +1 -1
- package/web/dist/assets/{htmlMode-BWNIZAG-.js → htmlMode-DSPdUzmU.js} +1 -1
- package/web/dist/assets/{index-CX6HSj4r.js → index-BzTjcZpM.js} +3 -3
- package/web/dist/assets/{javascript-4A1G680A.js → javascript-4zdBn-MC.js} +1 -1
- package/web/dist/assets/{jsonMode-CSbPbOLN.js → jsonMode-But5urIv.js} +1 -1
- package/web/dist/assets/{liquid-BRP6Exy_.js → liquid-Bcr8yHwH.js} +1 -1
- package/web/dist/assets/{lspLanguageFeatures-tUIZIohp.js → lspLanguageFeatures-r-zKWpgt.js} +1 -1
- package/web/dist/assets/{mdx-BLD0l1_3.js → mdx-jM1yE_dy.js} +1 -1
- package/web/dist/assets/{msalAuth-sOt-7u8x.js → msalAuth-Br2JW59l.js} +1 -1
- package/web/dist/assets/{python-Ahd9b4HT.js → python-D3OwNqB1.js} +1 -1
- package/web/dist/assets/{razor-ru-BTiHV.js → razor-jOM-3x1h.js} +1 -1
- package/web/dist/assets/{tsMode-NNbdD34o.js → tsMode-DNS4fWD8.js} +1 -1
- package/web/dist/assets/{typescript-Ctub8Z_t.js → typescript-D50iR93V.js} +1 -1
- package/web/dist/assets/{xml-Yrmhwrh6.js → xml-BoD1o9fW.js} +1 -1
- package/web/dist/assets/{yaml-C4x50g3a.js → yaml-2AbPDlXI.js} +1 -1
- package/web/dist/index.html +1 -1
- package/web/dist/locales/en.json +6 -0
- package/web/dist/locales/zh.json +6 -0
package/dist/entra.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as jose from 'jose';
|
|
2
|
+
export { jose };
|
|
3
|
+
export interface EntraIdentity {
|
|
4
|
+
oid: string;
|
|
5
|
+
email: string;
|
|
6
|
+
tid: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Verify an Entra ID token (JWT) and extract identity claims.
|
|
10
|
+
* Returns the identity on success, or throws on failure.
|
|
11
|
+
*/
|
|
12
|
+
export declare function verifyEntraToken(idToken: string): Promise<EntraIdentity>;
|
|
13
|
+
/**
|
|
14
|
+
* Check whether Entra identity verification is configured on this server.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isEntraConfigured(): boolean;
|
package/dist/entra.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as jose from 'jose';
|
|
2
|
+
export { jose };
|
|
3
|
+
// Cache the JWKS remote key set per tenant to avoid repeated fetches
|
|
4
|
+
const jwksCache = new Map();
|
|
5
|
+
function getJWKS(tenantId) {
|
|
6
|
+
let jwks = jwksCache.get(tenantId);
|
|
7
|
+
if (!jwks) {
|
|
8
|
+
const url = new URL(`https://login.microsoftonline.com/${tenantId}/discovery/v2.0/keys`);
|
|
9
|
+
jwks = jose.createRemoteJWKSet(url);
|
|
10
|
+
jwksCache.set(tenantId, jwks);
|
|
11
|
+
}
|
|
12
|
+
return jwks;
|
|
13
|
+
}
|
|
14
|
+
// Entra config from environment — same vars used by http.ts
|
|
15
|
+
const entraClientId = process.env.ENTRA_CLIENT_ID;
|
|
16
|
+
const entraTenantId = process.env.ENTRA_TENANT_ID;
|
|
17
|
+
/**
|
|
18
|
+
* Verify an Entra ID token (JWT) and extract identity claims.
|
|
19
|
+
* Returns the identity on success, or throws on failure.
|
|
20
|
+
*/
|
|
21
|
+
export async function verifyEntraToken(idToken) {
|
|
22
|
+
if (!entraClientId || !entraTenantId) {
|
|
23
|
+
throw new Error('Entra ID not configured on server');
|
|
24
|
+
}
|
|
25
|
+
const jwks = getJWKS(entraTenantId);
|
|
26
|
+
const { payload } = await jose.jwtVerify(idToken, jwks, {
|
|
27
|
+
issuer: `https://login.microsoftonline.com/${entraTenantId}/v2.0`,
|
|
28
|
+
audience: entraClientId,
|
|
29
|
+
});
|
|
30
|
+
const oid = payload.oid;
|
|
31
|
+
const email = (payload.preferred_username || payload.email);
|
|
32
|
+
const tid = payload.tid;
|
|
33
|
+
if (!oid) {
|
|
34
|
+
throw new Error('Token missing oid claim');
|
|
35
|
+
}
|
|
36
|
+
if (!tid) {
|
|
37
|
+
throw new Error('Token missing tid claim');
|
|
38
|
+
}
|
|
39
|
+
if (tid !== entraTenantId) {
|
|
40
|
+
throw new Error(`Tenant mismatch: expected ${entraTenantId}, got ${tid}`);
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
oid,
|
|
44
|
+
email: email || 'unknown',
|
|
45
|
+
tid,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check whether Entra identity verification is configured on this server.
|
|
50
|
+
*/
|
|
51
|
+
export function isEntraConfigured() {
|
|
52
|
+
return !!(entraClientId && entraTenantId);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=entra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entra.js","sourceRoot":"","sources":["../src/entra.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,CAAC;AAQhB,qEAAqE;AACrE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsD,CAAC;AAEhF,SAAS,OAAO,CAAC,QAAgB;IAC/B,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,qCAAqC,QAAQ,sBAAsB,CAAC,CAAC;QACzF,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACpC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4DAA4D;AAC5D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAClD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe;IACpD,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEpC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;QACtD,MAAM,EAAE,qCAAqC,aAAa,OAAO;QACjE,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAyB,CAAC;IAC9C,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAuB,CAAC;IAClF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAyB,CAAC;IAE9C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,aAAa,SAAS,GAAG,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,GAAG;QACH,KAAK,EAAE,KAAK,IAAI,SAAS;QACzB,GAAG;KACJ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -13,6 +13,9 @@ export interface AgentSession {
|
|
|
13
13
|
passwordHash: string | null;
|
|
14
14
|
passwordSalt: string | null;
|
|
15
15
|
entra: boolean;
|
|
16
|
+
entraVerified: boolean;
|
|
17
|
+
ownerOid?: string;
|
|
18
|
+
ownerEmail?: string;
|
|
16
19
|
}
|
|
17
20
|
export interface WebClient {
|
|
18
21
|
ws: WebSocket;
|
|
@@ -21,11 +24,18 @@ export interface WebClient {
|
|
|
21
24
|
sessionKey: Uint8Array | null;
|
|
22
25
|
connectedAt: Date;
|
|
23
26
|
isAlive: boolean;
|
|
27
|
+
entraVerified?: boolean;
|
|
24
28
|
}
|
|
25
29
|
export declare class SessionManager {
|
|
26
30
|
readonly agents: Map<string, AgentSession>;
|
|
27
31
|
readonly sessionToAgent: Map<string, string>;
|
|
28
32
|
readonly webClients: Map<string, WebClient>;
|
|
33
|
+
readonly sessionOwners: Map<string, {
|
|
34
|
+
oid: string;
|
|
35
|
+
email: string;
|
|
36
|
+
updatedAt: number;
|
|
37
|
+
}>;
|
|
38
|
+
private static readonly SESSION_OWNER_TTL;
|
|
29
39
|
generateSessionId(): string;
|
|
30
40
|
registerAgent(agentId: string, agent: AgentSession): void;
|
|
31
41
|
removeAgent(agentId: string): void;
|
package/dist/session-manager.js
CHANGED
|
@@ -3,6 +3,10 @@ export class SessionManager {
|
|
|
3
3
|
agents = new Map();
|
|
4
4
|
sessionToAgent = new Map();
|
|
5
5
|
webClients = new Map();
|
|
6
|
+
// Persists ownerOid across agent disconnect/reconnect — keyed by sessionId.
|
|
7
|
+
// Entries include a timestamp and are pruned during heartbeat cleanup.
|
|
8
|
+
sessionOwners = new Map();
|
|
9
|
+
static SESSION_OWNER_TTL = 24 * 60 * 60 * 1000; // 24 hours
|
|
6
10
|
generateSessionId() {
|
|
7
11
|
return randomBytes(12).toString('base64url');
|
|
8
12
|
}
|
|
@@ -81,6 +85,15 @@ export class SessionManager {
|
|
|
81
85
|
}
|
|
82
86
|
catch { /* swallow */ }
|
|
83
87
|
}
|
|
88
|
+
// Prune expired session owners (no agent + no clients + past TTL)
|
|
89
|
+
const now = Date.now();
|
|
90
|
+
for (const [sessionId, owner] of this.sessionOwners) {
|
|
91
|
+
if (now - owner.updatedAt > SessionManager.SESSION_OWNER_TTL
|
|
92
|
+
&& !this.sessionToAgent.has(sessionId)
|
|
93
|
+
&& !this.getClientsForSession(sessionId).length) {
|
|
94
|
+
this.sessionOwners.delete(sessionId);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
84
97
|
return { removedAgents, removedClients };
|
|
85
98
|
}
|
|
86
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/ws-agent.js
CHANGED
|
@@ -5,6 +5,7 @@ import { auth } from './auth-manager.js';
|
|
|
5
5
|
import { MessageRelay } from './message-relay.js';
|
|
6
6
|
import { generateSessionKey, encodeKey, parseMessage, encryptAndSend } from './encryption.js';
|
|
7
7
|
import { handleAgentTunnelMessage, updateProxyConfig, cleanupAgentTunnels } from './tunnel.js';
|
|
8
|
+
import { verifyEntraToken, jose } from './entra.js';
|
|
8
9
|
const agentRelay = new MessageRelay();
|
|
9
10
|
export function handleAgentConnection(ws, req) {
|
|
10
11
|
const url = new URL(req.url || '/', `http://${req.headers.host}`);
|
|
@@ -29,6 +30,12 @@ export function handleAgentConnection(ws, req) {
|
|
|
29
30
|
if (!requestedSessionId) {
|
|
30
31
|
console.log(`[Agent] No sessionId in query params for ${name} — generated new: ${sessionId}`);
|
|
31
32
|
}
|
|
33
|
+
// Preserve ownerOid from session-level store (survives agent disconnect/removal)
|
|
34
|
+
const sessionOwner = requestedSessionId ? sessions.sessionOwners.get(requestedSessionId) : undefined;
|
|
35
|
+
// Also check the previous agent object (in case it hasn't been removed yet)
|
|
36
|
+
const previousAgent = requestedSessionId ? sessions.getAgentBySession(requestedSessionId) : undefined;
|
|
37
|
+
const previousOwnerOid = sessionOwner?.oid || previousAgent?.ownerOid;
|
|
38
|
+
const previousOwnerEmail = sessionOwner?.email || previousAgent?.ownerEmail;
|
|
32
39
|
const sessionKey = generateSessionKey();
|
|
33
40
|
const agent = {
|
|
34
41
|
ws,
|
|
@@ -44,6 +51,9 @@ export function handleAgentConnection(ws, req) {
|
|
|
44
51
|
passwordHash,
|
|
45
52
|
passwordSalt,
|
|
46
53
|
entra,
|
|
54
|
+
entraVerified: false,
|
|
55
|
+
ownerOid: previousOwnerOid,
|
|
56
|
+
ownerEmail: previousOwnerEmail,
|
|
47
57
|
};
|
|
48
58
|
sessions.registerAgent(agentId, agent);
|
|
49
59
|
// Persist password auth per session so it survives agent disconnects
|
|
@@ -64,16 +74,29 @@ export function handleAgentConnection(ws, req) {
|
|
|
64
74
|
console.error(`[Agent] Failed to send registration to ${name}:`, err.message);
|
|
65
75
|
}
|
|
66
76
|
// Notify any web clients already connected to this session (reconnect scenario)
|
|
77
|
+
const isEntraSession = entra || !!previousOwnerOid;
|
|
67
78
|
for (const client of sessions.getClientsForSession(sessionId)) {
|
|
68
79
|
if (client.ws.readyState === WebSocket.OPEN) {
|
|
69
80
|
encryptAndSend(client.ws, {
|
|
70
81
|
type: 'agent_reconnected',
|
|
71
82
|
agent: { agentId, name, hostname, workDir, version },
|
|
83
|
+
entraVerifying: isEntraSession, // tell web client agent is re-verifying
|
|
72
84
|
}, client.sessionKey).catch((err) => {
|
|
73
85
|
console.error(`[Agent] Failed to notify client of reconnect:`, err.message);
|
|
74
86
|
});
|
|
75
87
|
}
|
|
76
88
|
}
|
|
89
|
+
// Entra verification timeout: if agent connects with entra=1 (or reconnects to
|
|
90
|
+
// an Entra-protected session) but doesn't verify within 30s, close the socket.
|
|
91
|
+
if (entra || previousOwnerOid) {
|
|
92
|
+
setTimeout(() => {
|
|
93
|
+
const current = sessions.getAgent(agentId);
|
|
94
|
+
if (current && current.ws === ws && !current.entraVerified) {
|
|
95
|
+
console.error(`[Agent] Entra verification timeout for ${name} — closing`);
|
|
96
|
+
ws.close(4408, 'Entra verification timeout');
|
|
97
|
+
}
|
|
98
|
+
}, 30_000);
|
|
99
|
+
}
|
|
77
100
|
ws.on('message', (data) => {
|
|
78
101
|
agentRelay.enqueue(agentId, () => handleAgentMessage(agentId, data.toString()));
|
|
79
102
|
});
|
|
@@ -122,6 +145,66 @@ async function handleAgentMessage(agentId, raw) {
|
|
|
122
145
|
agent.workDir = msg.workDir;
|
|
123
146
|
console.log(`[Agent] ${agent.name} changed workDir to: ${msg.workDir}`);
|
|
124
147
|
}
|
|
148
|
+
// Block all messages from unverified agents on Entra-protected sessions (except entra_auth itself)
|
|
149
|
+
if ((agent.entra || agent.ownerOid) && !agent.entraVerified && msg.type !== 'entra_auth') {
|
|
150
|
+
console.warn(`[Agent] Blocked ${msg.type} from unverified agent ${agent.name}`);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Handle entra_auth: verify JWT and bind identity to session
|
|
154
|
+
if (msg.type === 'entra_auth' && typeof msg.token === 'string') {
|
|
155
|
+
try {
|
|
156
|
+
const identity = await verifyEntraToken(msg.token);
|
|
157
|
+
if (agent.ownerOid && agent.ownerOid !== identity.oid) {
|
|
158
|
+
// Reconnect with different identity — reject
|
|
159
|
+
console.error(`[Agent] Entra oid mismatch for session ${agent.sessionId}: expected ${agent.ownerOid}, got ${identity.oid}`);
|
|
160
|
+
await encryptAndSend(agent.ws, {
|
|
161
|
+
type: 'entra_auth_failed',
|
|
162
|
+
reason: 'oid_mismatch',
|
|
163
|
+
}, agent.sessionKey);
|
|
164
|
+
agent.ws.close(4403, 'Entra identity mismatch');
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
agent.ownerOid = identity.oid;
|
|
168
|
+
agent.ownerEmail = identity.email;
|
|
169
|
+
agent.entraVerified = true;
|
|
170
|
+
// Persist ownerOid at session level so it survives agent disconnect
|
|
171
|
+
sessions.sessionOwners.set(agent.sessionId, { oid: identity.oid, email: identity.email, updatedAt: Date.now() });
|
|
172
|
+
console.log(`[Agent] Entra identity verified for ${agent.name}: ${identity.email} (oid: ${identity.oid})`);
|
|
173
|
+
await encryptAndSend(agent.ws, {
|
|
174
|
+
type: 'entra_auth_ok',
|
|
175
|
+
email: identity.email,
|
|
176
|
+
}, agent.sessionKey);
|
|
177
|
+
// Fix 2: Notify existing web clients that Entra verification is now required
|
|
178
|
+
for (const client of sessions.getClientsForSession(agent.sessionId)) {
|
|
179
|
+
if (client.ws.readyState !== WebSocket.OPEN)
|
|
180
|
+
continue;
|
|
181
|
+
if (!client.entraVerified) {
|
|
182
|
+
await encryptAndSend(client.ws, { type: 'entra_auth_required' }, client.sessionKey);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// Agent (re-)verified — clear any token-expired banner on verified clients
|
|
186
|
+
await encryptAndSend(client.ws, { type: 'entra_agent_token_restored' }, client.sessionKey);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
const reason = err instanceof jose.errors.JWTExpired ? 'token_expired' : 'invalid_token';
|
|
192
|
+
console.error(`[Agent] Entra auth failed for ${agent.name}:`, err.message);
|
|
193
|
+
await encryptAndSend(agent.ws, {
|
|
194
|
+
type: 'entra_auth_failed',
|
|
195
|
+
reason,
|
|
196
|
+
}, agent.sessionKey);
|
|
197
|
+
// Notify web clients that agent token is expired
|
|
198
|
+
if (reason === 'token_expired') {
|
|
199
|
+
for (const client of sessions.getClientsForSession(agent.sessionId)) {
|
|
200
|
+
if (client.ws.readyState === WebSocket.OPEN && client.entraVerified) {
|
|
201
|
+
await encryptAndSend(client.ws, { type: 'entra_agent_token_expired' }, client.sessionKey);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return; // entra_auth is not forwarded to web clients
|
|
207
|
+
}
|
|
125
208
|
// Intercept proxy_config_updated to cache config on server side
|
|
126
209
|
if (msg.type === 'proxy_config_updated' && msg.config) {
|
|
127
210
|
updateProxyConfig(agent.agentId, msg.config);
|
|
@@ -134,10 +217,13 @@ async function handleAgentMessage(agentId, raw) {
|
|
|
134
217
|
// Forward agent messages to all web clients connected to this session
|
|
135
218
|
let relayCount = 0;
|
|
136
219
|
for (const client of sessions.getClientsForSession(agent.sessionId)) {
|
|
137
|
-
if (client.ws.readyState
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
220
|
+
if (client.ws.readyState !== WebSocket.OPEN)
|
|
221
|
+
continue;
|
|
222
|
+
// Skip unverified web clients on Entra-protected sessions
|
|
223
|
+
if ((agent.ownerOid || agent.entra) && !client.entraVerified)
|
|
224
|
+
continue;
|
|
225
|
+
await encryptAndSend(client.ws, msg, client.sessionKey);
|
|
226
|
+
relayCount++;
|
|
141
227
|
}
|
|
142
228
|
if (relayCount === 0 && msg.type !== 'claude_output' && msg.type !== 'pong') {
|
|
143
229
|
console.warn(`[Agent] No web clients to relay ${msg.type} for session ${agent.sessionId}`);
|
package/dist/ws-agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-agent.js","sourceRoot":"","sources":["../src/ws-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ws-agent.js","sourceRoot":"","sources":["../src/ws-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAEtC,MAAM,UAAU,qBAAqB,CAAC,EAAa,EAAE,GAAoB;IACvE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;IAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;IAEpD,6DAA6D;IAC7D,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC;QACtB,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,uEAAuE;IACvE,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,kBAAkB,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IACrE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,qBAAqB,SAAS,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,iFAAiF;IACjF,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrG,4EAA4E;IAC5E,MAAM,aAAa,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,MAAM,gBAAgB,GAAG,YAAY,EAAE,GAAG,IAAI,aAAa,EAAE,QAAQ,CAAC;IACtE,MAAM,kBAAkB,GAAG,YAAY,EAAE,KAAK,IAAI,aAAa,EAAE,UAAU,CAAC;IAE5E,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IAExC,MAAM,KAAK,GAAiB;QAC1B,EAAE;QACF,OAAO;QACP,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,OAAO;QACP,SAAS;QACT,UAAU;QACV,WAAW,EAAE,IAAI,IAAI,EAAE;QACvB,OAAO,EAAE,IAAI;QACb,YAAY;QACZ,YAAY;QACZ,KAAK;QACL,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,gBAAgB;QAC1B,UAAU,EAAE,kBAAkB;KAC/B,CAAC;IAEF,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEvC,qEAAqE;IACrE,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,KAAK,OAAO,eAAe,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAExK,0EAA0E;IAC1E,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,IAAI,EAAE,YAAY;YAClB,OAAO;YACP,SAAS;YACT,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;SAClC,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,IAAI,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IAC3F,CAAC;IAED,gFAAgF;IAChF,MAAM,cAAc,GAAG,KAAK,IAAI,CAAC,CAAC,gBAAgB,CAAC;IACnD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9D,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC5C,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE;gBACxB,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;gBACpD,cAAc,EAAE,cAAc,EAAE,wCAAwC;aACzE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClC,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,+EAA+E;IAC/E,IAAI,KAAK,IAAI,gBAAgB,EAAE,CAAC;QAC9B,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC3D,OAAO,CAAC,KAAK,CAAC,0CAA0C,IAAI,YAAY,CAAC,CAAC;gBAC1E,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,EAAE,MAAM,CAAC,CAAC;IACb,CAAC;IAED,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;QACxB,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC;QAC1D,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5B,2EAA2E;QAC3E,0EAA0E;QAC1E,gFAAgF;QAChF,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACjC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAE7B,kDAAkD;YAClD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9D,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC5C,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;wBACzF,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;oBAC1F,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACjB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,+BAA+B,IAAI,KAAK,OAAO,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,GAAW;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,gDAAgD,OAAO,SAAS,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACpH,OAAO;IACT,CAAC;IAED,2CAA2C;IAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,yDAAyD;IACzD,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACtE,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,mGAAmG;IACnG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,0BAA0B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,6DAA6D;IAC7D,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACtD,6CAA6C;gBAC7C,OAAO,CAAC,KAAK,CAAC,0CAA0C,KAAK,CAAC,SAAS,cAAc,KAAK,CAAC,QAAQ,SAAS,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC5H,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE;oBAC7B,IAAI,EAAE,mBAAmB;oBACzB,MAAM,EAAE,cAAc;iBACvB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;gBACrB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;YAC9B,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC;YAClC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;YAC3B,oEAAoE;YACpE,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACjH,OAAO,CAAC,GAAG,CAAC,uCAAuC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;YAC3G,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE;gBAC7B,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAErB,6EAA6E;YAC7E,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpE,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;oBAAE,SAAS;gBACtD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;oBAC1B,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBACtF,CAAC;qBAAM,CAAC;oBACN,2EAA2E;oBAC3E,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC7F,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,GAAG,YAAY,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC;YACzF,OAAO,CAAC,KAAK,CAAC,iCAAiC,KAAK,CAAC,IAAI,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACtF,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE;gBAC7B,IAAI,EAAE,mBAAmB;gBACzB,MAAM;aACP,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAErB,iDAAiD;YACjD,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;gBAC/B,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpE,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;wBACpE,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC5F,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,6CAA6C;IACvD,CAAC;IAED,gEAAgE;IAChE,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACtD,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,MAAgG,CAAC,CAAC;QACvI,6CAA6C;IAC/C,CAAC;IAED,0EAA0E;IAC1E,IAAI,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,sEAAsE;IACtE,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACpE,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;YAAE,SAAS;QACtD,0DAA0D;QAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,SAAS;QACvE,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACxD,UAAU,EAAE,CAAC;IACf,CAAC;IACD,IAAI,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,IAAI,gBAAgB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC"}
|
package/dist/ws-client.js
CHANGED
|
@@ -5,6 +5,7 @@ import { sessions } from './session-manager.js';
|
|
|
5
5
|
import { auth } from './auth-manager.js';
|
|
6
6
|
import { MessageRelay } from './message-relay.js';
|
|
7
7
|
import { generateSessionKey, encodeKey, parseMessage, encryptAndSend } from './encryption.js';
|
|
8
|
+
import { verifyEntraToken, jose } from './entra.js';
|
|
8
9
|
const require = createRequire(import.meta.url);
|
|
9
10
|
const serverPkg = require('../package.json');
|
|
10
11
|
const clientRelay = new MessageRelay();
|
|
@@ -133,19 +134,24 @@ function completeConnection(ws, clientId, sessionId, agent, authToken) {
|
|
|
133
134
|
isAlive: true,
|
|
134
135
|
};
|
|
135
136
|
sessions.registerClient(clientId, client);
|
|
136
|
-
// Build connected payload
|
|
137
|
+
// Build connected payload — hide agent details for Entra-protected sessions
|
|
138
|
+
// until the web client passes identity verification
|
|
139
|
+
const sessionOwner = sessions.sessionOwners.get(sessionId);
|
|
140
|
+
const isEntraProtected = !!(agent?.ownerOid || agent?.entra || sessionOwner);
|
|
141
|
+
const agentInfo = agent && !isEntraProtected ? {
|
|
142
|
+
agentId: agent.agentId,
|
|
143
|
+
name: agent.name,
|
|
144
|
+
hostname: agent.hostname,
|
|
145
|
+
workDir: agent.workDir,
|
|
146
|
+
version: agent.version,
|
|
147
|
+
} : null;
|
|
137
148
|
const payload = {
|
|
138
149
|
type: 'connected',
|
|
139
150
|
clientId,
|
|
140
151
|
sessionKey: encodeKey(sessionKey),
|
|
141
152
|
serverVersion: serverPkg.version,
|
|
142
|
-
agent:
|
|
143
|
-
|
|
144
|
-
name: agent.name,
|
|
145
|
-
hostname: agent.hostname,
|
|
146
|
-
workDir: agent.workDir,
|
|
147
|
-
version: agent.version,
|
|
148
|
-
} : null,
|
|
153
|
+
agent: agentInfo,
|
|
154
|
+
entraRequired: isEntraProtected,
|
|
149
155
|
latestAgentVersion: serverPkg.latestAgentVersion || '',
|
|
150
156
|
};
|
|
151
157
|
if (authToken) {
|
|
@@ -158,6 +164,10 @@ function completeConnection(ws, clientId, sessionId, agent, authToken) {
|
|
|
158
164
|
console.error(`[Web] Failed to send connected payload to ${clientId.slice(0, 8)}:`, err.message);
|
|
159
165
|
}
|
|
160
166
|
console.log(`[Web] Client ${clientId.slice(0, 8)} connected to session ${sessionId}, agent: ${agent ? agent.name : 'none'}${authToken ? ' (authenticated)' : ''}`);
|
|
167
|
+
// If session is Entra-protected, tell web client it must verify identity
|
|
168
|
+
if (isEntraProtected) {
|
|
169
|
+
encryptAndSend(ws, { type: 'entra_auth_required' }, sessionKey).catch(() => { });
|
|
170
|
+
}
|
|
161
171
|
ws.on('message', (data) => {
|
|
162
172
|
clientRelay.enqueue(clientId, () => handleWebMessage(clientId, data.toString()));
|
|
163
173
|
});
|
|
@@ -185,12 +195,88 @@ async function handleWebMessage(clientId, raw) {
|
|
|
185
195
|
if (msg.type !== 'ping') {
|
|
186
196
|
console.log(`[Web] ${clientId.slice(0, 8)} → ${msg.type}`);
|
|
187
197
|
}
|
|
188
|
-
// Find the agent for this session
|
|
198
|
+
// Find the agent for this session
|
|
189
199
|
const agent = sessions.getAgentBySession(client.sessionId);
|
|
200
|
+
// Handle entra_auth from web client
|
|
201
|
+
if (msg.type === 'entra_auth' && typeof msg.token === 'string') {
|
|
202
|
+
const sessionOwnerForAuth = sessions.sessionOwners.get(client.sessionId);
|
|
203
|
+
if (!agent && !sessionOwnerForAuth) {
|
|
204
|
+
// No agent connected and no prior Entra owner — don't pre-verify, wait for agent
|
|
205
|
+
await encryptAndSend(client.ws, {
|
|
206
|
+
type: 'entra_auth_failed',
|
|
207
|
+
reason: 'agent_pending',
|
|
208
|
+
}, client.sessionKey);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
// Determine the ownerOid to check against (session-level or agent-level)
|
|
212
|
+
const ownerOid = sessionOwnerForAuth?.oid || agent?.ownerOid;
|
|
213
|
+
if (!ownerOid && !agent?.entra) {
|
|
214
|
+
// Session doesn't require Entra verification — non-Entra agent
|
|
215
|
+
await encryptAndSend(client.ws, { type: 'entra_auth_ok', email: '' }, client.sessionKey);
|
|
216
|
+
client.entraVerified = true;
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (!ownerOid && agent?.entra) {
|
|
220
|
+
// Agent has entra=1 but hasn't verified yet — tell web client to wait
|
|
221
|
+
await encryptAndSend(client.ws, {
|
|
222
|
+
type: 'entra_auth_failed',
|
|
223
|
+
reason: 'agent_pending',
|
|
224
|
+
}, client.sessionKey);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
try {
|
|
228
|
+
const identity = await verifyEntraToken(msg.token);
|
|
229
|
+
if (ownerOid && identity.oid !== ownerOid) {
|
|
230
|
+
console.error(`[Web] Entra oid mismatch for client ${clientId.slice(0, 8)}: session owner ${ownerOid}, client ${identity.oid}`);
|
|
231
|
+
await encryptAndSend(client.ws, {
|
|
232
|
+
type: 'entra_auth_failed',
|
|
233
|
+
reason: 'oid_mismatch',
|
|
234
|
+
}, client.sessionKey);
|
|
235
|
+
client.ws.close(4403, 'Entra identity mismatch');
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
client.entraVerified = true;
|
|
239
|
+
console.log(`[Web] Entra identity verified for client ${clientId.slice(0, 8)}: ${identity.email}`);
|
|
240
|
+
await encryptAndSend(client.ws, {
|
|
241
|
+
type: 'entra_auth_ok',
|
|
242
|
+
email: identity.email,
|
|
243
|
+
agent: agent ? {
|
|
244
|
+
agentId: agent.agentId,
|
|
245
|
+
name: agent.name,
|
|
246
|
+
hostname: agent.hostname,
|
|
247
|
+
workDir: agent.workDir,
|
|
248
|
+
version: agent.version,
|
|
249
|
+
} : null,
|
|
250
|
+
}, client.sessionKey);
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
const reason = err instanceof jose.errors.JWTExpired ? 'token_expired' : 'invalid_token';
|
|
254
|
+
console.error(`[Web] Entra auth failed for client ${clientId.slice(0, 8)}:`, err.message);
|
|
255
|
+
await encryptAndSend(client.ws, {
|
|
256
|
+
type: 'entra_auth_failed',
|
|
257
|
+
reason,
|
|
258
|
+
}, client.sessionKey);
|
|
259
|
+
}
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
// Block non-keepalive messages from unverified web clients on Entra-protected sessions
|
|
263
|
+
const sessionOwnerBlock = sessions.sessionOwners.get(client.sessionId);
|
|
264
|
+
if ((agent?.ownerOid || agent?.entra || sessionOwnerBlock) && !client.entraVerified && msg.type !== 'ping') {
|
|
265
|
+
await encryptAndSend(client.ws, {
|
|
266
|
+
type: 'error',
|
|
267
|
+
message: 'Entra identity verification required before sending messages',
|
|
268
|
+
}, client.sessionKey);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
190
271
|
if (!agent || agent.ws.readyState !== WebSocket.OPEN) {
|
|
191
272
|
await encryptAndSend(client.ws, { type: 'error', message: 'Agent not connected' }, client.sessionKey);
|
|
192
273
|
return;
|
|
193
274
|
}
|
|
275
|
+
// Block forwarding to unverified agent on Entra-protected sessions
|
|
276
|
+
if ((agent.entra || agent.ownerOid) && !agent.entraVerified) {
|
|
277
|
+
await encryptAndSend(client.ws, { type: 'error', message: 'Agent is verifying identity, please wait' }, client.sessionKey);
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
194
280
|
// Forward web client message to agent, encrypted with agent's session key
|
|
195
281
|
await encryptAndSend(agent.ws, msg, agent.sessionKey);
|
|
196
282
|
}
|
package/dist/ws-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-link/server",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"latestAgentVersion": "0.1.
|
|
3
|
+
"version": "0.1.318",
|
|
4
|
+
"latestAgentVersion": "0.1.145",
|
|
5
5
|
"description": "AgentLink relay server",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"commander": "^12.0.0",
|
|
47
47
|
"express": "^4.18.2",
|
|
48
|
+
"jose": "^6.2.2",
|
|
48
49
|
"tweetnacl": "^1.0.3",
|
|
49
50
|
"tweetnacl-util": "^0.15.1",
|
|
50
51
|
"ws": "^8.16.0"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,l as t}from"./editor.main-
|
|
1
|
+
import{c as e,l as t}from"./editor.main-D14Ei3VN.js";import{C as s,H as r,D as i,a as n,R as o,b as a,c as h,d as g,F as l,e as u,S as d,f as c,g as p}from"./lspLanguageFeatures-r-zKWpgt.js";import{h as m,i as _,j as w,t as f,k}from"./lspLanguageFeatures-r-zKWpgt.js";import"./index-BzTjcZpM.js";class v{constructor(e){this._defaults=e,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){if(!this._worker)return;Date.now()-this._lastUsedTime>12e4&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=e({moduleId:"vs/language/css/cssWorker",createWorker:()=>new Worker(new URL(""+new URL("css.worker-CqmadvsI.js",import.meta.url).href,import.meta.url),{type:"module"}),label:this._defaults.languageId,createData:{options:this._defaults.options,languageId:this._defaults.languageId}}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(...e){let t;return this._getClient().then(e=>{t=e}).then(t=>{if(this._worker)return this._worker.withSyncedResources(e)}).then(e=>t)}}function I(e){const m=[],_=[],w=new v(e);m.push(w);const f=(...e)=>w.getLanguageServiceWorker(...e);return function(){const{languageId:m,modeConfiguration:w}=e;R(_),w.completionItems&&_.push(t.registerCompletionItemProvider(m,new s(f,["/","-",":"]))),w.hovers&&_.push(t.registerHoverProvider(m,new r(f))),w.documentHighlights&&_.push(t.registerDocumentHighlightProvider(m,new i(f))),w.definitions&&_.push(t.registerDefinitionProvider(m,new n(f))),w.references&&_.push(t.registerReferenceProvider(m,new o(f))),w.documentSymbols&&_.push(t.registerDocumentSymbolProvider(m,new a(f))),w.rename&&_.push(t.registerRenameProvider(m,new h(f))),w.colors&&_.push(t.registerColorProvider(m,new g(f))),w.foldingRanges&&_.push(t.registerFoldingRangeProvider(m,new l(f))),w.diagnostics&&_.push(new u(m,f,e.onDidChange)),w.selectionRanges&&_.push(t.registerSelectionRangeProvider(m,new d(f))),w.documentFormattingEdits&&_.push(t.registerDocumentFormattingEditProvider(m,new c(f))),w.documentRangeFormattingEdits&&_.push(t.registerDocumentRangeFormattingEditProvider(m,new p(f)))}(),m.push(P(_)),P(m)}function P(e){return{dispose:()=>R(e)}}function R(e){for(;e.length;)e.pop().dispose()}export{s as CompletionAdapter,n as DefinitionAdapter,u as DiagnosticsAdapter,g as DocumentColorAdapter,c as DocumentFormattingEditProvider,i as DocumentHighlightAdapter,m as DocumentLinkAdapter,p as DocumentRangeFormattingEditProvider,a as DocumentSymbolAdapter,l as FoldingRangeAdapter,r as HoverAdapter,o as ReferenceAdapter,h as RenameAdapter,d as SelectionRangeAdapter,v as WorkerManager,_ as fromPosition,w as fromRange,I as setupMode,f as toRange,k as toTextEdit};
|