Skip to content

Provider Boundary

@limecloud/agent-runtime-ui 当前标准不是 Provider / hook runtime,而是受控 React surface。公共 API 只接收 AgentUiProjectionState、callbacks 和 labels。

当前标准

tsx
<AgentUiProjectionView
  state={state}
  onResolveAction={handleResolveAction}
  onSelectArtifactRef={handleOpenArtifact}
  onSelectEvidenceRef={handleOpenEvidence}
  labels={labels}
/>

这个设计是刻意的:runtime transport、projection reducer、React presentation 分别属于不同包,产品应用必须显式决定每一层的 owner。

为什么不提供公共 Provider

原因说明
避免隐式 transportProvider 很容易顺手创建 runtime client,导致 UI 包拥有 transport。
避免 session store 膨胀产品应用已有自己的 session、workspace、artifact store。
避免 mock fallback 回流Provider 若内置 fixture fallback,会破坏 production fail-closed。
保持测试分层reducer 在 projection 包测,React 只测渲染和 callback。

允许的本地 Provider

产品应用可以在自己的业务壳层写本地 Provider,例如保存展开/折叠、focus、selected tab、右栏布局等 presentation state。但它不能:

  • 创建 runtime transport。
  • 订阅 App Server event stream。
  • 修改 AgentUiProjectionState 里的 runtime facts。
  • 从 assistant text 解析 tool/action/artifact 状态。
  • 读取 Provider key 或 App Server DB。

未来 facade

未来如果需要 @limecloud/agent-ui facade,它只能 re-export contracts、projection 和 runtime-ui 的 UI 侧能力。它不得导出 runtime transport,也不得把 Provider 变成新的 runtime owner。

验证入口

bash
npm --prefix packages/agent-runtime-ui run test

Lime Agent Workbench 是面向 Lime AgentRuntime 与 AgentUI 的治理优先标准。