用途:把实现 @workflow/world 中 World 接口的包从 v4 规范迁移到 v5。仅针对存储、队列与流后端,不适用于应用代码;若只是升级应用的 workflow 依赖,应使用 migrating-workflow-v4-to-v5 技能。使用 Vercel、Local 或 Postgres World 的应用无需本技能。
主要能力与关键变更:核心是事件 ID 分配。v5 中事件 ID 是事件在运行日志中的位置,格式为 evnt_ 加 1 起始、零填充到 26 位的槽位,应使用 slotToEventId() 格式化,不要手写填充。运行时会对加载的 ID 调用 requireEventSlot(),非槽位编号的 ID 会抛出错误。实现需满足四条规则:唯一性(由存储的唯一约束、条件写或可串行化事务裁决,不能在进程内读最大值加一)、密度(槽位从 1 连续无空洞,失败后从存储重新推导)、bump and report(events.create() 参数带 eventCount,槽位被占用时不拒绝,改在下一个空闲槽提交并返回跳过的区间)、在提交时分配槽位。
其他变更:用 mintedSpecVersion() 声明 specVersion,不要硬编码常量;流方法移入 streams 命名空间且 runId 在前;steps.get() 与 events.listByCorrelationId() 需要 runId;导出 createWorld() 工厂;World 在构建时注入;进程级状态需用 globalSingleton 放到 globalThis;挂起调度改为批量;step 队列主题退役;preconditionGuard 能力移除;能力需失败关闭;events.create() 可返回增量事件。
使用方式:先做事件 ID 分配,再做机械式重写,不要从类型错误开始。
限制:资料未提供具体安装命令、收费、价格与平台支持信息。