feat: enrich presence with roles
This commit is contained in:
@@ -15,6 +15,9 @@ export const PresenceEntrySchema = Type.Object(
|
||||
tags: Type.Optional(Type.Array(NonEmptyString)),
|
||||
text: Type.Optional(Type.String()),
|
||||
ts: Type.Integer({ minimum: 0 }),
|
||||
deviceId: Type.Optional(NonEmptyString),
|
||||
roles: Type.Optional(Type.Array(NonEmptyString)),
|
||||
scopes: Type.Optional(Type.Array(NonEmptyString)),
|
||||
instanceId: Type.Optional(NonEmptyString),
|
||||
},
|
||||
{ additionalProperties: false },
|
||||
|
||||
@@ -37,6 +37,7 @@ export const systemHandlers: GatewayRequestHandlers = {
|
||||
return;
|
||||
}
|
||||
const sessionKey = resolveMainSessionKeyFromConfig();
|
||||
const deviceId = typeof params.deviceId === "string" ? params.deviceId : undefined;
|
||||
const instanceId = typeof params.instanceId === "string" ? params.instanceId : undefined;
|
||||
const host = typeof params.host === "string" ? params.host : undefined;
|
||||
const ip = typeof params.ip === "string" ? params.ip : undefined;
|
||||
@@ -51,12 +52,21 @@ export const systemHandlers: GatewayRequestHandlers = {
|
||||
? params.lastInputSeconds
|
||||
: undefined;
|
||||
const reason = typeof params.reason === "string" ? params.reason : undefined;
|
||||
const roles =
|
||||
Array.isArray(params.roles) && params.roles.every((t) => typeof t === "string")
|
||||
? (params.roles as string[])
|
||||
: undefined;
|
||||
const scopes =
|
||||
Array.isArray(params.scopes) && params.scopes.every((t) => typeof t === "string")
|
||||
? (params.scopes as string[])
|
||||
: undefined;
|
||||
const tags =
|
||||
Array.isArray(params.tags) && params.tags.every((t) => typeof t === "string")
|
||||
? (params.tags as string[])
|
||||
: undefined;
|
||||
const presenceUpdate = updateSystemPresence({
|
||||
text,
|
||||
deviceId,
|
||||
instanceId,
|
||||
host,
|
||||
ip,
|
||||
@@ -67,6 +77,8 @@ export const systemHandlers: GatewayRequestHandlers = {
|
||||
modelIdentifier,
|
||||
lastInputSeconds,
|
||||
reason,
|
||||
roles,
|
||||
scopes,
|
||||
tags,
|
||||
});
|
||||
const isNodePresenceLine = text.startsWith("Node:");
|
||||
|
||||
@@ -619,6 +619,9 @@ export function attachGatewayWsMessageHandler(params: {
|
||||
deviceFamily: connectParams.client.deviceFamily,
|
||||
modelIdentifier: connectParams.client.modelIdentifier,
|
||||
mode: connectParams.client.mode,
|
||||
deviceId: connectParams.device?.id,
|
||||
roles: [role],
|
||||
scopes,
|
||||
instanceId: connectParams.device?.id ?? instanceId,
|
||||
reason: "connect",
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user