Files
fusion/packages/dashboard/app/components/TaskVerificationStatus.css
gsxdsm 38891bfd81 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>
2026-07-18 18:38:47 -07:00

95 lines
2.2 KiB
CSS

/*
FNXC:TaskVerificationStatus 2026-07-30-00:00:
FN-8296 requires task and Command Center verification state to use the same
semantic pending/error colors and remain readable at the shared mobile breakpoint.
*/
.task-verification-status {
display: flex;
flex-direction: column;
gap: var(--space-xs);
margin-bottom: var(--space-md);
padding: var(--space-md);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-md);
background: var(--surface-1);
color: var(--text-muted);
font-size: 0.8125rem;
}
.task-verification-status__heading {
display: flex;
align-items: center;
gap: var(--space-sm);
color: var(--text);
}
.task-verification-status__heading svg {
inline-size: var(--icon-size-sm);
block-size: var(--icon-size-sm);
}
.task-verification-status__state {
margin-inline-start: auto;
color: var(--text-muted);
text-transform: capitalize;
}
.task-verification-status p {
margin: 0;
}
.task-verification-status--requested,
.task-verification-status--running {
border-color: color-mix(in srgb, var(--color-warning) 35%, var(--border-subtle));
}
.task-verification-status--requested .task-verification-status__heading,
.task-verification-status--running .task-verification-status__heading {
color: var(--color-warning);
}
.task-verification-status--failed,
.task-verification-status--rejected .task-verification-status__heading {
color: var(--color-error);
}
.task-verification-status--passed .task-verification-status__heading {
color: var(--color-success);
}
.task-verification-status__spinner {
animation: task-verification-spin var(--duration-slow) linear infinite;
}
.task-verification-status__output {
max-block-size: calc(var(--space-2xl) * 5);
margin: 0;
overflow: auto;
color: var(--color-error);
font: inherit;
white-space: pre-wrap;
}
.task-verification-status--compact {
margin-bottom: 0;
}
.task-verification-status--empty {
color: var(--text-muted);
}
@keyframes task-verification-spin {
to { transform: rotate(360deg); }
}
@media (max-width: 768px) {
.task-verification-status__heading {
align-items: flex-start;
flex-wrap: wrap;
}
.task-verification-status__state {
margin-inline-start: 0;
}
}