Skip to content

Releases

wake-bridge 0.9.0-preview.21

Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Oct 08:17

wake-bridge 0.9.0-preview.21

本版增加多 channel 登记、agent channel 管理及安全删除/来源抑制诊断。本地完整验收与 main CI 已通过,
发行仍以同 tag 四组门禁和实际可下载产物为准;版本号或 main 测试成功不表示 npm 已发布,也不表示新宿主或真实模型已验收。
发布后可显式安装 npm install --global wake-bridge@0.9.0-preview.21;可用 npm view wake-bridge version 查询实际发行版本。

多 Agent 与多 Channel

  • 多 agent 复用 package,但每个 Agent Space 仍使用独立 daemon、SQLite、端口与凭据;不是共享多租户服务,channel 不是隔离域。
  • 通用 HostSessionClient.openChannels() / leases() 原子登记同一精确 session 的完整 channel 集合;endpoint/token 共享、generation 逐路独立。旧单 channel API 保持兼容。
  • 同 session 重登必须包含仍绑定的全部 channel,否则返回 409 host_session_channels_required;重登旋转 token,renew/close 为 endpoint 级,不是单路解绑。一路迁走不停止剩余路。
  • MCP 与 owner HTTP 提供 channel create/list/rename/delete,稳定 ID 与显示名分开。默认有效 channel 上限32,由实例配置在1–1024内调整;已有超限数据不裁剪。
  • Host manifest 可显式选择 attention_channels: "*",只授权本 Space 已登记的有效 channel,不自动扩展旧 allowlist,也不授权 host 创建或删除 channel。

本轮 review 收尾

默认删除检查当前 binding、启用 activity watch、当前启用且受支持 policy 的字面 channel target;使用中返回
409 channel_in_use 和安全 usage(binding: null | {endpoint_id,generation}、activity_watch: boolean、policies: [{id,version}])。
Agent MCP 与 owner HTTP 均支持显式严格 boolean force:true;省略为 false,字符串/数字/null 不接受。
删除在事务中解除该路 binding/presence/watch 并终止待处理工作,保留历史,不恢复或复用旧 ID,不提供 channel restore。
在途或已交宿主的消息无法追回;后续 ack/consume 收到 channel_deleted 为终态,应检查状态并停止盲重试,不把删除记作已消费。

仅来源 emit 的隐式目标额度不足时,事件落盘为 suppressed、reason 为 channel_limit_reached,不创建 channel/claim,cursor 继续;
已删目标同理为 channel_deleted。显式 create/schedule/watch/host 注册额度不足仍429。
释放额度不自动补发,原 dedupe 重放仍返回原 suppressed 事件。

Operator status 增加 ingest.channel_suppressions:两原因 counts、latest_at 与至多20条
event_id/source/matched_policy_id/matched_policy_version/reason/at 的安全 recent 摘要;MCP
attention_event_list / attention_wake_health.events 增加 suppression_reason(两原因或 null)。
这些基于保留历史而非终身计数,不含 payload,不单独改变 health/attention_required,也不新增 incident。

Reference adapter 在 presence/activity 得到确定 stale_generation / channel_deleted 时,只移除对应旧 handle 与接收 binding;
迟到错误不影响替代 handle,其他路继续观察、续租和接受。所有路失效后停止续租并拒绝投递,不盲目 close 共享 endpoint。
endpoint_fenced 才表示整个 endpoint token 失效;两种情况均不自动 reopen 或 takeover。
SDK 保留兼容 code,安全 remote_code 提供稳定远端原因,不要求解析任意错误正文。

Schema 8 → 9 与回退

preview.20 使用 schema 8,本版使用 schema 9(稳定 channel ID、显示名与删除标记)。
新建实例由 init 创建;已有 schema 6/7/8 必须停止 daemon/service,使用 显式离线 upgrade,
先创建并验证一致性 backup 再迁移。普通 daemon/CLI/MCP 不隐式升级;迁移或验证失败尝试恢复该 verified backup,持续文件系统故障仍可能阻止恢复。
升级回填旧路由,不因新额度裁剪历史数据。

