feat(messaging-ui): KernelClientAdapter — direct-IIOS transport for the SDK

Implements MessagingAdapter over @insignia/iios-kernel-client (browser → IIOS,
token-in): listConversations/openThread/history/send/subscribe/typing/markRead
/react, mapping kernel Message/ThreadSummary/annotations onto the SDK's neutral
types. currentActorId comes from the host's session (senderId space), never
inferred from history — the exact bug the conformance suite kills.

- lives in adapters/ (transport boundary intact — core stays transport-free)
- ships from the ./adapters/kernel-client subpath (kernel-client is an optional
  peer dep; excluded from the main bundle)
- connectKernelAdapter({serviceUrl, token, currentUserId}) convenience
- passes the shared adapter conformance suite (12 tests) over the real
  MessageSocket facade with only the socket.io layer faked
- media/attachments deferred (kernel-client has no presign yet)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 17:37:41 +05:30
parent 191c9748c5
commit c5237a237a
5 changed files with 409 additions and 14 deletions
+12 -1
View File
@@ -14,6 +14,10 @@
"types": "./dist/adapters/mock.d.ts",
"import": "./dist/adapters/mock.js"
},
"./adapters/kernel-client": {
"types": "./dist/adapters/kernel-client.d.ts",
"import": "./dist/adapters/kernel-client.js"
},
"./conformance": {
"types": "./dist/conformance.d.ts",
"import": "./dist/conformance.js"
@@ -29,9 +33,16 @@
"test": "vitest run"
},
"peerDependencies": {
"react": ">=18"
"react": ">=18",
"@insignia/iios-kernel-client": "*"
},
"peerDependenciesMeta": {
"@insignia/iios-kernel-client": {
"optional": true
}
},
"devDependencies": {
"@insignia/iios-kernel-client": "workspace:*",
"@testing-library/dom": "^10.4.0",
"@testing-library/react": "^16.1.0",
"@types/react": "^19.0.0",