2026-07-21 Superseding Delta:接口连接器仅做源码生成
本节是当前活动 contract;正文中所有 persisted binding、binding alias、已绑定接口、取消绑定、allowedInterfaces、按 alias dispatch 与 binding persistence 验收均被本节取代,不兼容旧 contract。
最终结果
Catalog detail
→ Studio 生成完整 DTO + 命名函数并插入当前光标
→ ctx.interfaces.call/stream({ interfaceId, schemaDigest }, request)
→ Worker/Host 透传 source descriptor
→ Backend 校验 Page/Tab 访问 + Catalog bindable/digest
→ 高风险 Draft Run 即时确认与一次性 grant
→ 原目标 route 权限 + JSON/media/SSE + trace
Page Document 不再保存或 round-trip block.interfaces;源码是作者调用真值,Capability Catalog 是 operation/schema/risk/media 真值。
函数名只属于本地源码,不进入 Runtime/API identity。
Studio 删除已绑定接口、取消绑定、重新插入与绑定并插入;选择接口后按钮仅为插入代码,不调用 onSaveBlock,不改写 main。
Draft Run 第一次触发高风险 interface effect 时由 UI 确认一次;Host 即时查 Catalog,并为每次实际写调用签发、消费精确绑定 actor/workspace/page/tab/block/run/draft/interface/digest 的 grant。grant 不提升目标 API 权限。
Backend 继续独立验证 Page/Tab 访问;不读取 Document interfaces。旧 binding_alias body、unknown interface_id、stale digest 与 non-bindable 均 fail closed。
新增 Root AC
编号
可观察结果
负责 Delivery
状态
AC-020
call/stream 使用 interfaceId + schemaDigest 源码描述符;Worker、trace、API 使用同一 identity,无 alias allowlist
#1396 /#1399 /#1400
green
AC-021
Studio 单击插入完整代码,不保存 binding;无已绑定/取消绑定 UI;main 不被改写
#1396
green
AC-022
Page Document 不输出 interfaces;旧字段不 round-trip;Backend 不解析 document binding
#1396
green
AC-023
Page/Tab 访问、Catalog bindable/digest、目标 route ACL 保持;旧 body/unknown/stale/non-bindable 拒绝
#1396
green
AC-024
高风险 effect 每个 Draft Run 首次确认一次;每次写调用使用独立一次性 grant,replay/mismatch/expiry 拒绝且不提权
#1396
green
AC-025
JSON/204、binary/zip 与 SSE 均使用源码描述符,trace 记录 interface identity 并保留脱敏/取消/清理
#1396 /#1399 /#1400
green
Work Packet Ledger Delta
P18 / complete / Source-described callable contract:commit fa6bbec 。
P19 / complete / Runtime authorization and transport:commit fa6bbec 。
P20 / complete / Studio codegen-only:commit fa6bbec 。
集中 Test Batch Delta
Controlled negative:旧 binding_alias body、unknown interface_id、stale digest、non-bindable、grant replay/expiry/mismatch;Page Document 无 interfaces 可合法运行。
Green:JSON/204/status/error/host injection/401/403,binary envelope,SSE open/next/cancel/cleanup,trace 脱敏,三参数 codegen,connector 不调用 onSaveBlock,document 不输出 interfaces。
Regression:api-server canonical callable routes;page-runtime worker/mediator/bridge/draft-run;api-client;Frontstage codegen/Studio/document/restricted runtime/page-canvas/Draft Run;manifest types、targeted lint/typecheck;浏览器桌面与 390px。
当前 Control Ledger
当前状态:DEV_ACCEPTED → AWAITING_USER_VISUAL_VERIFICATION。
protected baseline:beta@ef2a89b 。
local assembly:codex/issue-1393-codegen-only。
Scout:单一只读 Scout 完成,未修改文件、Issue、服务或测试。
Packet:P18/P19/P20 complete,assembly fa6bbec 。
Test Batch:page-runtime 214、api-client 164、Frontstage 59、api-server route 6 全绿;公共 protocol/runtime/api-client build 全绿。全 App build 与 i18n 仅剩 beta 既有无关基线错误。
停止:必须解析源码或恢复持久 binding 才能授权;media/SSE 需要第二份持久映射;Page/Tab 访问无法独立保留;必须兼容旧 contract;发现真实用户 document 需要迁移。
Issue 元数据
计划类型:Issue Tree
树角色:Root(唯一计划、进度与用户验收真值)
分级:grade:g3
任务形态:hybrid-foundation
当前阶段:phase:implementation
protected baseline:beta@0bef709c56ff9f6e561b107d45d68a5613489f77
assembly:codex/issue-1393-openapi-all@ea195c9d0,/home/taichuy/git/1flowbase_git_workspace/issue-1393-openapi-all
当前最终结果
Frontstage TSX 作者平台继续使用已经集成的 BlockModule + main、类型化 ports/signals、Draft Run 与 Window Workspace。2026-07-21 用户批准以下 superseding delta:
Shared OpenAPI Capability Catalog
= 全部静态 /api/console/** OpenAPI operations
+ 全部动态 /api/runtime/models/** CRUD operations
2026-07-21 用户再次确认:不建设 Frontstage 私有 Callable Catalog;以 MCP Tools 已有 interface-capabilities 目录、DTO 与选择交互为基础,提升为 MCP / Frontstage 共享的 OpenAPI Capability Catalog。
MCP 和 Studio 共享相同能力目录构建、参数/返回 Schema、risk 与 bindable 判定,但通过各自权限入口消费:MCP 使用 mcp.catalog.view,Studio 使用 frontstage.page.design。
不再维护 Frontstage 业务接口白名单,也不按当前页面访问者的目标 API 权限过滤设计目录。
能否绑定由 frontstage.page.design 与 Page Document 写权限决定。
能否执行由运行时当前访问者进入原目标 route 后的 session/PAT、CSRF、Settings permission、workspace/resource/runtime ACL 决定。
写操作单次 grant 只确认副作用,不授予目标 API 权限。
Agent Flow application-key、任意 URL/credential/DOM/storage/secret 仍为非目标。
OpenAPI 与协议 contract
OpenAPI operation/schema/media type 是目录、函数入参和返回值唯一真值;缺失时修后端 annotation,不由前端猜测。
JSON/no-content:Promise<T> / Promise<void>。
multipart/octet-stream:受控 FileRef/BinaryResource envelope;Host 负责读取、编码、上限、取消和清理。
binary/zip response:保留 status/content_type/file_name/resource;大对象不进入 Signal 总线。
SSE:ctx.interfaces.stream<T>(alias, request): AsyncIterable<T>;Host 负责连接、背压、取消和 run/session 生命周期。
Capability Catalog 只负责发现和绑定真值;dispatch/write-grant 是运行边界,不拥有第二份目录。内部不可伪造 dispatch depth 防止无限递归。
宿主只注入可证明的 workspace/page/tab/session 参数;源码不能覆盖。其余 path/query/header/body 保持原 OpenAPI 字段。
UI contract
Studio 复用 MCP Tools 的紧凑 searchable Select 交互;下拉项与选中值只显示 METHOD /path。
删除 name/risk/operation_id/path 重复摘要卡片。
name、operation_id、method、path、description 继续作为隐藏搜索字段。
长路径单行省略并可查看完整值;risk 仅在写运行授权时展示。
Root 验收点账本
既有 AC-001~AC-011 的已集成行为继续作为回归,不恢复旧 defineBlock/query/action/Drawer contract。
编号
可观察结果
负责 Delivery
状态
AC-012
MCP 与 Studio 消费同一个 Shared OpenAPI Capability Catalog;静态 Console operation ID 集合一致且无 Frontstage 私有目录/业务白名单
#1396
pending
AC-013
每个 published Runtime Model 都发布 list/get/create/update/delete;执行权限由原 Runtime route 决定
#1396
pending
AC-014
catalog 与绑定配置要求 frontstage.page.design;grant 只确认副作用且不提升权限;dispatch 使用当前页面访问者会话进入目标 route,401/403 原样可观察
#1396
pending
AC-015
JSON、204、合法业务 header、host injection、schema/status/error 与递归 depth 均有真实 allow/deny fixture
#1396
pending
AC-016
multipart、octet、binary 与 zip operation 可生成并执行受控资源函数
#1399
pending
AC-017
两条真实 Console SSE route 进入 OpenAPI/Callable,生成 AsyncIterable 并支持背压/取消/清理
#1400
pending
AC-018
Studio 使用 MCP Tools 式紧凑搜索选择器;目录与选中值只显示 METHOD /path,隐藏字段仍可搜索,390px 无横向溢出
#1396
pending
AC-019
生成、绑定、重开持久化、运行观测与当前光标插入在所有 protocol family 下保持一致
#1396 /#1399 /#1400
pending
Delivery Map
Delivery
纵向结果
状态
#1396
全量 Console/Runtime CRUD 目录、JSON/no-content 调用、代码生成与极简 selector
implementation
#1399
multipart/octet/binary/zip 受控资源调用
implementation
#1400
SSE AsyncIterable 与生命周期
implementation
#1395
类型化 outputs/inputs 与 Tab/Page Signal
integrated regression
#1394
Draft Run Console 与 Window Workspace
integrated regression
Scout evidence
唯一只读 Scout SCOUT_DONE;未修改文件、未运行测试。
ApiDoc::paths 中静态 Console operation:255 个唯一 ID、无重复;GET 110、POST 85、PUT 23、PATCH 15、DELETE 22。
response:229 JSON、24 no-content、2 binary/zip 缺准确 media schema。
request:98 JSON、1 octet;3 个真实 multipart handler 缺 requestBody OpenAPI。
2 条真实 Console SSE route 尚未进入 ApiDoc::paths。
通用 dispatcher 已重新进入完整 console_router 并复制当前认证/CSRF headers,但当前只发送 JSON、只解析 JSON/no-content。
Dynamic Runtime Model 已能生成五 CRUD,但 Frontstage 再次硬过滤为 list/get。
MCP Tools 已通过 /api/console/mcp/interface-capabilities 消费静态 OpenAPI、动态 Runtime Model CRUD、parameter/result schema、risk/bindable,并已有 METHOD path searchable Select;缺口是该通用目录仍由 MCP 私有 owner 承载。
Callable catalog 由 design permission 保护;dispatch/grant 刻意不要求访问者拥有设计权限,目标 route 仍负责当前访问者的 ACL / CSRF;递归由内部 depth 限制。
Work Packet Ledger
P12 / ready / OpenAPI protocol truth:补齐 multipart/binary/zip/SSE annotation 与唯一 inventory fixture。Owned:相关 route annotation、openapi/mod.rs、openapi_docs.rs、route-doc tests。Stop if:必须改变公开 route/认证。
P13 / active / Shared Capability Catalog:把 MCP 私有 interface-capabilities 构建提升到共享 OpenAPI owner;MCP 与 Frontstage 使用同一 DTO/Schema/risk/bindable 真值,保留各自权限入口并排除 Published Workflow。Owned:openapi_interface/catalog*、MCP/Frontstage capability routes、backend fixtures。
P14 / pending P13 / Unary dispatcher:JSON/no-content/status/error/schema/CSRF 与原 route permission。Owned:openapi_interface/dispatcher*、canonical integration tests。
P15 / pending P12-P14 / Controlled media:multipart/octet/binary/zip media envelope 和真实 fixtures。Owned:backend dispatcher/protocol、api-client/page protocol/runtime/codegen 最近路径。
P16 / pending P14 / Full codegen and selector:全量 DTO/codegen、METHOD+path UI、binding persistence 与 390px。Owned:frontstage api-client/jsx-studio 最近路径。
P17 / pending P12-P14 / SSE stream:OpenAPI stream metadata、backend stream bridge、Page Runtime stream effect/cancel/backpressure、codegen 与 fixtures。
各 Packet 同时提交指定 fixture,但不逐包 QA;Root 全部装配后冻结一次 assembly。
集中 Test Batch
Backend:route-doc inventory/authenticity;canonical Frontstage catalog/dispatch/write-grant;runtime model CRUD;JSON/204/multipart/octet/binary/zip/SSE allow/deny、schema、CSRF、permission、recursive depth。
Protocol/runtime:interface call/stream effect、FileRef/BinaryResource、bounded queue、cancel/run cleanup、source policy 与 [Root] Frontstage 代码区块浏览器运行时编排与加载体验 #1382 regression。
Frontend:api-client、page protocol/runtime、page document/binding/codegen/editor projection、selector/search/persistence、Draft Run interface observations。
Source integration:相关 Rust fmt/targeted Cargo(同一时刻一个);一个 frontend targeted batch、单文件 lint、typecheck、i18n-hygiene。
Browser:冻结 assembly 独立端口;桌面与 390px 验证 JSON read/write、文件、binary、SSE、METHOD+path、权限拒绝与无 page error/overflow。
workspace clippy/full backend/coverage 延后 CI;产物写入 tmp/test-governance/。
Control Ledger
当前状态:REFRAME_APPROVED → BUILD_BATCH。
当前 Packet:P13 shared capability refactor。
assembled commits:32d6bd9ab、4e62cbc7a、d0ec67b8c、8eab75455、ea195c9d0;其中 Frontstage 私有 catalog 部分待在本 Packet 中移除。
活动 agent:none;Scout 已结束。
重型进程:none。
下一状态事件:P13 shared refactor committed,然后装配 Studio MCP-style selector 与重新冻结 Test Batch。
Observation counters:packets=7、needs_split=0、assembly_conflicts=0、agent_contexts=4、validation_runs=1、qa_cycles=1。
停止与重构条件
必须开放任意 URL/credential/DOM/secret 或改变 Agent Flow application-key 边界。
media/schema 只能由前端猜测;或 stream 无法绑定既有 run/session owner。
需要改变 [Root] Frontstage 代码区块浏览器运行时编排与加载体验 #1382 Worker budget/lifecycle、Page Signal 持久化或真实用户数据。
Packet 无法声明单一结果/owned write set,或同一根因集中 QA 第二次失败。
生命周期
执行顺序:One Read-only Scout → Packetize All → Build All → Freeze Assembly → One Fresh QA → User Acceptance。
Root 一次批准已覆盖 #1396 、#1399 、#1400 ;不逐 Delivery 重复请求用户批准。
2026-07-21 Superseding Delta:接口连接器仅做源码生成
本节是当前活动 contract;正文中所有 persisted binding、binding alias、已绑定接口、取消绑定、allowedInterfaces、按 alias dispatch 与 binding persistence 验收均被本节取代,不兼容旧 contract。
最终结果
新增 Root AC
Work Packet Ledger Delta
集中 Test Batch Delta
当前 Control Ledger
Issue 元数据
grade:g3hybrid-foundationphase:implementationbeta@0bef709c56ff9f6e561b107d45d68a5613489f77codex/issue-1393-openapi-all@ea195c9d0,/home/taichuy/git/1flowbase_git_workspace/issue-1393-openapi-all当前最终结果
Frontstage TSX 作者平台继续使用已经集成的
BlockModule + main、类型化 ports/signals、Draft Run 与 Window Workspace。2026-07-21 用户批准以下 superseding delta:interface-capabilities目录、DTO 与选择交互为基础,提升为 MCP / Frontstage 共享的 OpenAPI Capability Catalog。mcp.catalog.view,Studio 使用frontstage.page.design。frontstage.page.design与 Page Document 写权限决定。OpenAPI 与协议 contract
Promise<T>/Promise<void>。FileRef/BinaryResourceenvelope;Host 负责读取、编码、上限、取消和清理。ctx.interfaces.stream<T>(alias, request): AsyncIterable<T>;Host 负责连接、背压、取消和 run/session 生命周期。UI contract
METHOD /path。Root 验收点账本
既有 AC-001~AC-011 的已集成行为继续作为回归,不恢复旧 defineBlock/query/action/Drawer contract。
frontstage.page.design;grant 只确认副作用且不提升权限;dispatch 使用当前页面访问者会话进入目标 route,401/403 原样可观察METHOD /path,隐藏字段仍可搜索,390px 无横向溢出Delivery Map
Scout evidence
SCOUT_DONE;未修改文件、未运行测试。ApiDoc::paths中静态 Console operation:255 个唯一 ID、无重复;GET 110、POST 85、PUT 23、PATCH 15、DELETE 22。ApiDoc::paths。console_router并复制当前认证/CSRF headers,但当前只发送 JSON、只解析 JSON/no-content。/api/console/mcp/interface-capabilities消费静态 OpenAPI、动态 Runtime Model CRUD、parameter/result schema、risk/bindable,并已有METHOD pathsearchable Select;缺口是该通用目录仍由 MCP 私有 owner 承载。Work Packet Ledger
openapi/mod.rs、openapi_docs.rs、route-doc tests。Stop if:必须改变公开 route/认证。interface-capabilities构建提升到共享 OpenAPI owner;MCP 与 Frontstage 使用同一 DTO/Schema/risk/bindable 真值,保留各自权限入口并排除 Published Workflow。Owned:openapi_interface/catalog*、MCP/Frontstage capability routes、backend fixtures。openapi_interface/dispatcher*、canonical integration tests。各 Packet 同时提交指定 fixture,但不逐包 QA;Root 全部装配后冻结一次 assembly。
集中 Test Batch
tmp/test-governance/。Control Ledger
REFRAME_APPROVED → BUILD_BATCH。32d6bd9ab、4e62cbc7a、d0ec67b8c、8eab75455、ea195c9d0;其中 Frontstage 私有 catalog 部分待在本 Packet 中移除。停止与重构条件
生命周期
执行顺序:One Read-only Scout → Packetize All → Build All → Freeze Assembly → One Fresh QA → User Acceptance。
Root 一次批准已覆盖 #1396、#1399、#1400;不逐 Delivery 重复请求用户批准。