旧 preview.20 不能打开 schema 9。回退必须离线恢复升级前、与旧包兼容的 verified backup,再安装匹配旧包;
不能仅降级二进制,恢复也不能保留备份后新产生的工作。升级、安装和发布均不自动替 operator 重启或改动现有实例。

验证与支持边界

2026-10-30(America/Los_Angeles)本地 macOS arm64 / Node 20.20.1 完整620项通过(46文件603 Vitest +17 Node),
typecheck、build、仓外 tarball 安装通过;监督器退出0,无超时、观察失败或本轮残留子进程,未提高测试门限。
review 前590项保留为历史,定向反例先红后绿;详情见 验证口径。
已验证候选提交为 53f67bf2688e2c0ee2678a856e92f04b88ffd81d;main CI 41171211249
attempt 1 的 macOS/Ubuntu × Node 20/24 四组全部通过;不能代替新 tag commit 的发布门禁。
发布复验另修正了多路集成测试“一轮 dispatch 必须清空”的假设:按既有软预算推进有界多轮,保留严格路由/回执断言,不改变产品预算或测试超时;首轮失败保留在验证口径中。
发布仍须在同一 tag commit 上通过 macOS/Ubuntu × Node 20/24 四组 CI,之后工作流才发布 npm latest 与 GitHub prerelease。

测试使用合成来源、loopback host 和模拟 ack/consume,不启动真实模型。随包 Claude CLI online adapter 仍仅支持单 channel,
通用 SDK 扩展不扩大其能力。不新增其他具体宿主接入、跨平台实机、多日运行或延迟 SLA 声明;
macOS/Linux 支持范围与已有 Linux reboot 证据不变。接入说明见 多 Agent / 多 Channel。

wake-bridge 0.9.0-preview.20

Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Oct 07:43

wake-bridge 0.9.0-preview.20

本版改进安全错误诊断、积压调度边界与维护恢复,并补充安装帮助和 CI 停滞诊断;不扩大宿主或平台支持范围。

安全错误诊断

  • SQLite 失败统一为固定分类:database_unavailable、database_output_limit、database_execution_failed、database_invalid_json,不在异常中保留原始 SQL、进程输出或 cause。
  • daemon 的 scheduler / adapter cleanup warning 记录固定 phase 与 error_class;未分类内部错误另带本地白名单 error_type(如 TypeError、Error 或 unknown),不读取任意异常的 name、message 或 stack。
  • 非契约 HTTP 异常返回固定 500 文案、code=internal_error 与安全 error_class,不增加 error_type;既有 SDK 契约校验保留 status/code 与提示。配置解析及 connector 网络错误也避免透传原始异常。
  • scheduler 失败后 daemon 保持运行、后续轮次继续尝试;HTTP 存活不代表调度或投递成功。这不是任意第三方 adapter 日志的自动脱敏承诺,诊断步骤见 operator control。

Source 有效配置解释

source-validate 增加 enabled_semantics;live source status 增加 loaded_config_enabled、persisted_control_enabled 与 enabled_source,区分启动时加载的配置初值和持久 enable/disable 控制。
行为不变:省略 enabled 仍默认 true,示例配置显式关闭,持久控制优先;修改磁盘文件不等于修改当前运行值。离线 status 的新增解释字段为 null,不代表 false。详见 source connectors。

积压调度边界

  • 在 SQLite 中预筛到期/过期 Claim 和到期 Batch,避免先把大量未来工作及无关字段读入进程;事件合并仍要求来源、resource 结构与投递策略语义相同。
  • 每次 tick() 至多推进 1000 条到期/过期 Claim,再至多将 1000 条 eligible Claim 编批;按当前合批键定位可追加 Batch。
  • 每次 dispatchDue() 至多检查 1000 个到期 Batch,在 Batch 之间用单调运行时钟检查一秒软预算,至少允许一个候选推进;预算耗尽后让出事件循环,余量留给后续轮次。优先有有效 binding/endpoint 的 channel,等待项通过既有时间戳轮转;投递前仍重查时间门、binding、generation 与 lease。

