Skip to content

Delivery:可调用 OpenAPI operation 生成完整 TSX 源码并安全执行 #1396

Description

@JAVA-LW

2026-07-21:AC-020–AC-024 superseding delta

本 Delivery 中所有 binding aliasblock.interfaces 与 document allowlist 设计均被 Root #1393 的 AC-020–AC-024 取代。Unary 调用改为源码携带 { interfaceId, schemaDigest };Studio 只生成完整 DTO + 函数并插入光标,不保存绑定;Host/Backend 直接校验 Catalog descriptor、页面/Tab/Block、目标路由权限与按次 write grant。旧 alias 请求必须失败,不做兼容。

Issue 元数据

纵向交付结果

作者新建 TSX 代码区块后获得标准 BlockModule + main 模板;从连接器选择任意合格 Callable OpenAPI operation,可在当前光标插入完整、可编辑、可追溯的参数类型、响应实体和命名函数,并在浏览器受限 Worker 中通过本地区块绑定安全执行。

本 Delivery 必须形成“目录选择 → 光标插入 → 编辑 → 编译 → 运行 → 权限/Schema 校验 → 结果返回”的完整纵向链路,不把后端 contract、SDK 类型或生成器拆成独立 Delivery。

结算的 Root AC

  • AC-001:新建区块使用 BlockModule + main,正确呈现 BlockResult.view
  • AC-002:合格 OpenAPI operation 在光标插入完整源码,连接器不改写 main
  • AC-003:application_conversations 只显示 list/get,当前 filter 生成 string
  • AC-004:生成函数只能通过本地区块绑定执行,运行边界强制安全 contract。
  • AC-005:上下文/接口代码可删除与重新注入,Schema 漂移有 diff 且不静默覆盖。

范围与所有权

范围内

  • 修正 OpenAPI operation 真值:按数据模型 capability 生成允许的 operation;响应/request Schema 完整可解析。
  • 建立 OpenAPI ∩ Callable Adapter ∩ Frontstage scope ∩ user authorization 目录。
  • 建立 Page Document 本地 binding alias、稳定 operation ref、Schema digest、作用域/风险元数据。
  • 新 Block SDK / Page Protocol contract:BlockModulemainBlockResultctx.interfaces.call
  • 删除新模板中的 defineBlock/render;更新内置模板、fixture 和开发期示例。
  • OpenAPI codegen:解析 $ref、path/query/header/requestBody/2xx response,生成具体实体和完整函数。
  • Monaco 当前光标插入、缺失 import 合并、单次 undo、来源注释、重新注入、过期 diff/重新生成。
  • 运行时 binding alias 解析、输入/输出 Schema 校验、宿主认证/作用域注入、权限/风险检查、脱敏调用追踪。
  • 普通 OpenAPI operation 与数据模型 operation 使用同一条生成和执行路径。

非目标

  • Agent Flow application key。
  • 任意 URL、直接 HTTP credential、任意网络/npm/DOM/storage/secret。
  • 前端猜测 Filter AST 或 DTO。
  • 自动把接口调用/组件/业务代码写进 main
  • 虚拟模块隐藏全部生成实现。
  • 静默覆盖用户修改后的生成源码。
  • 本 Delivery 不实现跨区块调度和完整 Draft Run Console,只提供后续所需 BlockResult 与 interface trace contract。

独占模块 / 集成边界

  • 后端 OpenAPI docs/registry、Frontstage Callable 目录与执行适配。
  • @1flowbase/block-sdk@1flowbase/page-protocol、受限 Worker module contract。
  • Frontstage JSX Studio interface connector、editor projection/codegen 与 Page Document binding。
  • [Root] Frontstage 代码区块浏览器运行时编排与加载体验 #1382 的边界:复用其 Worker 生命周期,不改变启动/运行预算和调度 AC。
  • 与 Delivery 2 的边界:交付 BlockResult/BlockContext 基础类型,Signal/依赖调度由 Delivery 2 消费。
  • 与 Delivery 3 的边界:输出结构化 interface trace/source location,Console UI 由 Delivery 3 消费。

验收证据

编号 可观察结果 证据
D1-AC-01 空白模板严格使用 Root 冻结的 BlockModule + main 形态,Page Document 仍拥有 id/title/bindings template/SDK/runtime fixture + 浏览器创建区块
D1-AC-02 application_conversations 连接器只列 list/get;插入实体、query、response 与完整函数;filter?: string 后端 OpenAPI/目录测试 + codegen snapshot + Monaco
D1-AC-03 至少一个非数据模型的合格 OpenAPI operation 复用同一链路完成绑定、生成和执行 integration fixture
D1-AC-04 path/query/header/body 和 $ref 分组映射正确;认证 header 不进入作者参数 table-driven OpenAPI fixtures
D1-AC-05 未绑定 alias、无 Callable Adapter、越权、Schema 不匹配和风险拒绝均在边界失败且不泄漏敏感信息 controlled negative
D1-AC-06 删除代码后可按同一 binding 重新插入;OpenAPI digest 变化提供 diff,用户改动不被覆盖 editor/version drift fixture
D1-AC-07 连接器不修改 main,生成函数可位于 default export 之后并由作者显式调用 Monaco undo/source fixture
D1-AC-08 defineBlock/render 内置示例完成上线前干净切换,无双 contract 分支 repository/runtime regression

