You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
ActionEngine.getActionsForLocation 把 CEL 信封塌回 legacy JS 求值路径,与每个渲染器的判决不一致 #3314
packages/react/src/hooks/useExpression.ts 的 toPredicateInput 明确保留 CEL 信封,好让 useCondition 路由到 @objectstack/formula(#2661 就是为此):
// #2661 — preserve a CEL-dialect envelope so `useCondition` routes it to the// canonical `@objectstack/formula` engine (identical verdict to the server),// instead of collapsing it to a `${source}` string on the legacy JS path.if((valueasany).dialect==='cel')return{dialect: 'cel',source: src};return`\${${src}}`;
方法自己的 doc comment 还写着它「matches the contract used by every individual action renderer (action-button, action-menu, action-bar, …)」—— 而那些渲染器走的是 toPredicateInput,恰恰是保留信封的那条路。
Activity
yinlianghui commentedon Aug 5, 2026
认领:objectui 分片 PM 循环第 1 轮(v17 C 组)
会话:
session_01GTRjn8xBqp75dk7kFupVRt分支:
claude/issue-3314-actionengine-cel-envelopeWorktree:
objectui-issue-3314域:objectui 分片(core / react)
文件面:
packages/core/src/actions/ActionEngine.ts(主修)+ 只读复用packages/react/src/hooks/useExpression.ts的toPredicateInput(如需搬移归一化逻辑,落点与形状由 dev 依包依赖方向裁定并在报告说明)+ 相应测试 +.changeset/*.md(越界即停,报告说明)前提已对
origin/main@68b6a28核验:信封塌陷仍在(ActionEngine.ts:228/232)。Generated by Claude Code
fix(core): 把本地 PredicateInput 改名为 EvaluatorPredicateInput,消除 spec 占名 (#…
yinlianghui commentedon Aug 5, 2026
PM 验收:ACCEPT(返工 1 轮后)→ PR #3369 转 ready + auto-merge(CI 15/15 全绿,含此前唯一红的 Type Check/check:spec-symbols),跟到 MERGED。
落地内容:
getActionsForLocation不再手拆 CEL 信封,归一化统一走@object-ui/core新增的 canonical helper(与渲染器侧语义逐项一致,14 形态归一化 parity + 9 用例判决 parity 钉住);判别用例锚在两引擎真实分歧处(CEL null 比较 fault→fail-closed vs legacy JS false);非 CEL 分支逐项行为保持。返工内容:本地类型改名EvaluatorPredicateInput(先核 spec 的PredicateInput语义确异 —— 作者面谓词 vs 求值器归一化联合,互不可赋值;对 spec 16 subpath / 4264 导出名核过新名未被占用),循 renamed-dialect 先例(PageNodeRegion/RuntimeWidgetManifest)加双向 tripwire,未加 ALLOW 例外。衍生记账:finding #3367(归一化双实现收敛)、#3368(event-mapping 零调用方 + fail-open)已立,留分诊轮;#3288 补两条硬证据(包级
--filter test假绿机制 + 独立门禁不在包级 type-check 里 —— 后者正是本次 CI 红的直接成因,PM 采纳并入 #3288 记录,不单独立项)。至此第 1 轮三单(#3316/#3317/#3314)全部代码侧闭环。
objectui 分片 PM
session_01GTRjn8xBqp75dk7kFupVRtGenerated by Claude Code
fix(core): ActionEngine 保留 CEL 信封,与渲染器判决一致 (objectstack-ai#3314) (obj…
refactor(react): toPredicateInput 改为 re-export @object-ui/core,不再保留渲染…
fix(core): ActionRunner.execute 的 disabled 门改问「有没有条件」,空谓词不再拦掉执行 (obje…
fix(core): stop double-wrapping an already-`${…}` predicate (objectst…
fix(predicate): 空谓词与非谓词值不再是门 —— 收敛最后三处自带范围的判定 (objectstack-ai#3955, o…