一秒预算不是 timeout 或硬延迟保证:它不能打断 recovery、同步 SQL 或在途 transport,也不限制 tick 阶段。并非全部查询都已分页;恢复扫描、大范围 inspect 与单个超大记录仍有成本和输出容量边界。

恢复、安装与 CI

  • restore 复制失败时也清理可能留下的部分临时文件;补充备份敏感性、长期维护与隔离恢复演练说明。坏原库应先保全,再恢复到独立目录,不绕过完整性校验。故障回归使用一次性 ENOSPC 注入,不代表真实磁盘耗尽或持续文件系统故障下的恢复保证,见 维护 runbook。
  • 已安装 reference adapter 的帮助明确 package 工作目录、空闲 loopback 端口、channel 一致性及首次测试事件;stdout envelope / transport_accepted 只证明协议 wiring,不代表真实 agent 已处理。
  • macOS Node 20 CI 增加有界停滞诊断、进程/调用栈证据及短期 artifact;不把诊断采集当作既有停滞根因已确认。

验证与发布门禁

源码提交 c281df1 的本地回归共 505 项通过(488 项 Vitest + 17 项 Claude adapter Node 测试);CI 40284178626 attempt 1 的 macOS / Ubuntu 24.04 × Node 20 / 24 四组全部通过。
积压回归包含超过十万条未来工作;部分固定 fixture 的重复只读查询使用局部快照,不是完整子进程吞吐基准。
这些是发布前证据,不能代替 v0.9.0-preview.20 自身的 tag 门禁结果。本轮没有新增真实模型端到端 UAT。

发布仍须在同一 tag commit 上重新通过四组 CI,之后自动将打包产物发布到 npm latest,并创建附 tarball 与 SHA-256 清单的 GitHub pre-release;任一失败或取消都会阻止发布。

升级与兼容性

发布后可显式安装:npm install --global wake-bridge@0.9.0-preview.20。
升级前按 release lifecycle 备份并核对 package/config/service 路径;本次发布不自动升级、重启或改动任何现有实例。

  • DB schema 仍为 8,无新增迁移;依赖与运行时前提不变。
  • 既有配置、策略、source 启停及持久状态不变;新增解释字段不改变默认行为。
  • 不扩大支持或验证承诺;从更早版本升级仍须阅读 preview.18 升级说明 及其中引用的要求。

wake-bridge 0.9.0-preview.19

Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Oct 15:08

wake-bridge 0.9.0-preview.19

本版仅改进 wake payload 的精确批量读取性能,并收紧跨平台发布门禁;不扩大宿主支持承诺。

精确批量读取

  • 按 batch 引用的精确 Claim / Event ID 集合,以两次 SQLite 查询构建 payload,减少逐条读取启动 sqlite3 子进程的开销,不依赖有页数上限的历史索引。
  • 保持 Claim 顺序、重复引用、note、instance 隔离与非 batched Claim 过滤;缺失或无状态 Event 的回退语义不变。
  • Event 查询只读取 payload 引用所需的 id、source、type,避免无用 metadata / preview 占用子进程 JSON 输出预算。

发布门禁

同一 tag commit 必须在 macOS / Ubuntu 24.04 × Node 20 / 24 四组 CI 上全部成功,才运行打包与发布 job。
任一失败或取消都会阻止发布,不依赖另一次 main CI 的完成时序。该门禁是 preview.18 发布后的修复;已发布的 preview.18 tag 与 tarball 保持不变。

验证范围

