コンセプト内部
TypeBox
最終更新日: 2026-01-10 TypeBoxはTypeScriptファーストのスキーマライブラリです。私たちはこれを使用してGateway WebSocketプロトコル(ハンドシェイク、リクエスト/レスポンス、サーバーイベント)を定義します。これらのスキーマは、macOSアプリのためのランタイム検証、JSONスキーマエクスポート、Swiftコード生成を駆動します。単一 の情報源であり、それ以外はすべて生成されます。より高レベルのプロトコルコンテキストが必要な場合は、Gatewayアーキテクチャから始めてください。
メンタルモデル (30秒)
すべてのGateway WSメッセージは、3つのフレームのいずれかです:
- リクエスト:
{ type: "req", id, method, params } - レスポンス:
{ type: "res", id, ok, payload | error } - イベント:
{ type: "event", event, payload, seq?, stateVersion? }
最初のフレームは必ず connect リクエストでなければなりません。その後、クライアントはメソッド(例: health, send, chat.send)を呼び出したり、イベント(例: presence, tick, agent)を購読したりできます。接続フロー(最小限):
クライアント Gateway
|---- req:connect -------->|
|<---- res:hello-ok --------|
|<---- event:tick ----------|
|---- req:health ---------->|
|<---- res:health ----------|
一般的なメソッド + イベント:
| カテゴリー | 例 | 備考 |
|---|---|---|
| コア | connect, health, status | connect が最初である必要あり |
| メッセージング | send, poll, agent, agent.wait | 副作用のある操作には idempotencyKey が必要 |
| チャット | chat.history, chat.send, chat.abort, chat.inject | WebChatで使用 |
| セッション | sessions.list, sessions.patch, sessions.delete | セッション管理 |
| ノード | node.list, node.invoke, node.pair.* | Gateway WS + ノードアクション |
| イベント | tick, presence, agent, chat, health, shutdown | サーバープッシュ |
信頼できるリストは src/gateway/server.ts (METHODS, EVENTS) にあります。