Slex Standard Artifacts

SlexKit 提供一组机器可读 JSON 文件,供 agents、host runtimes、MCP server 和 npm 包消费者读取。它们描述的是嵌入 Markdown 的、有本地状态和逻辑的 UI artifact,不是纯 JSON 卡片目录。

这些 JSON 文件由 TypeScript runtime registry、组件 specs、runtime 版本常量、表达式能力元数据和 conformance fixtures 生成。

文件

校验模型

校验流程是 parse-first:

  1. 先解析 JavaScript object literal source。
  2. 校验 Slex envelope 和 component-key 形状。
  3. 用生成的 component catalog 比对组件名和 props。
  4. 按 logic profile 扫描逻辑字符串和 source。
  5. 返回稳定的 diagnostic 与 warning codes。

validateSlexSource() 保留旧的 structured output,并新增 schemaVersionprotocolVersionlogicProfileVersion。Secure mode 的诊断会引导作者使用受 policy 控制的 api.*,而不是把所有逻辑都视为禁止。

解析成功后的 warnings 带有稳定 path。例如 layout.text:value.$text 里的未知 std.* 调用,与 g.load 里的原生 fetch() 调用,会返回不同 path,工具可以定位到具体表达式,而不是重写整个 artifact。

运行 Conformance

使用内置 conformance runner 验证 SlexKit validator 是否仍然符合已发布的标准 fixtures:

slex validate --standard
slex validate --standard --json
slex validate --standard --fixture valid-full-envelope

也可以校验单个 Slex source 文件:

slex validate ./artifact.slex --mode secure
slex validate ./artifact.slex --mode trusted --strict

Conformance 校验 source 结构、logic profile diagnostics、capability checks 和 warning 稳定性。它不是视觉渲染截图测试。

诊断代码

客户端用 codepathvalue 做程序判断。message 只用于展示。

Code Severity 含义
syntax error JavaScript object literal 解析失败。它作为 diagnostic.code 返回,不是 warning。
unsupported_protocol warning 可选 slex 标记与支持的 protocol version 不一致。
invalid_component_key warning component key 不符合 type:identifier 形状。
invalid_directive_type warning $if$for$key 等 structural directive 的值类型不合法。
unknown_component warning component type 不在生成的 component catalog 中。
unknown_prop warning component prop 不在对应组件的公开 spec 中。
unknown_std_member warning 逻辑表达式引用了未发布的 std.* helper。
unknown_api_member warning 逻辑表达式引用了 secure runtime capability catalog 之外的 api.* 成员。
native_secure_capability warning Secure mode source 使用了 fetch、timer、WebSocket 等原生浏览器能力名;应改用受 policy 控制的 api.*
reserved_context_shadowing warning g key 或 component identifier 覆盖了保留表达式上下文名。

Path 指向解析后的 source tree,例如 g.loadlayout.text:value.$text。如果 parse 失败,validator 仍可能返回 source-level usage warnings,但不会返回解析树 path。

一致性 fixture 契约

slex-conformance.json 包含 validwarninginvalid fixtures。每个 fixture 都有 idmode、source text 和 expected 对象。

Conformance suite 只检查 source validation semantics。它不检查组件截图、浏览器布局、CSS output 或 host adapter lifecycle behavior。

版本策略

SlexKit 暴露多个 version 字段:

兼容 package release 可以更新 catalog hash、增加组件或 props、增加 examples,或改进 message,而不改变 protocolVersion

如果变更会改变 source 解释、删除或重命名 diagnostic code、改变 expression semantics,或改变 secure capability 行为,就需要 protocol 或 logic profile review。Artifact hash 用于 cache invalidation,不是 semantic version。

与 A2UI 的区别

A2UI 描述跨平台声明式 UI。SlexKit 描述嵌入 Markdown 的、有状态、可执行 UI artifact;host 决定使用 trusted runtime 还是 secure runtime。

JSON Schema 负责描述 envelope 与 catalog。JavaScript expression profile 是标准的一部分,因为本地逻辑与状态本来就是 artifact 的组成部分。