发布前本地回归共 409 项测试通过(392 项 Vitest + 17 项 Claude adapter Node 测试),包含精确批量读取与仓库外 tarball 安装黑盒验证。
四组 CI 均已有通过记录;macOS Node 20 首轮停滞后取消,重跑通过,原因尚未确定。
这些记录不等于本版真实 tag 发布门禁已验收,发布时仍须在同一 tag commit 上重新通过四组 CI。
本轮没有新增真实模型端到端 UAT,既有现场证据与限制仍以各 adapter 验证文档为准。

升级与兼容性

发布后可显式安装:npm install --global wake-bridge@0.9.0-preview.19。
升级前按 release lifecycle 备份并核对运行中的 package/config/service 路径;本次发布不自动升级或重启任何现有实例。

  • DB schema 仍为 8,没有新增迁移;公开契约和已有策略、来源启用状态不变。
  • 从更早版本升级时,仍须阅读 preview.18 升级说明 与其中引用的既有要求。

wake-bridge 0.9.0-preview.18

Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Oct 02:01

wake-bridge 0.9.0-preview.18

本版集中修复真实接入中的投递可靠性、安装与排障体验,不扩展通用宿主支持承诺。

投递与诊断

  • 修复并发 Claim 合并时可能丢失引用的问题。派发前重新检查过期、presence、quiet hours 与 endpoint lease,避免使用过时的调度条件。
  • 已有 Claim 全部完成的待派发批次可以安全收尾,保留 attempts、receipts 和原引用;缺失引用不冒充完成证据,已接受或正在投递的批次不被撤回。
  • 明确区分 transport accepted、host attested 与 agent seen。HTTP 回程丢失不抹掉已验证的真实宿主注入证据,也不补造接受回执。
  • 增强只读 attention_wake_health,提供批次证据、Core 自动派发候选资格、待确认/逾期状态和下一步检查提示;不替 agent ack、consume 或盲目重投。
  • 未被接受且可重试的 transport failure,在没有有效 retry_after_ms 时采用有上限的指数退避:默认 5、10、20、40、80、160、300 秒,此后每次 300 秒。复用持久化累计 attempt,重启或换 generation 不归零;有效的 retry_after_ms 仍优先。这不是尝试次数上限,也不保证 exactly-once。

安装与使用

  • CLI 严格检查参数,help 不要求先打开数据库,doctor 的失败会返回非零退出码;补齐列表查询参数与配置校验。
  • quiet-hours 实例配置真正传入 Core;策略预览显示保留的已安装规则,不把默认配方误报为当前生效配置。
  • macOS service 保留 host/source 配置路径与可选环境文件;Linux systemd EnvironmentFile 修复空格、Unicode 与特殊字符路径处理。SQLite CLI 的最低要求明确为 3.35.0,另须支持 JSON 输出与 JSON1。
  • Gmail 轮询新增共享请求时限与候选检查上限,保留已取得的进度,避免长轮询反复撞上 connector 超时。
  • 文档明确实验性 Claude CLI adapter 与仅打印 envelope 的 reference adapter 的区别,以及 host 接受时限、ack 竞争、batch 合并策略和 watch 的活动基线。Watch enabled 不等于 armed,绑定 endpoint 本身不会启动静默倒计时。

验证范围

发布前本地回归覆盖 389 项 Vitest 测试与 17 项 Claude adapter Node 测试,包含仓库外 tarball 安装黑盒验证。
Linux lifecycle 修复在 Ubuntu 22.04 x64 / systemd 249 上完成安装、特殊环境文件路径、备份、同前缀升级、服务重启和回滚验证。
本轮另有 Claude CLI 2.1.278 的 idle/restart 与独立测试账号新通知的真实 ack → 权威来源读取 → consume 证据。

这些现场结果不代表任意 busy session 都能及时处理:busy 测试曾出现 host 已注入但 agent 未确认,后续仅在明确兼容任务条件下恢复。
新通知验证也不等于长期轮询稳定性测试。Claude idle/restart/busy 的具体范围和失败记录见 Claude adapter verification。

