发现于 #5552 (退役 FieldMapping.transform)测量过程,不在该 PR 范围内(该单指令明确 ⛔ 不碰 ExpressionDialect 本体)。
事实
packages/spec/src/shared/expression.zod.ts 模块级 TSDoc 的 "## Dialects" 表(L19-23):
| dialect | engine | use |
|:---|:---|:---|
| `cel` | `@objectstack/formula` (cel-js + ObjectStack stdlib) | formulas, predicates, seed dynamic values |
| `js` | sandboxed L2 hook bodies (`isolated-vm` / `quickjs`) | mapping, hook bodies |
| `cron` | `cron-parser` | job schedules |
而同文件 L42,12 行之下 :
export const ExpressionDialect = z.enum(['cel', 'cron', 'template']);
表和枚举两个方向都对不上 :
多了 js —— 该方言于 formula: retire the js expression dialect — redundant with L2 ScriptBody; hasDialect also mis-reports the stub as real #3278 (ADR-0058 addendum)退役。讽刺的是,紧挨着枚举的那段注释自己把退役讲得很清楚("js was declared here but never shipped as an expression engine … Retired in formula: retire the js expression dialect — redundant with L2 ScriptBody; hasDialect also mis-reports the stub as real #3278 "),但上方的表没跟着改。表还给它配了引擎(isolated-vm / quickjs)和用途,读起来完全像一个可选项。
少了 template —— 它是枚举的真实成员,并且有自己的 author helper(TemplateExpressionInputSchema,用于通知标题/正文、titleFormat、prompt 模板),表里却没有。
影响
模块 TSDoc 进生成文档:content/docs/references/shared/expression.mdx:32 逐字复制了这一行。所以已发布的参考页正在告诉作者 js 是一个有引擎的方言 ,而 ExpressionSchema 会直接拒收 dialect: 'js'。这与 #5552 是同一类缺陷(describe/文档宣传一个运行时不兑现的方言名,Prime Directive #10 ),只是位置在方言表本身。
表里 js 的 "use" 列还写着 mapping —— 而 #5552 / PR #6078 刚刚把字段映射的整个 transform 联合退役掉,所以这一格在该 PR 落地后会更加不成立。
建议处置
纯文档修正(改表:删 js 行、补 template 行),不动枚举与任何 schema。范围应仅限 expression.zod.ts 的 TSDoc + 重跑 gen:schema && gen:docs。
需要留意的一点交给三诊:js 那行描述的能力(沙箱化 L2 hook body)本身是存在 的,只是它不是 L1 expression dialect 而是 ScriptBody { language: 'js' }。所以正确的修法多半不是删一行了事,而是把它挪到一句"procedural JS 走 ScriptBody,不是 dialect"的说明里 —— 枚举旁那段现成注释已经这么写了,可直接复用措辞。
发现于 #5552(退役
FieldMapping.transform)测量过程,不在该 PR 范围内(该单指令明确 ⛔ 不碰ExpressionDialect本体)。事实
packages/spec/src/shared/expression.zod.ts模块级 TSDoc 的 "## Dialects" 表(L19-23):而同文件 L42,12 行之下:
表和枚举两个方向都对不上:
js—— 该方言于 formula: retire thejsexpression dialect — redundant with L2 ScriptBody;hasDialectalso mis-reports the stub as real #3278(ADR-0058 addendum)退役。讽刺的是,紧挨着枚举的那段注释自己把退役讲得很清楚("jswas declared here but never shipped as an expression engine … Retired in formula: retire thejsexpression dialect — redundant with L2 ScriptBody;hasDialectalso mis-reports the stub as real #3278"),但上方的表没跟着改。表还给它配了引擎(isolated-vm/quickjs)和用途,读起来完全像一个可选项。template—— 它是枚举的真实成员,并且有自己的 author helper(TemplateExpressionInputSchema,用于通知标题/正文、titleFormat、prompt 模板),表里却没有。影响
模块 TSDoc 进生成文档:
content/docs/references/shared/expression.mdx:32逐字复制了这一行。所以已发布的参考页正在告诉作者js是一个有引擎的方言,而ExpressionSchema会直接拒收dialect: 'js'。这与 #5552 是同一类缺陷(describe/文档宣传一个运行时不兑现的方言名,Prime Directive #10),只是位置在方言表本身。表里
js的 "use" 列还写着mapping—— 而 #5552 / PR #6078 刚刚把字段映射的整个transform联合退役掉,所以这一格在该 PR 落地后会更加不成立。建议处置
纯文档修正(改表:删
js行、补template行),不动枚举与任何 schema。范围应仅限expression.zod.ts的 TSDoc + 重跑gen:schema && gen:docs。需要留意的一点交给三诊:
js那行描述的能力(沙箱化 L2 hook body)本身是存在的,只是它不是 L1 expression dialect 而是ScriptBody { language: 'js' }。所以正确的修法多半不是删一行了事,而是把它挪到一句"procedural JS 走 ScriptBody,不是 dialect"的说明里 —— 枚举旁那段现成注释已经这么写了,可直接复用措辞。