feat: implement task dependencies with validation and update handling

This commit is contained in:
Abhimanyu Saharan
2026-02-07 00:21:44 +05:30
parent 8970ee6742
commit 4bab455912
34 changed files with 1241 additions and 157 deletions

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v8.2.0 🍺
* Do not edit manually.
* Mission Control API
* OpenAPI spec version: 0.1.0
*/
export interface BlockedTaskDetail {
blocked_by_task_ids?: string[];
message: string;
}

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v8.2.0 🍺
* Do not edit manually.
* Mission Control API
* OpenAPI spec version: 0.1.0
*/
import type { BlockedTaskDetail } from "./blockedTaskDetail";
export interface BlockedTaskError {
detail: BlockedTaskDetail;
}

View File

@@ -29,6 +29,8 @@ export * from "./approvalReadPayload";
export * from "./approvalReadRubricScores";
export * from "./approvalReadStatus";
export * from "./approvalUpdate";
export * from "./blockedTaskDetail";
export * from "./blockedTaskError";
export * from "./boardCreate";
export * from "./boardCreateSuccessMetrics";
export * from "./boardMemoryCreate";

View File

@@ -11,13 +11,16 @@ export interface TaskCardRead {
approvals_pending_count?: number;
assigned_agent_id?: string | null;
assignee?: string | null;
blocked_by_task_ids?: string[];
board_id: string | null;
created_at: string;
created_by_user_id: string | null;
depends_on_task_ids?: string[];
description?: string | null;
due_at?: string | null;
id: string;
in_progress_at: string | null;
is_blocked?: boolean;
priority?: string;
status?: TaskCardReadStatus;
title: string;

View File

@@ -9,6 +9,7 @@ import type { TaskCreateStatus } from "./taskCreateStatus";
export interface TaskCreate {
assigned_agent_id?: string | null;
created_by_user_id?: string | null;
depends_on_task_ids?: string[];
description?: string | null;
due_at?: string | null;
priority?: string;

View File

@@ -8,13 +8,16 @@ import type { TaskReadStatus } from "./taskReadStatus";
export interface TaskRead {
assigned_agent_id?: string | null;
blocked_by_task_ids?: string[];
board_id: string | null;
created_at: string;
created_by_user_id: string | null;
depends_on_task_ids?: string[];
description?: string | null;
due_at?: string | null;
id: string;
in_progress_at: string | null;
is_blocked?: boolean;
priority?: string;
status?: TaskReadStatus;
title: string;

View File

@@ -8,6 +8,7 @@
export interface TaskUpdate {
assigned_agent_id?: string | null;
comment?: string | null;
depends_on_task_ids?: string[] | null;
description?: string | null;
due_at?: string | null;
priority?: string | null;

View File

@@ -21,6 +21,7 @@ import type {
} from "@tanstack/react-query";
import type {
BlockedTaskError,
HTTPValidationError,
LimitOffsetPageTypeVarCustomizedTaskCommentRead,
LimitOffsetPageTypeVarCustomizedTaskRead,
@@ -278,6 +279,11 @@ export type createTaskApiV1BoardsBoardIdTasksPostResponse200 = {
status: 200;
};
export type createTaskApiV1BoardsBoardIdTasksPostResponse409 = {
data: BlockedTaskError;
status: 409;
};
export type createTaskApiV1BoardsBoardIdTasksPostResponse422 = {
data: HTTPValidationError;
status: 422;
@@ -287,10 +293,12 @@ export type createTaskApiV1BoardsBoardIdTasksPostResponseSuccess =
createTaskApiV1BoardsBoardIdTasksPostResponse200 & {
headers: Headers;
};
export type createTaskApiV1BoardsBoardIdTasksPostResponseError =
createTaskApiV1BoardsBoardIdTasksPostResponse422 & {
headers: Headers;
};
export type createTaskApiV1BoardsBoardIdTasksPostResponseError = (
| createTaskApiV1BoardsBoardIdTasksPostResponse409
| createTaskApiV1BoardsBoardIdTasksPostResponse422
) & {
headers: Headers;
};
export type createTaskApiV1BoardsBoardIdTasksPostResponse =
| createTaskApiV1BoardsBoardIdTasksPostResponseSuccess
@@ -319,7 +327,7 @@ export const createTaskApiV1BoardsBoardIdTasksPost = async (
};
export const getCreateTaskApiV1BoardsBoardIdTasksPostMutationOptions = <
TError = HTTPValidationError,
TError = BlockedTaskError | HTTPValidationError,
TContext = unknown,
>(options?: {
mutation?: UseMutationOptions<
@@ -361,13 +369,14 @@ export type CreateTaskApiV1BoardsBoardIdTasksPostMutationResult = NonNullable<
>;
export type CreateTaskApiV1BoardsBoardIdTasksPostMutationBody = TaskCreate;
export type CreateTaskApiV1BoardsBoardIdTasksPostMutationError =
HTTPValidationError;
| BlockedTaskError
| HTTPValidationError;
/**
* @summary Create Task
*/
export const useCreateTaskApiV1BoardsBoardIdTasksPost = <
TError = HTTPValidationError,
TError = BlockedTaskError | HTTPValidationError,
TContext = unknown,
>(
options?: {
@@ -776,6 +785,11 @@ export type updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponse200 = {
status: 200;
};
export type updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponse409 = {
data: BlockedTaskError;
status: 409;
};
export type updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponse422 = {
data: HTTPValidationError;
status: 422;
@@ -785,10 +799,12 @@ export type updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponseSuccess =
updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponse200 & {
headers: Headers;
};
export type updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponseError =
updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponse422 & {
headers: Headers;
};
export type updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponseError = (
| updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponse409
| updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponse422
) & {
headers: Headers;
};
export type updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponse =
| updateTaskApiV1BoardsBoardIdTasksTaskIdPatchResponseSuccess
@@ -819,7 +835,7 @@ export const updateTaskApiV1BoardsBoardIdTasksTaskIdPatch = async (
};
export const getUpdateTaskApiV1BoardsBoardIdTasksTaskIdPatchMutationOptions = <
TError = HTTPValidationError,
TError = BlockedTaskError | HTTPValidationError,
TContext = unknown,
>(options?: {
mutation?: UseMutationOptions<
@@ -868,13 +884,14 @@ export type UpdateTaskApiV1BoardsBoardIdTasksTaskIdPatchMutationResult =
export type UpdateTaskApiV1BoardsBoardIdTasksTaskIdPatchMutationBody =
TaskUpdate;
export type UpdateTaskApiV1BoardsBoardIdTasksTaskIdPatchMutationError =
HTTPValidationError;
| BlockedTaskError
| HTTPValidationError;
/**
* @summary Update Task
*/
export const useUpdateTaskApiV1BoardsBoardIdTasksTaskIdPatch = <
TError = HTTPValidationError,
TError = BlockedTaskError | HTTPValidationError,
TContext = unknown,
>(
options?: {