升级与兼容性

显式安装:npm install --global wake-bridge@0.9.0-preview.18。
升级前按 release lifecycle 备份并核对运行中的 package/config/service 路径;本次发布不自动升级或重启任何现有实例。

  • DB schema 仍为 8,没有新增迁移;已有策略和来源启用状态不自动覆盖。
  • 旧脚本中曾被忽略的未知或重复 CLI 参数现在会明确报错,请先修正参数再运行。
  • 已保存的 retry not_before 不重写,后续失败才采用新的退避规则。直接嵌入 Core 的既有 retry_delay_ms 保留为基数,0 仍立即重试,大于 300 秒的基数不会被缩短;没有新增 CLI/实例配置项。
  • 接受投递不等于 agent 已读或来源已处理。缺 agent ack 的已接受批次不因本版退避机制自动重投。
  • 延续 preview.17 的小机知道摘要检测及 from-now 基线要求;从更早版本升级时仍须阅读 preview.17 升级说明。

发布后验证补充(2026-10-23)

实际 npm latest 安装与 macOS arm64 preflight 已通过,Linux Node 20/24 CI 通过;但本次 macOS Node 20/24 CI 均在 1000-claim 批次的派发测试中超过 30 秒,不能将本版称为跨平台 CI 全绿。已定位到既有 buildPayload 路径对每条 claim/event 各启动一次同步 SQLite 查询:1000 条记录约 2000 次子进程调用。该大批次性能限制尚未修复,不应据此承诺最大批次的派发时延。

发布流水线当时只等待自身 Linux 测试,没有等待独立的四组跨平台 CI;暂停请求到达时 npm 发布已经完成。后续应局部修复批量读取并补齐发布门禁,不改写本版已发布 tarball 或 tag。

wake-bridge 0.9.0-preview.17

Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 10:04

wake-bridge 0.9.0-preview.17

本版更新小机知道内置 connector:后台只读取通知摘要,不拉正文、不标已读。

  • 用每类最新未读的 UTC 生成时间与 ID 检测新增,检查点不因读完或撤回而回退;去重键也包含时间,避免仅用未读数量或复用 ID 漏掉新增。
  • 默认策略配方让内容互动、提及和人类邀请进入即时唤醒调度,其他类型等待主动查看;支持按具体类型覆盖。即时仍受轮询、免打扰与前台状态约束,不是实时推送。
  • 个人已安装策略不自动覆盖。站方保留旧 connector 的只读元信息请求,旧安装可继续使用原有功能。

升级

包安装:npm install --global wake-bridge@0.9.0-preview.17。需要先部署支持摘要标记的小机知道版本。

旧 ID-only 检查点不自动转换:先停用来源,核验身份,通过既有 attention_source_rebind 明确建立 from-now 基线,
再核对个人策略、做一次 canary 并启用。旧检查点被归档,不手改 SQLite;旧未读不标读,但不补发积压唤醒。
详见小机知道 connector 指南。本版不改变 DB schema 8,也不自动安装或重启运行中的服务。

摘要不是完整事件日志:两次轮询之间已被读掉或撤回的通知不触发,也不保证捕捉回填到旧时间的记录。

wake-bridge 0.9.0-preview.16

Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Oct 01:56

wake-bridge 0.9.0-preview.16

This preview makes out-of-process Host Adapter file errors name the field that is wrong, and lets doctor report those mistakes before the daemon environment is loaded. Core behavior is unchanged from 0.9.0-preview.15.

