From dd701a24725ce3146be372c949a85de1cadfbe96 Mon Sep 17 00:00:00 2001 From: yushen Date: Wed, 4 Feb 2026 13:43:41 +0800 Subject: [PATCH] feat(sdk): collect device metadata during verify handshake Auto-collect navigator.userAgent, platform, and language in the SDK verify RPC payload. Add DeviceMeta type. Hub receives this metadata for display in the Desktop UI device list and confirmation dialog. Co-Authored-By: Claude Opus 4.5 --- packages/sdk/src/actions/index.ts | 1 + packages/sdk/src/actions/rpc.ts | 8 ++++++++ packages/sdk/src/client.ts | 7 ++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/sdk/src/actions/index.ts b/packages/sdk/src/actions/index.ts index 6e010e37b..e73947a4e 100644 --- a/packages/sdk/src/actions/index.ts +++ b/packages/sdk/src/actions/index.ts @@ -25,6 +25,7 @@ export { type DeleteAgentResult, type UpdateGatewayParams, type UpdateGatewayResult, + type DeviceMeta, type VerifyParams, type VerifyResult, } from "./rpc"; diff --git a/packages/sdk/src/actions/rpc.ts b/packages/sdk/src/actions/rpc.ts index 7837644c8..1f49f1d17 100644 --- a/packages/sdk/src/actions/rpc.ts +++ b/packages/sdk/src/actions/rpc.ts @@ -146,9 +146,17 @@ export interface UpdateGatewayResult { connectionState: string; } +/** Device metadata collected during verify handshake */ +export interface DeviceMeta { + userAgent?: string; + platform?: string; + language?: string; +} + /** verify - request params */ export interface VerifyParams { token?: string; + meta?: DeviceMeta; } /** verify - response payload */ diff --git a/packages/sdk/src/client.ts b/packages/sdk/src/client.ts index d87caffd1..fb362281e 100644 --- a/packages/sdk/src/client.ts +++ b/packages/sdk/src/client.ts @@ -312,10 +312,15 @@ export class GatewayClient { if (this.options.hubId) { // Set internal state to allow send/request during verify this._state = "registered"; + const meta = typeof navigator !== "undefined" ? { + userAgent: navigator.userAgent, + platform: navigator.platform, + language: navigator.language, + } : undefined; this.request<{ hubId: string; agentId: string }>( this.options.hubId, "verify", - { token: this.options.token }, + { token: this.options.token, meta }, this.options.verifyTimeout, ) .then((result) => {