# @chatpanel/events 中文文档

规范地址：https://npmcn.com/package/%40chatpanel/events/

版本：0\.374\.0
npm 元数据更新时间：2026-10-31T06:29:32.542Z
中文译文更新时间：2026-11-09T11:58:23.485Z
软件包许可：SEE LICENSE IN LICENSE

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40chatpanel/events
原文对照：https://npmcn.com/package/%40chatpanel/events/?lang=original
项目主页：https://github.com/chatpanel/chatpanel-events#readme
源码仓库：https://github.com/chatpanel/chatpanel-events

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.8 MB，323 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=20
- 运行依赖：0 个
- 首次发布：2026-08-18T05:52:30.835Z
- 最新版本发布：2026-10-31T06:29:32.325Z
- 近 30 天下载量：3437（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：168（近 12 个月 168 个）

## 中文简介

ChatPanal ChatPanel事件记录和能力合同——打入可持久的事实、无时钟决定线性化、计划上架、以及重播机所声称的不定因素。 ChatPannel扩展共享的纯、无依赖的无害环境管理,网关

## 安装

```sh
npm install @chatpanel/events
```

也可以使用：`pnpm add @chatpanel/events`、`yarn add @chatpanel/events`、`bun add @chatpanel/events`

## README

# @chatpanel/活动