Host Adapter file errors

  • A host-adapters.json without receipt_upper_bound failed with out-of-process host receipt upper bound is unsupported, which read as the feature being unsupported, and removing the field gave the same message. It now says receipt_upper_bound is required; use accepted_to_live_pipe or host_accepted, and agent_completed is rejected as unavailable to out-of-process hosts.
  • The other file errors also name the field and what it accepts: id, token_env, adapter_kind, adapter_version, host_kind, tested_host_versions and attention_channels.
  • Bootstrap token environment variables are checked only after the whole file is valid. Running doctor --host-adapters in a shell that has not loaded daemon.env now reports file mistakes first, and the missing token only once the file is valid.
  • The accepted values have not changed. receipt_upper_bound and tested_host_versions were already required.

Documentation

  • Linux runbook: run doctor with the same Host Adapter and source credential files before service install. release-preflight does not read these files. A daemon that fails to load them exits before it listens, so systemd keeps restarting it, and the reason is in journalctl.
  • The out-of-process Host Adapter guide states that tested_host_versions is required.
  • wakebridge help lists the doctor options.

Verification

  • Core/package suite: 143 tests passed.
  • Claude CLI Host Adapter suite: 17 tests passed.
  • New tests check each Host Adapter file error message, that a file mistake in a later adapter is reported before a missing token for an earlier one, and that doctor without the token environment reports the file mistake.

Upgrade notes

  • No schema migration is required, and Core behavior is the same as 0.9.0-preview.15.
  • A Host Adapter file that loads on 0.9.0-preview.15 loads unchanged. If a file fails to load, the error now names the field to fix.

wake-bridge 0.9.0-preview.15

Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Oct 01:34

wake-bridge 0.9.0-preview.15

This preview adds a SQLite JSON1 check to release-preflight, moves releases to the npm latest dist-tag and brings the documentation up to date. Core behavior is unchanged from 0.9.0-preview.14.

release-preflight

  • Since 0.9.0-preview.14, Core reads claim and batch id arrays with SQLite's JSON1 functions (json_each, json_array_length). release-preflight only checked -json output, so a SQLite CLI built without JSON1 (possible before 3.38) passed preflight and then failed every scheduler pass.
  • Preflight now reports runtime.sqlite3.json_functions and requires it for supported and ok.

Distribution

  • Releases publish to the npm latest dist-tag. The preview dist-tag has been removed, so wake-bridge@preview no longer resolves; install with npm install --global wake-bridge.
  • The README shipped inside 0.9.0-preview.14 still shows the old @preview command; this release's README is correct.

Documentation

  • Protocol: list windows for event.list / claim.list, acknowledgement-timeout reconciliation in the batch state machine, claim retention and claim_pruned, and transaction atomicity.
  • Architecture and the out-of-process Host Adapter guide describe retention and acknowledgement-timeout reconciliation.
  • README lists the operator features and the Gmail connector, and links the operator control and Gmail guides.
  • Every SQLite requirement now names JSON1.
  • The Linux runbook states that its real-VPS reboot evidence comes from 0.9.0-preview.9; service and release lifecycle have not changed since.
  • The maintainer release checklist now includes updating the documents that name the current version.

Verification

  • Core/package suite: 142 tests passed.
  • Claude CLI Host Adapter suite: 17 tests passed.
  • A CLI test runs release-preflight against a SQLite stand-in that supports -json output but not JSON1, and expects json_functions: false and exit code 2.

Upgrade notes

  • No schema migration is required, and Core behavior is the same as 0.9.0-preview.14.
  • If wakebridge release-preflight reports json_functions: false, install a SQLite CLI with JSON1 before running 0.9.0-preview.14 or later.

wake-bridge 0.9.0-preview.14

Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Oct 00:28

wake-bridge 0.9.0-preview.14

This preview fixes storage integrity and scale problems found in a production Agent Space after about a month of retained history, and adds an operator-invoked retention command. No schema migration is required.