Scout Evidence

  • MCP interface catalog 已经证明可从静态/动态 OpenAPI 提取 operation、参数位置、解析后的 $ref、result/security/risk/bindable;debug executor 已经证明可在同一 API router 内按 path/query/body 转发请求。
  • Frontstage 当前仍维护手工 data model query/action registry、handler 与 DTO;编辑器只生成一行通用调用并把类型藏进 extraLib。
  • Page Runtime 当前 transform 强制 defineBlock、evaluator/worker 调用 render(ctx),但已经具备受限 module injection、Promise effect、日志、phase、schema validation 与 host bridge。
  • 动态 OpenAPI 当前无条件构造五个 CRUD;typed builtin contract 已能判定 RuntimeRead 只读,应成为 operation 裁剪真值。
  • 正式开发 inventory 已冻结为 P1~P4;若 P1 不能形成一个共享 OpenAPI catalog/dispatcher owner,停止回 Root。

Work Packet Ledger

ID 具体代码结果 Input SHA / 依赖 Owned paths Owner / worktree AC / fixture 状态 / commit
P1 Callable OpenAPI backend 与 Frontstage catalog/dispatch beta@844ac282 api-server OpenAPI/MCP/frontstage/runtime docs + tests developer / reusable D1 worktree AC-002~004;read-only/non-model/deny/schema ready
P2 BlockModule/main/BlockResult/interfaces Worker contract beta@844ac282;与 P1 contract 对齐 page-protocol/page-runtime js-block + tests Root / assembly AC-001、004、011;new/old module + effect ready
P3 Page binding DTO/document 与纯 OpenAPI codegen P1+P2 assembly api-client/frontstage api/page-document/jsx-studio lib + tests D1 developer AC-002~005;location/$ref/digest ready
P4 新模板、Monaco 光标插入/重注入与连接器 UI P3 assembly block templates/Studio resource/editor/i18n/css + tests D1 developer AC-001~005;cursor/undo/no-main-write ready

Packet 只提交产品代码与指定 fixture,不逐包运行 QA/回归;若缺少机械 compile 将无法安全装配,可执行 handoff 中明确的最小 probe。所有 commit 由 Root 串行装入 assembly。

Test Batch

  • Backend:api-server Frontstage callable/OpenAPI route integration,覆盖 RuntimeRead list/get、registered non-model operation、bindable/authorization/schema negative。
  • Page Protocol/Runtime:新模块、旧 contract rejection、BlockResult、interface effect/trace、受限能力回归。
  • Frontstage:binding/document roundtrip、OpenAPI codegen table fixtures、模板、Monaco cursor/undo/reinject/digest diff、只读目录。
  • Browser:数据模型 list + 非数据模型 operation 从连接器插入到执行。
  • 执行时机:Root 全部 Delivery 装配并冻结 SHA 后,由唯一 fresh QA 集中执行。

停止与上报条件

  • OpenAPI 缺失的字段/过滤/响应只能靠前端猜测或兼容才能继续。
  • 新增认证、secret、网络或 Agent Flow application key。
  • 需要改变 [Root] Frontstage 代码区块浏览器运行时编排与加载体验 #1382 Worker budget/lifecycle。
  • 无法把 operation 执行收敛到一个 Callable Registry,或产生两套授权真值。
  • Work Packet 不能声明单一结果/明确写集合,或共享 contract 无法串行装配。

完成条件

全部 Work Packet 进入 Root assembly,D1-AC-01~08 在集中 Test Batch 有证据,Root fresh QA 通过,结果合入 protected baseline,Root #1393 账本已更新。

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:apiPublic API or protocol contract workarea:backendBackend API, service, repository, or runtime workarea:frontendFrontend UI or interaction workarea:runtimeRuntime and execution behaviorchild-issueChild implementation issuecontractContract or API semantics changegrade:g3Cross-domain decision or implementation workneeds-backendNeeds backend workneeds-frontendNeeds frontend workneeds-qaNeeds QA or acceptance validationphase:implementationImplementation in progressplan:treeLong plan with one Root and vertical Delivery issuesrisk:highHigh risk if implemented incorrectlysize:lLarge implementation and review sizetype:featureFeature or new capability

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions