流
@inploi/flows/engine 是共享应用程序解释器。遗留呼叫者保留
他们现有的最新答案 undo 以及提交政策。
@inploi/flows/replay 出口 createEditableFlowInterpreter这是一家可选择的工厂
同样的引擎参数加上 onReplayState. 它使 reviewAnswers,
previewEdit({visitIndex, answer}) 和 editAnswer({visitIndex, answer}) 在
首次提交确认。访问确定已完成的问题出现情况;
包括明确的跳过。取消和预览永远不会改变应用程序。
编辑恢复其访问检查点并静默地重建所选内容 路径。缺少、无效或传递依赖的答案再次询问;新添加的, 更改和删除的分支输出通过依赖项失效传播。 每次访问都会对交付的问题文本、输入类型、选项、标签、 验证配置和区域设置,以及所有机器人呈现历史的SHA-256 从流的开始到那个问题,按顺序(包括文本,链接,图像, 系统/信息消息,早期的问题提示,每个交付控件的文本/配置和交付的插值)。 只排除候选答案回声,包括跳过的答案注释。更改之前的输出无效 每一个后来的回答;未更改的输出允许重用。更改了继续/确认控制暂停,以便在后面的问题之前明确回答;未更改的、先前确认的控件可以静默重播。预应用Continue标签插入当前答案。重复使用要求保存的指纹匹配; 独立的答案可以在暂停之后继续存在,包括重新加载和继续。等待编辑 在重建开始前保存。一个单独的持久同意需求 幸存日志丢失:编辑后的每次提交,包括自动提交节点 和验证码重试,等待显式发送。恢复的可编辑会话 可用日记账也显示确认。具有隔离服务的头部运行比较有效载荷,预应用输入, 路径、消息、当前输入、问题和上下文指纹以及审查和发送前的终端状态。Timing-only 确认字段不影响等效性;真正的输入保持它的冷却时间。一个 Mismatch记录一个无内容的警告,并从编辑过的访问请求。
可选的version-5日志共享主机现有的存储生命周期。Version-1-4
日志在没有重用的情况下退回到确认状态。主机使用 storableReplayJournal(data)
将匹配当前非文件提交的值替换为密钥和SHA-256指纹。
加载在将引用物化到解释器内存之前验证它们;检查点值只需要
中断的编辑将保留,直到达到它们或重建得到确认。取代检查点
比较只保留SHA-256指纹;保存的候选文件省略了旧的提示/控制文本。替换的值和保存的重放候选值
然后被修剪,保留最小的前缀用于第二次发送等价性检查。文件引用使用SHA-256
对完整的编码内容、元数据和文件顺序进行计算
答案是隐含的或隐含的。相同名称,相同大小的替代品仍然是不同的。
文件字节留在当前提交和瞬态解释器内存中,而不是日志中。
检查点引用池条目。加载验证答案的校验和,
访问,控制,历史和记录。“遗留撤销”将丢弃日志。过期的记录,
不同地区的记录和日志保留了上下文指纹
最新的修正,直到新的通道。
没有访问的遗留会话,循环重放后缀,包含重复问题访问的日志,同时发生的重复写入和
不支持的写节点不合格。定义限制为512个节点和
期刊到4096个不同的值;这些保守限制保留了修正。
流程/构建/作业/上下文标识必须与检查点匹配。第一次发送尝试
丢弃日志并永久禁用该会话的审阅编辑。
重复的重读会在调用集成之前使缓存的请求无效;因此失败了
使用引擎的错误默认值进行重建,没有过时的结果回退循环。
缓存使用SHA-256请求密钥,而不是原始的电子邮件请求。完成、重新启动和过期
丢弃带有主机快照的日志;候选程序还删除过期的内存回调记录。
影响预览遵循使用现有答案的预期路径,并且
新达到的问题的代表性值。回放时给出的答案
可以更改以后的分支,因此其问题计数。结果包括
questionCount 和 endsApplication,因此零问题终端分支可以是
区别于返回Send。它不执行真正的网络或分析调用。
预应用重复数据删除在引擎内部:规范的SHA-256指纹 抑制相同的快照请求,更改的答案附加一个新的快照, 最后Send重建自己的预应用输入。失败的快照请求可以是 稍后重试;它与应用程序写屏障是分开的。
浏览器渲染器共享保存的电话解析 countries,文件读取 utils 和一模一样的英语会话副本 i18n.
关闭提交行也在这里共享:“对不起,在您申请时此角色已关闭。”
英文措辞于2026年10月30日获得批准。它对应用程序交付或存储没有任何要求。
运行时依赖: @noble/hashes
@inploi/flows 只有一个运行时依赖 @inploi 同行, @noble/hashes (固定,审计,零依赖)。
contentFingerprint 在 src/pre-apply-request.ts 使用SHA-256进行预应用重复数据删除和每次重播
指纹》杂志上。其他选择在这里不起作用:
crypto.subtle.digest仅在安全(https)页面上公开,而客户嵌入可以在HTTP上运行 (戳- 7444)。它也是异步的,而日志散列在整个引擎中是同步的。- 现有的
hashObject在session-key.ts会话键的32位djb2散列。它不耐碰撞, 因此,它不能代替决定答案是否被重用的内容指纹。
成本:两个导入的函数增加了大约2.4 KB压缩(esbuild, minified,测量于2026年10月7日)。聊天机器人和候选人 束流,所以他们也携带它。将其替换为另一个在http页面上工作的同步SHA-256。
测试
运行 pnpm --filter @inploi/flows test, check 和 build. 生成的oracle位于
src/replay-tests;它的README记录测量的覆盖和复制命令。冻结发布的语料库为
中的一个库根测试夹具 test-fixtures/flows/外, packages/,所以它永远不会发货。所有语料库答案都是合成的。