Scheduling past 1000 retained claims

  • Every listing read ORDER BY created_at ASC LIMIT 1000. Once an Agent Space retained more than 1000 claims, tick() stopped seeing new ones, so new work was never batched or delivered and nothing reported an error. The scheduler now selects pending, deferred and eligible claims in SQL, whatever the size of the history.
  • The same first-page truncation is removed from dismiss/consume, event-to-claim lookups, source-filtered claim lists, the emit merge lookup and the open-batch sweeps. Past 1000 batches, dismissing or consuming a claim could leave it in its open batch, which later dispatched empty into needs_attention.
  • attention_status counts claims and batches in SQL instead of over the first page.

Atomic transactions

  • The sqlite3 CLI keeps executing after a failing statement and still reaches COMMIT, so a transaction that raised an error could leave part of its writes committed. Every connection now runs with .bail on: a failing statement rolls back the whole transaction. Schema migrations are covered as well.
  • The visible symptom: when two writers raced on the same event dedupe key, the losing write could append a nonexistent event id to an existing claim.

List surfaces show current state

  • attention_list, attention_event_list without after, owner HTTP GET /v1/events|claims|batches|receipts and CLI events|claims|batches|receipts return the newest limit rows, still oldest first. Output is unchanged while a table is under the limit.
  • HTTP /v1/claims and /v1/batches accept ?limit= (1–100000). A non-numeric limit returns 400 instead of 500.

Acknowledgement timeouts close once handled

  • An ack_timeout batch whose claims are all consumed, dismissed or expired now moves to cancelled (transition reason all_claims_finalized_reconciled, last_error kept as ack_timeout). It still spends at least one sweep in needs_attention and raises a configured core incident; a claim that can still be delivered keeps it open.

Retention

  • wakebridge prune --older-than-days N [--apply] removes finished delivery history: seen/cancelled batches that carry no deliverable claim, with their transitions, attempts, receipts and delivery correlations, and consumed/dismissed/expired claims that no surviving batch references, with their transitions.
  • Without --apply it only reports counts. Nothing runs it automatically; history is still kept by default.
  • Events, event status and transitions, and idempotency keys are never deleted. They are the dedupe record, so a re-delivered source event still returns duplicate: true (without a claim) instead of waking the agent again.
  • Replaying the idempotency key of a pruned self commitment returns claim_pruned (409) instead of storage_corrupt (500).

Other changes

  • A consume receipt attaches to the newest batch holding the claim when a snoozed claim was re-batched.
  • listAttempts() is scoped to the instance.
  • Validation constants are shared from one module; no behavior change.
  • WakeBridge.emitEvent accepts (source, input) only, and the unused internal createMcpServer, runMcp and jsonValue are removed. None of these are part of the package exports.

Verification

  • Core/package suite: 141 tests passed on Node 20 and Node 22.
  • Claude CLI Host Adapter suite: 17 tests passed.
  • New regression tests fail on the previous code and pass on this release: transaction rollback, a lost dedupe race, claims and batches behind 1000 retired rows, list windows over MCP and HTTP, ack-timeout reconciliation and retention.
  • Retention was run against a copy of a one-month production Agent Space: a 7-day prune removed 682 batches and 698 claims in 0.33 s and kept all 1442 events, all 46 needs_attention batches and every live claim.

Requirements

  • Core now reads claim and batch id arrays with SQLite's JSON1 functions (json_each, json_array_length), so the SQLite CLI must include JSON1 in addition to -json output. JSON1 is built in from SQLite 3.38; the macOS system SQLite and Ubuntu 24.04 (CI) satisfy it, and older CLIs need it compiled in. This requirement was missing from these notes as first published; the next release adds a json_functions check to wakebridge release-preflight.

Upgrade notes

  • No schema migration is required.
  • npm latest now points to this release and the preview dist-tag has been removed. Install with npm install --global wake-bridge.
  • Installing does not run retention. After the daemon restarts, the dispatcher's next sweep closes existing acknowledgement timeouts whose claims are all finished.
  • MCP server processes that are still running an older package keep listing and counting only the oldest page. Restart them, or the sessions that own them, so they use the same version as the daemon.

wake-bridge 0.9.0-preview.13

Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Sep 09:05

