Appearance
@keymaster/connect / AppMsgMessage
Interface: AppMsgMessage
公开消息视图:app / plugin 看到的就是这个形状。
关键约束(施工单 §4.4 + 反馈 §"必须修改"):
- 不包含
endpoint字段,也不暴露ownerPublicKeyHex/atMs; - sender / recipient 都用
senderPublicKeyHex+ (origin或appId) 表达:外部 app 用origin,内部插件 / 系统应用用appId; 同一消息至多携带其中一个(同源端互斥); - body 是明文 / markdown 字符串;v1 已做端到端密封(
static-static ECDH+AES-256-GCM,详见 §4.2 / §4.5);明文 / 密文边界由plugin-appmsg唯一持有,外部调用方仍按本明文 API 编程; clientMessageId是发送方侧幂等键(发送方自己带,接收方透传)。
Properties overview
| Property | Type | Required | Description |
|---|---|---|---|
messageId | string | Yes | provider 服务端主键;客户端不可伪造。 |
clientMessageId | string | Yes | 调用方幂等键(发送方设)。 |
senderPublicKeyHex | string | Yes | 发送方 publicKeyHex。 |
senderOrigin? | string | No | 发送方来源 exact origin(外部 app 才有值)。 |
senderAppId? | string | No | 发送方来源 appId(内部插件 / 系统应用才有值)。 |
recipientPublicKeyHex | string | Yes | 收件方 publicKeyHex。 |
recipientOrigin? | string | No | 收件方来源 exact origin(外部 app 才有值)。 |
recipientAppId? | string | No | 收件方来源 appId(内部插件 / 系统应用才有值)。 |
contentType | AppMsgContentType | Yes | 正文内容类型。 |
body | string | Yes | 正文。 |
createdAtMs | number | Yes | 客户端声明的创建时间(unix milliseconds)。 |
insertedAtMs | number | Yes | 服务端入库时间(unix milliseconds)。 |
Properties
messageId
messageId:
string
provider 服务端主键;客户端不可伪造。
clientMessageId
clientMessageId:
string
调用方幂等键(发送方设)。
senderPublicKeyHex
senderPublicKeyHex:
string
发送方 publicKeyHex。
senderOrigin?
optionalsenderOrigin?:string
发送方来源 exact origin(外部 app 才有值)。
senderAppId?
optionalsenderAppId?:string
发送方来源 appId(内部插件 / 系统应用才有值)。
recipientPublicKeyHex
recipientPublicKeyHex:
string
收件方 publicKeyHex。
recipientOrigin?
optionalrecipientOrigin?:string
收件方来源 exact origin(外部 app 才有值)。
recipientAppId?
optionalrecipientAppId?:string
收件方来源 appId(内部插件 / 系统应用才有值)。
contentType
contentType:
AppMsgContentType
正文内容类型。
body
body:
string
正文。v1 走端到端密封;调用方仍通过明文字符串 API 读写。
createdAtMs
createdAtMs:
number
客户端声明的创建时间(unix milliseconds)。
insertedAtMs
insertedAtMs:
number
服务端入库时间(unix milliseconds)。