开发服务器 HTTP
agent-bundle dev 在其 loopback 前台服务器上为 Workbench 挂载这些路由。它们是开发协议,不是公开部署
端点。浏览器路由要求前台会话守卫,并强制执行安全中描述的 Workbench origin 策略。
除非另有说明,游标都是非负安全整数,响应均为 JSON。
路由调用
POST 正文是一份 RouteInvocationRequest:包含 routeId,以及可选的 input、args、
correlationId、调用方 requestId 与事件夹具选项。前台会把这两个标识回显到调用上,使路由工作区与
Trace 可以关联此次运行。完成后的信封包含输入、provenance 上下文、providers、渲染事件、Agent
Document、结果、投影、诊断与计时。Trace 条目链接到这份完整快照,而不会复制它。渲染事件即渲染历史窗口
(至多 256 条事件与 2 MiB,并始终保留最新一条事件与最新一条携带文档的事件,仅这两条本身可能
超过 2 MiB),由信封、单项路由与流重放共享;
一旦有事件被淘汰,信封会携带 retention(producedEvents、evictedEvents、evictedBytes 与
retainedBytes),流也会发送一次 truncated。Agent Document、结果与 outcome 永不被该窗口截断。
取消后的调用带有 status: "cancelled" 且不含 outcome;取消已终止的调用会返回 AB8256(409)。
宿主会话
下表每条路由都要求前台会话 cookie 或 x-agent-bundle-session bearer 值。会话 id 匹配
hs_[0-9a-z]{16},JSON 请求正文采用严格校验,输入最多为 16 KiB UTF-8 文本,终端尺寸必须是
1 到 500 的整数。
HostSession 报告 id、host、state、startedAt、可选的终止字段 endedAt、exitCode、
signal、pid、cols、rows、可选的初始 prompt,以及可选的 restartOf 与
traceSessionId。其 authority 包含绝对 projectRoot、已采用的 epochId 与宿主插件
install 目的地。HostAvailability 包含 host、launchable,以及可选的 reason 与已解析
executable。
流以一条 state 帧开始,以一帧重放最多 256 KiB 的保留输出,再继续发送实时 state 与 output。它每 15 秒发送
一条 keep-alive 注释,并在 end 后关闭。每个事件带有一个 JSON data: 对象:
宿主会话失败使用以下诊断:
开发运行时运行
POST /api/runtime/runs 接受一份 DevRuntimeInvocationRequest,其中包含 surfaceId、target、
input,以及可选的 fixtureId 与 expectedGenerationId。GET /api/runtime/runs 列出最近的运行,
GET /api/runtime/runs/<id> 读取一次运行。
MCP 操作与关联
GET /api/mcp/launches?epochId=<epoch>&serverName=<server> 列出某服务器在已发布 epoch 上可用的 App
启动方式:共享同一启动身份的 { launchId, targets } 分组,从产物声明的 projection 解析并参考已安装的宿主。
Workbench 的 App 工作区从该列表中选择,而不是从构建的全局 target 中选择。
POST /api/mcp/sessions/<session-id>/apps 接受只有 input 而没有 result 的请求,为仍在进行中的调用
挂载预览;此时 App 只收到 ui/notifications/tool-input。POST /api/mcp/apps/<binding-id>/result 携带
{ result } 或 { cancelled } 发布该绑定唯一的终态通知(tool-result 或 tool-cancelled);对已结算或
创建时已带结果的绑定应答 accepted: false,绑定关闭后应答 404(AB8022)。
POST /api/mcp/sessions/<session-id>/operations 保留现有操作联合类型。tools/call 操作额外接受一个
最多 256 个字符的可选顶层 correlationId。浏览器不能直接提供 _meta;前台在发送请求前会把该值
复制到 params._meta["agent-bundle/correlationId"]。
MCP Trace 会提取 JSON-RPC id 与方法,以及有界的宿主元数据。请求/响应对共享 mcpRequestId 与耗时;
工具调用和 prompt 读取会通过 ?session=<session-id> 链接到其 Application 路由。无法解析到路由的
操作会链接到 /advanced/protocol?session=<session-id>。
统一 Trace
省略 after 等同于 after=0。重放形状如下:
每个 TraceEntry 包含:
TraceCorrelation 可以携带 correlationId、conversationId、epochId、executionId、host、
invocationId、mcpRequestId、mcpSessionId、requestId、routeId 与 sessionId。
生产者只填充自己已知的键。details 是有界且已确保安全的 JSON 投影,不是载荷正文。
当请求的游标早于保留的历史时,重放会返回一个 gap,流也会把同一份 TraceReplayGap 作为一个 NDJSON
帧发出:
格式错误的游标返回 400,超前于当前历史的游标返回 409,已关闭或不可用的 Trace hub 返回 503。
这些响应使用生成式诊断参考中登记的 Trace 诊断。
Raw logs
Raw logs 仍是框架诊断流。记录只暴露白名单中的上下文值与浏览器安全文本。带有 correlationId、
invocationId 或 mcpSessionId 的记录可以链接到 /trace?correlation=<value>;未关联的记录仍留在
Advanced → Raw logs。
宿主钩子收据
生成式钩子进程会向这个仅限前台的路由提交一份有界收据。它不是浏览器 API:会拒绝 Origin 标头与非
loopback 对端,要求收据端点在每次开发服务器运行时随机生成的 bearer token,并且不暴露读取或命令操作。
Workbench cookie 与会话标头不能授权它。收据包含版本 1、一份 EventTraceExecution、不含载荷的
内核事件及其挂钟开始时间、宿主/会话/请求标识和解析后的 lineage 轴。原生事件正文、工具输入或输出、
渲染文档、环境值、凭据、文件系统路径与错误堆栈均不存在。
对于宿主调用,包装器会在已安装捆绑包旁查找 .agent-bundle-dev.json,再从其中所指项目的
.agent-bundle/hook-receipts.json 读取当前端点。由开发服务器生成的模拟调用通过两个内部收据环境变量
取得相同的 loopback URL 与 token。端点文件会以仅所有者可读模式替换,并在服务器关闭时移除。只接受
精确的 http://127.0.0.1:<port> 或 http://[::1]:<port> origin。包装器为提交保留 750 ms,并忽略
传输失败,因此 Workbench 观察绝不会改变钩子结果。
收据与内核条目在时间线中的呈现方式见 Trace。