FN-8296: add chat-requested task verification

Enable chat agents to queue and monitor executor-owned verification runs.

- Persist task verification requests through a new PostgreSQL migration.
- Expose action-gated chat request and status tools with executor processing.
- Show verification status in task and Command Center views.
- Advance the schema baseline to migration 0024 and keep chat mocks complete.

Files changed:
 .changeset/fn-8296-feature.md                      |  7 ++
 docs/agent-tool-surface-full-loop.md               | 10 +--
 docs/dashboard-guide.md                            |  4 +
 packages/core/src/index.ts                         |  2 +
 .../core/src/postgres/migrations/0000_initial.sql  | 20 +++++
 .../migrations/0024_task_verification_request.sql  | 20 +++++
 packages/core/src/postgres/schema-applier.ts       | 13 ++-
 packages/core/src/postgres/schema/project.ts       | 25 ++++++
 packages/core/src/store.ts                         | 16 +++-
 packages/core/src/task-store/reads.ts              | 14 +++-
 packages/core/src/task-store/remaining-ops-6.ts    | 49 ++++++++++-
 packages/core/src/types.ts                         | 30 +++++++
 packages/dashboard/app/api/legacy.ts               |  1 +
 packages/dashboard/app/api/task-content.ts         | 10 +++
 .../dashboard/app/components/TaskDetailModal.tsx   | 17 +++-
 .../app/components/TaskVerificationStatus.css      | 94 ++++++++++++++++++++++
 .../app/components/TaskVerificationStatus.tsx      | 39 +++++++++
 .../__tests__/TaskVerificationStatus.test.tsx      | 28 +++++++
 .../components/command-center/CommandCenter.css    | 33 ++++++++
 .../components/command-center/CommandCenter.tsx    | 37 ++++++++-
 packages/dashboard/src/__tests__/chat.test.ts      |  1 +
 packages/dashboard/src/chat.ts                     | 55 +++++++++++++
 .../src/routes/register-command-center-routes.ts   | 20 +++++
 .../src/routes/register-task-workflow-routes.ts    | 17 ++++
 packages/engine/src/executor.ts                    | 51 +++++++++++-
 packages/engine/src/gating-classifications.ts      |  5 ++
 packages/engine/src/index.ts                       |  2 +-
 27 files changed, 605 insertions(+), 15 deletions(-)

Fusion-Task-Id: FN-8296

Fusion-Task-Lineage: f94647cf-c89f-4f0e-b25f-cbf5b56683bc

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
This commit is contained in:
gsxdsm
2026-07-18 18:38:47 -07:00
parent a348428f32
commit 38891bfd81
27 changed files with 605 additions and 15 deletions

View File

@@ -243,6 +243,7 @@ export {
fetchAgentLogs,
fetchAgentLogsWithMeta,
fetchSessionFiles,
fetchTaskVerificationRequest,
fetchTaskComments,
addTaskComment,
updateTaskComment,

View File

@@ -15,11 +15,21 @@ import type {
NativeStructureRef,
NativeStructurePreviewResult,
AgentLogEntry,
TaskVerificationRequest,
} from "@fusion/core";
import { appendTokenQuery, withTokenHeader } from "../auth";
import { api, buildApiUrl } from "./client.js";
import { withProjectId } from "./health.js";
/**
* FNXC:TaskVerificationStatus 2026-07-30-00:00:
* Task detail polls this persisted read model because verification state changes do
* not mutate the task row and therefore do not emit a task-board SSE update.
*/
export function fetchTaskVerificationRequest(taskId: string, projectId?: string): Promise<TaskVerificationRequest | null> {
return api<TaskVerificationRequest | null>(withProjectId(`/tasks/${encodeURIComponent(taskId)}/verification-request`, projectId));
}
export async function uploadAttachment(id: string, file: File, projectId?: string): Promise<TaskAttachment> {
const formData = new FormData();
formData.append("file", file);