wake-bridge 0.9.0-preview.13

This preview bundles the first available Gmail Source Connector in the main wake-bridge package. It remains optional and disabled by default.

Gmail Source Connector

  • wakebridge gmail-connector runs a loopback-only connector process and keeps Google OAuth credentials outside the Wake Bridge daemon.
  • users.getProfile binds the manifest to the authenticated account; owners must still verify identity and perform an explicit from-now bootstrap before enabling a source.
  • Gmail History API pagination keeps the durable history waterline, opaque nextPageToken, and page-local message offset separate so bounded polling cannot skip an expanded page.
  • Expired history cursors fail closed as gmail_history_expired and enter needs_attention; the connector never silently re-anchors past an unknown gap.
  • Message lookup uses format=metadata with partial fields. Durable events contain only message/thread references and a gmail://message/<id> authoritative resource, never Subject, From, snippet, body, attachments, or headers.
  • OAuth files must be regular mode-600 files. The manifest reports the credential's actual scopes and marks credentials with modify/settings/send authority as broad even though the connector exposes only metadata reads.

Catalog and packaging

  • Gmail is available, bundled, enableable, and still disabled by default.
  • Every Agent Space must complete configure → verify identity → from-now bootstrap → canary UAT → explicit enable.
  • The connector implementation, CLI entry point, env template, operator documentation, and tests ship in wake-bridge; no separate Gmail npm package is required.

Verification

  • A real-account canary passed OAuth refresh, profile binding, pre-send History discovery, field-restricted metadata lookup, and the no-read/no-label-change checks.
  • The resulting minimal event passed an isolated event → claim → wake → acknowledgement → consume flow without touching a production Wake Bridge database or service.
  • Core/package suite: 123 tests passed.
  • Claude CLI Host Adapter suite: 17 tests passed.

Upgrade notes

  • No schema migration is required for this preview.
  • Publishing or installing the package does not configure Gmail, copy OAuth credentials, enable the connector, or restart an existing Wake Bridge service.

wake-bridge 0.9.0-preview.12

Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Sep 09:58

wake-bridge 0.9.0-preview.12

This preview strengthens delivery evidence, self-commitment handoff, scheduling diagnostics, duplicate claim handling, and optional core incident reporting.

Host-attested delivery

  • A Host Adapter can echo the current delivery attempt's one-shot nonce to record host_attested evidence and close that batch as seen.
  • A later explicit agent acknowledgement can still add agent_seen; host evidence never claims that the agent understood or acted on the wake.
  • A valid echo can outrank a lost transport response and prevent unnecessary redelivery, while arbitrary batch acknowledgement remains rejected.

Claim payload and scheduling

  • Wake payloads include the original note only for self_commitment claims, so an agent can recover why it scheduled its own wake without exposing notes from other origins.
  • Scheduling without a current attention-channel binding now returns an advisory no_current_binding warning. The commitment remains durable and can be delivered once a binding exists.

Duplicate claim consolidation

  • Compatible, unfrozen claims for the same source, resource, and attention channel are consolidated before delivery while preserving every underlying event.
  • Claims with incompatible delivery or batching semantics, and claims that have already frozen into delivery, remain separate.

Optional core incidents

  • Operators may set incident_attention_channel or WAKEBRIDGE_INCIDENT_ATTENTION_CHANNEL to project deduplicated wakebridge.core incidents for acknowledgement timeouts and Source Connector needs_attention states.
  • Core incident projection is disabled by default, cannot mask the authoritative failure, and suppresses recursive incidents about its own acknowledgement timeout.

Upgrade notes

  • No schema migration is required for this preview.
  • Existing deployments keep their current behavior unless the optional core incident channel is configured.
  • Publishing this package does not upgrade or restart existing Wake Bridge installations.

Verification

  • Core and package suite: 120 tests passed.
  • Claude CLI Host Adapter suite: 17 tests passed.