feat(agent): support Responses steering and project-aware tools

Use the dedicated TJWATER_AGENT_URL and Responses stream protocol. Keep running
turns active while users steer or queue follow-ups and edit pending delivery.
Refresh the model catalog before generation and preserve approval mode selection.

Integrate scoped investigation messaging/presentation, geographic place selection,
current Agent composer styles and supporting workbench contracts.

Validation: 77 focused Vitest checks, 21 browser cases, lint, typecheck and
production build. Preserve direct Server/Agent routing and project authentication.
This commit is contained in:
2026-10-19 18:46:58 +08:00
parent 2c5bf15cce
commit ec23d44b02
131 changed files with 6663 additions and 1204 deletions
@@ -123,7 +123,7 @@ test("keeps mock conditions while retaining explicit backend alerts", async ({ p
await expect(panel).not.toContainText("演示 合成低压调查");
const alertButton = page.getByRole("button", {
name: "查看异常处置面板,当前 1 条待复核工况"
name: "查看待办与告警,当前 1 条待处理事项"
});
await alertButton.focus();
await page.keyboard.press("Enter");
@@ -462,11 +462,11 @@ test("keeps mock conditions while using backend work orders and alerts", async (
await expect(detail.locator("details")).toHaveCount(0);
const alertButton = page.getByRole("button", {
name: "查看异常处置面板,当前 1 条待复核工况"
name: "查看待办与告警,当前 1 条待处理事项"
});
await alertButton.focus();
await page.keyboard.press("Enter");
await expect(page.getByText("来源:后端运行态", { exact: true })).toBeVisible();
await expect(page.getByText("业务告警来源:后端运行态", { exact: true })).toBeVisible();
await expect(page.getByText("后端告警:泵站通信中断")).toBeVisible();
});