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>
95 lines
2.2 KiB
CSS
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;
|
|
}
|
|
}
|