Fix sync event typing

This commit is contained in:
weishu
2026-01-03 14:57:00 +08:00
parent e2028b6914
commit 8ce568ea70
4 changed files with 19 additions and 22 deletions
+12
View File
@@ -17,6 +17,7 @@
"hapi": "bin/hapi.cjs",
},
"dependencies": {
"@hapi/protocol": "workspace:*",
"@modelcontextprotocol/sdk": "^1.25.1",
"@types/cross-spawn": "^6.0.6",
"@types/ps-list": "^6.2.1",
@@ -60,6 +61,7 @@
"name": "hapi-server",
"version": "0.1.0",
"dependencies": {
"@hapi/protocol": "workspace:*",
"@socket.io/bun-engine": "^0.1.0",
"grammy": "^1.38.4",
"hono": "^4.11.2",
@@ -75,12 +77,20 @@
"typescript": "^5",
},
},
"shared": {
"name": "@hapi/protocol",
"version": "0.1.0",
"dependencies": {
"zod": "^4.2.1",
},
},
"web": {
"name": "hapi-web",
"version": "0.1.0",
"dependencies": {
"@assistant-ui/react": "^0.11.53",
"@assistant-ui/react-markdown": "^0.11.9",
"@hapi/protocol": "workspace:*",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-slot": "^1.2.4",
"@shikijs/langs": "^3.20.0",
@@ -540,6 +550,8 @@
"@grammyjs/types": ["@grammyjs/types@3.22.2", "", {}, "sha512-uu7DX2ezhnBPozL3bXHmwhLvaFsh59E4QyviNH4Cij7EdVekYrs6mCzeXsa2pDk30l3uXo7DBahlZLzTPtpYZg=="],
"@hapi/protocol": ["@hapi/protocol@workspace:shared"],
"@hono/node-server": ["@hono/node-server@1.19.7", "", { "peerDependencies": { "hono": "^4" } }, "sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw=="],
"@hookform/resolvers": ["@hookform/resolvers@5.2.2", "", { "dependencies": { "@standard-schema/utils": "^0.3.0" }, "peerDependencies": { "react-hook-form": "^7.55.0" } }, "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA=="],
+1 -1
View File
@@ -31,7 +31,7 @@ export function extractMessageEventType(event: SyncEvent): string | null {
return null
}
const message = event.message?.content ?? event.data
const message = event.message?.content
const envelope = extractEventEnvelope(message)
if (!envelope) {
return null
+3 -3
View File
@@ -108,7 +108,7 @@ export class SSEManager {
}
if (event.type === 'message-received') {
return Boolean(event.sessionId && connection.sessionId === event.sessionId)
return connection.sessionId === event.sessionId
}
if (event.type === 'connection-changed') {
@@ -119,11 +119,11 @@ export class SSEManager {
return true
}
if (event.sessionId && connection.sessionId === event.sessionId) {
if ('sessionId' in event && connection.sessionId === event.sessionId) {
return true
}
if (event.machineId && connection.machineId === event.machineId) {
if ('machineId' in event && connection.machineId === event.machineId) {
return true
}
+3 -18
View File
@@ -128,32 +128,17 @@ export class SyncEngine {
}
}
const webappEvent: SyncEvent = event.type === 'message-received'
? {
type: event.type,
namespace,
sessionId: event.sessionId,
machineId: event.machineId,
message: event.message
}
: {
type: event.type,
namespace,
sessionId: event.sessionId,
machineId: event.machineId
}
this.sseManager.broadcast(webappEvent)
this.sseManager.broadcast(enrichedEvent)
}
private resolveNamespace(event: SyncEvent): string | undefined {
if (event.namespace) {
return event.namespace
}
if (event.sessionId) {
if ('sessionId' in event) {
return this.sessions.get(event.sessionId)?.namespace
}
if (event.machineId) {
if ('machineId' in event) {
return this.machines.get(event.machineId)?.namespace
}
return undefined