峡谷聊天小组 **事件日志** 财务报告和审定财务报表 **能力** 合同。 纯,无依赖性 无害环境管理——相同的代码在扩展(浏览器、MV3/CSP安全)、网关和 桥,同样的方式 [`@chatpanel/pii`](https://github.com/chatpanel/chatpanel-pii) 已经.

两份合同 其他所有继承:

-   **活动计划** ——仅附件,永久版本,仅元数据,并订购 **无时钟**。 。 。 .
-   **能力签名** ——一个呼叫会塑造规则,时间表,用户或模型 都一样.

## 为什么它存在

聊天小组运行应该可以重建: 组装了什么样的环境, 什么样的能力 运行,在哪个班级和运行时间, 什么被编辑, 和什么留下的设备. 那张唱片是值得信赖的 _可核对_,所以这个包裹 船 与类型并列的变异物.

## 无时钟订购

```js
import { linearize } from '@chatpanel/events'
```

> 按地形类型重放命令事件 `causes`断开关系 `(host, seq)` 以词典 id 顺序显示主机. **墙壁时间从不咨询.**

一旦两个主机同时附加一个时间戳不是命令——时钟sskew,以及两个 主机可以印出同样的毫秒. `at` 具有咨询性并向人类展示; `(host, seq)` 财务报告和审定财务报表 `causes` 是权威. `linearize()` 因此是事件的一个函数 _设定_没有 它的数组.

## 持久性事实,而不是流派

市场滴答、直播字幕和DOM变异 **没有** 事件。 他们生活在一个 in-memory 环缓冲; 只有输入模型请求的窗口集合或 跨越设备边界得到推广。 这是结构性的,没有事件类型 它可以接受一个每条小字串的项目——因为持久地记录一个标题流大约是 每次会议3 MB,每年5.5 GB.

## 只有元数据

活动 [`Ref`](https://npmcn.com/package/%40chatpanel/events/ref.js)和数,永远不满足:

```js
makeRef({ kind: 'note', id: 'n_88', hash: 'sha256:…', range: { from: 10, to: 40 } })
```

重放决定 `Ref` 按散列:匹配 = 精确重建; 不存在或加密 → `verified-but-unavailable`它从未默默地取代今天的音符版本. `privacy.redacted` 包含每个实体类型中有多少个被修改,而从未 值——所编辑内容的日志本身不得包含所编辑的数据.

## 能力签名

```js
validateCapability({
  id: 'page.actions', version: '1.0.0', class: 'R',
  requires: ['tab'], provides: ['page.tools'],
  reads: ['page'], writes: ['page'],
  egress: 'none', effects: 'non-replayable',
  disclose: () => ({ name: 'page.actions', gist: 'Act on the current web page' }),
  output: { schema: …, render: (v) => … },
  invoke: async (input, ctx) => …,
})
```

`actor` 援引是使能力变得独立的原因. `requirements` (单位:千美元)`maxLatencyMs`, (中文(简体) ), `deterministic`, (中文(简体) ), `egress`, (中文(简体) ), `maxCostUsd`路由器发送到.. _一定是事实_没有 _哪个型号_ - 和 `canSatisfy()` **拒绝** 而不是说 沉默地超过预算.

类是内在的(一种确定性的保证);耐久性是宿主的. 两人从不 融为一表.

`toModelSchema()` 是一个 **允许列表** 从三个字段建起,从不省略列表——所以 `invoke`, (中文(简体) ), `effects`, (中文(简体) ), `cost`, (中文(简体) ), `writes` 财务报告和审定财务报表 `egress` 无法泄露到模型请求中.

## 存储器 — 持久性是一个主机适配器

```js
const log   = createLogStore(adapter)    // append-only events
const blobs = createBlobStore(adapter)   // content-addressed, deduped
```

这个 _语义_ 住在这里; 每一个主机都提供下面的存储器 — IndexedDB in the 扩展名, SQLite 在网关或守护进程上, 一个被封装的环式缓冲。 记忆 用于测试的适配器船,合用主机和回放带.

`append()` 实值 **事件编号**,所以复制到温暖的层次可以重试 安全地——一能键能力的日志级对应机载. 以下各项 移动 _倒转_ 对一个主机来说,它被排斥为一位腐败的作家; 漏洞被允许,因为 驱逐不得破坏日志. `cursor()` 财务报告和审定财务报表 `since()` 是复制对.

两家店是分开的 **加密- 刷新** 工作内容 : `blobs.shred(hash)` 丢弃 有效载荷和留下一块墓碑, 所以"删除这个会议"可以被尊为.. 仅附加日志, 而每个引用它的事件, 以及因果关系链, 保留 完好无损 重放然后报告 `verified-but-unavailable`。 。 。 .

## 登记册——效果和被动提供

```js
const reg = createRegistry({ onEvent })
reg.register({ name: 'page-tools', requires: ['tab'], apply(ctx) {
  ctx.effect(() => { const off = arm(); return () => off() })   // unwinds automatically
}})
const withdraw = reg.provide('tab', tab)   // page-tools activates
withdraw()                                  // page-tools deactivates and unwinds
```

这是一半的能力合同运行时间: `requires`编号 :`provides` 在一个 宣言只是因为有东西把他们绑在这里 有两条规则, ,每个都防止特定错误类:

1.  **LIFO 处置** - 逆向按登记顺序逆向运行,因此,每个逆向均符合 说明自己生产的应用程序.
2.  **依赖性失效 _在此之前_ 提供者的绑定被删除** - 一个组成部分 因为它的供应商要离开 经常被拆掉 _需求_ 正在撤销的能力(关闭池意味着移交连接) 回来 先去掉捆绑物 然后拆掉的东西就不见了.

失败的组件被记录在自己身上, 打开它注册的任何东西, 然后离开 它的兄弟姐妹们在奔跑 依赖周期只是永久离开其组成部分 不活动——而且与依时间表而定的僵局不同,从宣言中可以看出这一点 一个人,所以 `pending()` 可以在负载时报告.

无依赖性 _决议_: 此绑定可用性, 它不会解决版本 .

## 变化因素

```js
checkInvariants(events) // → [] when the log is sound
```

|  |  |
| --- | --- |
| **页:1** | 模式可见输入可以从日志重建 |
| **页:1** | 每一起事件都有记录(`controlled: false` 授权代理人) |
| **分类** | 非纯粹的援引带有一等之能 |
| **一级** | 每次激活都有反向记录 |
| **第5条** | 永生之流从不成为长久的事实 |
| **编号** | 重放是决定性的 |

I3是额外的结构:非纯度 `capability.invoked` 没有键失败 `validateEvent`,因此完全无法输入日志.

A 类 **中继转弯** 一个对接的电话或伙伴服务器 穿过这台电脑的网关 是一个 `turn.ended` 网关在主机下写入 `gateway` 与 `relayed: true` (单位:千美元) `surface` 联 合 国 `partner:<name>` 或者说 `phone:<name>`: 只计数、 id 和名称 ([`link-activity.js`](https://npmcn.com/package/%40chatpanel/events/link-activity.js) 拥有完整的外观和阅读器“活动”页面。 其背景汇编于 调用器设备,所以I1不会为此询问网关的日志.

## 重放带

```js
const report = replay(parseJsonl(log), { blobs })
if (!report.ok) { console.error(formatReport(report)); process.exit(1) }
```

在CI中运行,决定论的说法不再是评论. 它重现了从 `(host, seq)` 财务报告和审定财务报表 `causes`,检查 I1-I6,解决每个居民 `Ref` 以大麻为原料.

有两个结果值得区分,因为它们看起来相似,而相反 东西:

-   一个blob,即 **不见了** (crypto-shreed或被逐出)报告 _已核实但无法获取_ 财务报告和审定财务报表 **通过** - 粉碎是一种特征,原木仍能证明寄出的东西;
-   来源 **已更改** 报告 _漂流着_ 财务报告和审定财务报表 **失败**,因为另一种选择是 悄悄地用今天的笔记来代替实际发送的笔记.

## 安装

```sh
npm install @chatpanel/events
```

节点20。 无依取相. `node --test tests/*.test.js`。 。 。 .

默认 `digest` 并使用 **全球** WebCrypto, 每个浏览器都有它 并且节点从19起就暴露在没有旗帜的情况下——因此20起而不是18起(EOL) (自2025年4月起)。 两者都是可注射的,所以一个拥有自己密码的宿主从不接触 默认.

## 许可证

见 [自由主义](https://npmcn.com/package/%40chatpanel/events/LICENSE)。 。 。 .

## 常见问题

### @chatpanel/events 是什么？

ChatPanal ChatPanel事件记录和能力合同——打入可持久的事实、无时钟决定线性化、计划上架、以及重播机所声称的不定因素。 ChatPannel扩展共享的纯、无依赖的无害环境管理,网关

### 如何安装 @chatpanel/events？

在项目目录运行 npm install @chatpanel/events，或使用 pnpm add / yarn add / bun add。

### @chatpanel/events 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/chatpanel\_\_events 是否存在。

### @chatpanel/events 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @chatpanel/events 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @chatpanel/events 可以商用吗？

@chatpanel/events 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中，请阅读该文件确认可否商用。以上为概括，不构成法律意见，请以许可原文为准。

### @chatpanel/events 的下载量有多少？

根据 npm 官方下载统计，@chatpanel/events 在 2026/10/10 – 2026/11/08 这 30 天内被下载 3,437 次，日均约 115 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @chatpanel/events 还在维护吗？

最新版本 0\.374\.0 发布于 2026/10/31（9 天前）；至今共发布 168 个版本，其中过去 12 个月发布了 168 个；首次发布于 2026/08/18。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

